现在的位置: 首页 > 综合 > 正文

Struts2动态方法的调用

2013年11月12日 ⁄ 综合 ⁄ 共 1256字 ⁄ 字号 评论关闭

在Struts2中可以通过三种实现Dynamic method Invocation

1. method属性

2. 页面中指定

3. 使用通配符


第一种:在struts.xml的<action />中指定method属性

如果在<action />的method属性设置为method="loginOn"的话,具体执行过程如下:

如果一个<form action="login.action" />,那么就会生一个LoginAction的实例,接着

就会由loginOn()方法来进行表单的处理请求,而不会自动的调用execute()方法了。

 


第二种:在页面中指定调用Action类中的某个方法

在jsp页面中设定成:<form action="login!loginOn.action" />

在struts.xml文件中<action name="login" class="com.hnucc.action.LoginAction" />

这样当发送请求时,就会自动跳转到LoginAction中,执行loginOn方法。

 


第三种:使用通配符通过模糊匹配的方式调用Action的方法

通配符有三种,分别为: *    **    /

其中 * 代表零个或多个字符,不包括“/”根

而 ** 代码零个或多个,并且包括根

/ 是转义符。其中*用的最多。

在struts.xml中设定为<action name="*User" class="...UserAction" method="{1}">
假设在前台页面中设定成<s:form action="addUser">
执行时若没有在struts.xml中找到名为addUser的<action/>的话,则会找到*User
这是一种模糊匹配,匹配成功后,流程则进入名为*User的<action/>中,即UserAction
其中method的{1}对应 * 号,即此时将由UserAction中的add()方法执行addUser的请求
若写成<result>/{1}UserSuc.jsp</result>,那么执行add()成功后将转到addUserSuc.jsp中
通常项目经理会指定方法命名规则,较常用的两种方式为addUser和user_add
<action name="*_*" class="...{1}Action" method="{2}"><result>/{1}_{2}Suc.jsp</result></action>
另外可以使用{0}代表完整的*_*,即<result/>中可以用/{0}Suc.jsp代替/{1}_{2}Suc.jsp
这时前台页面中就需要写成类似于<a href="User_add.action">添加用户</a>的样式
注意User_add.action里的User首字母必须大写,因为它将来需要匹配UserAction类
其中{1}代表前面的星号,而{2}代表后面的星号
通常前面的星号代表数据表,后面的星号代表方法,当然具体由公司决定
也就是说,约定好项目中文件的命名规范后,只写一个Action就能匹配N个表的N个方法

抱歉!评论已关闭.