首页 > 代码库 > 【跟我一步一步学Struts2】——Action

【跟我一步一步学Struts2】——Action

           Action才是Struts2真正应用的核心,Action类里面包含了对用户请求的处理逻辑。在Struts.xml中配置好后就可以调用了。

 

Action实现

实现Action接口

          Struts2提供了一个Action接口,在Action接口中定义了一些常量和execute方法,我们可以使用该接口,这样开发更规范。如果实现此接口就必须写execute()方法。

 

继承实现类ActionSupport

         这个类实现了Action接口。此外这个类还提供了许多默认方法,例如国际化,数据校验,默认处理用户请求的方法等。所以继承这个类会很方便。

 

          一般情况下用继承ActionSupport,如果用Action则必须实现execute()方法,如果是继承ActionSupportAction会简化很多代码,因为ActionSupport中封装了许多默认的方法。

         通常使用Action封装HTTP请求参数,因此Action里面还有与请求参数对应的属性以及settergetter方法。

 

 

 

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就是用来封装对象的gettersetter方法,并实现execute()方法。也就是用户的每次请求,都会转到一个相应的Action类里面,由其对应的Action类来处理。也就是Action既封装对象,也可以进行业务的处理。

【跟我一步一步学Struts2】——Action