Struts2-关于struts.xml文件的action配置的说明

一、Action的说明:

Struts2的核心功能就是action,对于开发者,使用Struct2框架的主要工作就是编写Action类来实现业务。action类可以不用继承任何父类和实现任何接口,但是在开发中通过实现com.opensymphony.xwork2.Action接口(下文中以Action来替代)或者继承com.opensymphony.xwork2.ActionSupport(下文中以ActionSupport来替代),可以简化action的开发。

对于Action,有5个很重要的字符串常量(一般性约定的视图)和一个抽象方法需要说明:

public static final String SUCCESS = "success";     // 数据处理成功 (成功页面)

 public static final String NONE = "none";    //页面不跳转  return null; 效果一样,常用于ajax请求时

public static final String ERROR = "error";    //数据处理发送错误 (错误页面)

public static final String INPUT = "input";    //用户输入数据有误,通常用于表单数据校验 (输入页面)

public static final String LOGIN = "login";    //主要权限认证不通过 (登陆页面)

public String execute() throws Exception;     //action如果不指定method的属性值,默认将执行execute方法

在实际开发中,很少直接实现Action接口,一般都是通过继承ActionSupport类,来极大地简化开发。ActionSupport已经帮我们完成了一些常用的功能,如:输入验证、错误信息存取以及国际化等。继承ActionSupport,即可继承这些功能。

二、Action的配置:

对于开发好的action,需要在struts.xml文件中进行配置,告诉Struts2框架该action负责处理哪一个(些)的URL请求。

action元素属性
属性 是否必要 说明
name action的名字,用于匹配URL请求
class Action实现类的完整类名
method 执行action时调用的方法
converter 应用于action的类型转换器的完整类名

	
		/index.jsp
	

1、name属性:

name属性是必须的,name属性的值默认是不允许出现斜杠(/)的,如果需要name中使用斜杠,就需要在struts.xml文件中通过指定来打开这个功能,并且name的属性值中最好不要有点号(.)。

2、method属性:

如果不指定method属性值,在执行action时,默认是调用execute()方法。如果指定了相应action的method的属性值,将执行指定method的方法。对于action的method的定义,需要遵循一定的规则(和Action接口中的execute()方法格式一样):

(1)方法全选必须是public

(2)方法的返回值必须是String类型

(3)方法签名必须为空

3、class属性:

class属性的属性值为action类完整类名,如果省略,默认的class的属性值将是ActionSupport的完整类名。当然这个class的属性值基本上都会填写开发人员编写的action类,否则就没有必要编写action类了。

三、Action的动态方法调用:

默认情况下,开发人员编写的action类中的方法都需要定义一个对应的action(一般是方法名就是action的name属性的属性值),若是开发人员编写的action方法很多,那么在struts.xml文件中定义相应的action,那么应该算上苦力活了。如:

public class UserAction extends ActionSupport{

	public String login() {
		//....
	}
	public String regist(){
		//....
	}
	public String logout(){
		//....
	}
	//....    
}

相应的在struts.xml文件中,需要声明action:


	


	


	
可以使用 Action的动态方法调用来简化action的配置。其中有两种方式实现动态方法调用:

(1)使用感叹号(!)来标识要调用的方法名,其语法格式如下:

        actionName!methodName.action

在struts.xml文件中的配置方式如下:


	

当请求user!login.action时,将调用UserBean的login()方法,这样就能简化开发人员编写的action的配置。

(2)使用通配符(*):


	

当请求的是user_login,这时就会调用UserAction类中的login()方法。上面的代码中,其中的第一个通配符代表Action类的User,第二个通配符代表method的方法名。使用通配符时,需要遵循统一的命名规范。通配符可以定义多个,不过一般定义最好是两个以内,以便可读性。

一个通配符的情况也很常见(更便于阅读和修改struts.xml文件):


	/.../{1}.jsp

四、默认的action:

如果请求一个不存在的action,那么结果将是HTTP 404错误。在Struts2中,可以指定一个默认的action,如果一个请求没有其他的action匹配,那么默认的action将被执行,一般配置于默认空间中,因为在相应的命名空间中没有action匹配,将会在默认空间中匹配,默认空间中没有action匹配,才调用默认空间的默认action。


    
    
    
    /.../{1}.jsp
    
    




你可能感兴趣的:(Struts2-关于struts.xml文件的action配置的说明)