首页 > 代码库 > 【跟我一步一步学Struts2】——Action
【跟我一步一步学Struts2】——Action
Action才是Struts2真正应用的核心,Action类里面包含了对用户请求的处理逻辑。在Struts.xml中配置好后就可以调用了。
Action实现
实现Action接口
Struts2提供了一个Action接口,在Action接口中定义了一些常量和execute方法,我们可以使用该接口,这样开发更规范。如果实现此接口就必须写execute()方法。
继承实现类ActionSupport
这个类实现了Action接口。此外这个类还提供了许多默认方法,例如国际化,数据校验,默认处理用户请求的方法等。所以继承这个类会很方便。
一般情况下用继承ActionSupport,如果用Action则必须实现execute()方法,如果是继承ActionSupport,Action会简化很多代码,因为ActionSupport中封装了许多默认的方法。
通常使用Action封装HTTP请求参数,因此Action里面还有与请求参数对应的属性以及setter,getter方法。
Action中包含多个方法如何调用
在<action>标签中配置method属性
<packagename="user-package" extends="struts-default"> <actionname="addUser" class="com.bjpowernode.struts2.LoginAction"method="add"> <result>/addSuccess.jsp</result> </action> <actionname="delUser" class="com.bjpowernode.struts2.LoginAction"method="del"> <result>/delSuccess.jsp</result> </action> <actionname="updateUser"class="com.bjpowernode.struts2.LoginAction"method="update"> <result>/updateSuccess.jsp</result> </action> <actionname="listUser" class="com.bjpowernode.struts2.LoginAction"method="list"> <result>/listSuccess.jsp</result> </action> </package>
增删改查是四个相同的处理类,但是处理逻辑不同,处理逻辑通过method方法指定,所以method方法指定的内容一定要与方法名一致。这种方式配置量大,而且还不好控制。
使用通配符来降低配置量
<actionname="*User" class="com.bjpowernode.struts2.LoginAction"method="{1}"> <result>/{1}Success.jsp</result> </action>如果是调用addUser.action,则{1}里面匹配的是add
在配置<action .../>元素时,需要指定name,class,method属性都可支持通配符。URL明确,比较好控制
此外还有一种方式是动态调用的方式( action ="action!add.action")这种方式不被推荐使用。
总结
简单的说Action就是用来封装对象的getter,setter方法,并实现execute()方法。也就是用户的每次请求,都会转到一个相应的Action类里面,由其对应的Action类来处理。也就是Action既封装对象,也可以进行业务的处理。
【跟我一步一步学Struts2】——Action