原文来自搬砖工,如需转载请注明出处
博主SSH框架专栏请戳这里http://blog.csdn.net/column/details/14227.html
接着上篇文章继续学习
三、配置Action
1.配置action示例
当用户发出请求后,先通过配置在web.xml中的拦截器拦截之后,再查找在struts.xml中配置的业务逻辑action。
struts2使用包来管理action,action是package的一个子元素,如:
<action name="login" class="com.study.action.LoginAction">
<result name="success">/Success.jsp</result>
<result name="input">/login.jsp</result>
</action>
2.Action的属性
name:Action的名称,请求调用的标识(name加上扩展名)
class:Action的实现类
converter:Action的转换器实现类
method:指定要调用的方法(除execute之外的方法)
3.Action的子元素Result
Result是用于页面跳转,如成功success跳转1.jsp,失败failure跳转2.jsp
四、Action中动态调用方法
同一个业务用例可能有多个方法,Struts1提供了DispatcherAction来解决,在struts2中动态方法调用如下:
1.直接指明要调用的方法:
Actionname!methodname.action 如:user!login.action
解释:是在用户请求的时候,调用userAction类中的login方法,就在请求的参数值设置为user!login.action,同样的,请求register方法参数就设置为user!register.action
2.为action增加method元素
<action name="userLogin" class="com.study.action.UserAction" method="login">
<result name="success">/Success.jsp</result>
<result name="input">/login.jsp</result>
</action>
<action name="userRegister" class="com.study.action.UserAction" method="register">
<result name="success">/Success.jsp</result>
<result name="register">/login.jsp</result>
</action>
解释:在上面的参数配置中,加入了method属性。当我们请求userLogin方法的时候,它会去调用UserAction的login方法。在请求参数的时候写userLogin.action就可以了。对于register是同样的道理。
3.使用通配符
<action name="*Action" class="com.study.action.UserAction" method="{1}">
<result name="success">/Success.jsp</result>
<result name="input">/login.jsp</result>
<result name="register">/login.jsp</result>
</action>
解释:如上,我们把name写为*Action,当我们请求参数值为loginAction的时候,配置默认将Action前面的login作为method的值。就相当于是method=login。那么参数为registerAction,请求的方法当然是UserAction中的register方法。这里就把一个类中的多个方法整合在一起了
下篇文章将学习Struts2的类型转换(converter)