Action的配置

计应134  徐雪双

在Struts2中,一个Action类是一个独立的工作单元。一个Action类代表了用户的一次请求或调用,用户的每次请求,都会转到一个相应的Action类里面,由这个Action类来进行处理。简单来说,Action就是用来处理用户请求的对象。

Action类是Struts2的核心功能,对于开发者而言,使用Struts2就是编写Action类。

在Struts2中,Action以多种形式存在,例如在Java类充当Action、继承ActionSupper类实现Action接口和Action。

Struts2最大的特点:Action类可以是一个普通的Java类,实现了与Servlet API的完全分离。它包含了无参数的execute()方法、成员变量及其setter()和getter()方法。

public class HelloWorld {

  private String message;

  public String getMessage(){

  return message;

}

public void setMessage(String message) {

  this.message = message;

}

public String execute(){

  if(message.equals(“”)){

  return “error”;

}else{

  Return “success”;

}

}

}

Struts2提供了一个com.pensymphony.xwork2.Action接口和实现该接口的execute()方法,该方法为:

public String execute() throws Exception

在实际开发中,action类很少直接实现Action接口,通过继承ActionSupper来实现Action是最常用的方法,ActionSupper实现了Action接口,还实现了Validateable接口、ValidationAware接口、TextProvider接口等,提供了输入验证、国际化、execute等常用方法,使得用户在编写Action时代码更加简单。选择从ActionSupport继承,可以简化action的定义。

然而Action要正确运行,则需要在Struts.xml中配置才可以使用。而struts.xml文件是Struts应用中一个非常重要的核心配置文件,要负责管理业务控制器Action。

<package>元素:Struts2通过包来管理Action、拦截器等核心组件。它把逻辑上相关的一组Action、Result、Intercepter等元素封装成一个独立的模块,简称为包。package可以继承其他的package,也可作为父包被其他的package继承。Package元素的属性如下:

name:包名,作为其他包引用本包的标识符,该属性必须配置。

extends:用于继承其他的包,后面配置的是被继承的包的名称,该属性为可选

namespace:包的命名空间,该属性为可选。同一命名空间不能有同名的Action。namespace可防止action重名的冲突,因在配置了namespace后,在访问action时就需添加namespace来作为action的前缀。若没有配置namespace,则表示是默认的namespace,在访问时就不需添加namespace前缀。

abstract:设置为抽象包,也就是不能包含Action的定义,该属性为可选。可被其他包继承,因此里面可定义其他包所需元素,如ResultType、Interceptor等。

配置时需注意:

<action>元素时<package>元素的子元素,应配置在<package>元素里面

<package>元素可以把

<action>元素需配置name和class属性,其中name是必须的

<action>元素可以包含其他的子元素:<param>、<result>、<interceptor-ref>

原文地址:https://www.cnblogs.com/xu2shuang97664/p/4568292.html