Struts 2中Action使用小结

在Struts 2框架中,Action作为框架的核心类,实现了对用户请求信息的处理,所以Action被称为业务逻辑控制器。Action类也是一个普通的java类,其中属性的setXxx()和getXxx()方法,分别用来设置和获取属性的值。默认的execute方法,用来返回一个字符串类型的值。

1、规范

为了规范用户开发的Action,Struts 2框架提供了一个Action接口,在该接口中提供了Action的通用规则模版:

SUCCESSS:表示动作执行成功,并应该把相应的结果视图显示给用户。

NONE:表示动作执行,但不应该把任何结果视图显示给用户。

ERROR:表示动作执行不成功,并应该把响应的报错视图显示给用户。

INPUT:表示输入验证失败,并应该把用户输入的那个表单重新显示给用户。

LOGIN:表示动作没有执行(因为用户没有登录),并应该把登录视图显示给用户。

在开发的时候,应该将这些常量作为相应的返回结果字符串,而不是随便定义返回结果。

2、Action访问Servlet API

由于Action类并没有继承HttpServlet,所以它无法直接访问Servlet API,在Action中访问Servlet API的方法可以参考《Struts 2中访问Servlet API的几种方法小结》这篇文章。

3、配置Action

Struts 2框架的Action类,需要在struts.xml文件中配置,通过<action>元素对Action进行配置。<action>元素有如下4个常用属性:

name:必选属性,指定客户端发送请求的地址映射名称。

class:可选属性,指定Action实现类的完整类名。

method:可选属性,指定Action类中的处理方法名称。

converter:可选属性,应用于Action的类型转换器的完整类名。

在业务逻辑处理Action中,可以包含一个或者多个逻辑处理方法,此时,可以使用动态方法调用,格式如下:

action="Action名称!方法名称"
或者
action="Action名称!方法名称.action"

action的method属性表示在Action类中的方法名称,不配置的时候,默认是execute方法。

也可以在配置的时候,使用通配符映射,如下面的示例:

<package name="default" extends="struts-default">
	<action name="book_*" class="action.BookAction" method="{1}">
		<result name="success">/succes.jsp</result>
	</action>
</package>

其中,method属性中的数字1表示匹配第一个*。这样就可以当访问book_add、book_delete的时候,分别调用BookAction类中的add和delete方法。

如果使用了通配符,那么Struts 2框架是怎么检索的呢?检索规则如下:

(1)如果能找到name属性值与请求的Action名完全一致的<action>时,则匹配该<action>元素,而不会匹配使用通配符的配置。

(2)如果没有找到完全一致的配置时,则按照配置文件的配置顺序依次匹配,最先符合的<action>将会被匹配。

在Struts 2框架中,允许用户定义一个默认的Action,默认的Action是在struts.xml文件中配置的,使用的配置元素是<default-action-ref>,如下示例:

<package name="default" extends="struts-default">
	<default-action-ref name="NoAction" />
	<action name="NoAction" class="action.NoAction">
		<result name="success">/default.jsp</result>
	</action>
</package>

如上,先使用<default-action-ref>来配置一个默认Action,该元素只包含一个属性name,属性名为NoAction。然后在配置一个名为NoAction的Action,否则之前的配置就不会生效。默认Action的作用是,当用户请求找不到对应的<action>元素时,系统将调用默认Action来接收用户请求信息。

本文标题:Struts 2中Action使用小结

本文链接:http://yedward.net/?id=336

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章