struts2 动态方法调用 感叹号
来源:互联网 发布:react dom.js下载 编辑:程序博客网 时间:2024/05/22 11:56
学习Struts2有一段时间了。对于Struts2的动态方法调用做一下总结。
struts2的动态方法调用概括起来有三种方式,下面介绍:
1、第一种方式:设置method属性
在Action类中定义一个签名与execute方法相同、只是名字不同的方法,如定义为:
public String login() throws Exception{}
然后在struts.xml文件中加一个<action>元素,并设置它的method属性。代码如下(核心代码):
<action name="loginMethod"
class="com.polaris.LoginAction" method="login">
<result>/result.jsp</result>
<result name="error">/error.jsp</result>
</action>
清单1:struts.xml部分内容
然后在JSP中表单的action设置为loginMethod。这样,Struts2就会去调用LoginAction中的loigin方法,而不会去调用execute()方法。
2、第二种方式:改变表单的action的设置内容
同第一种方式,定一个login方法。只是不需要改变struts.xml文件的内容。然后,在JSP页面中,设置表单的action为loginMethod!login.action。这样,Struts2也会去调用login方法,而不调用execute方法。其中,表单action="loginMethod!login.action" 中,loginMethod为struts.xml文件中<action> 元素的name属性值,login.action中的login为Action类中的方法名。注意:login.action的action不能少。
3、第三种方式:使用通配符
首先同上面两种方式,定一个login方法,然后在struts.xml文件中配置如下内容:
<action name="*Action"
class="com.xuxinhua1984.struts2.i18n.LoginAction" method="{1}">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
清单2:struts.xml部分内容
然后在JSP页面中,设置表单的action为loginAction,此处login为Action类中的方法名,这样struts.xml中的*Action就可以和loginAction模糊匹配了,然后,method="{1}"就相当于method="login"。这样一来就回到了第一种方式。
另外,这种方式甚至结果类型对应的物理视图都可以用通配符。例如,如果想让登录失败后返回登录页,可以设置<result name="error">/{1}.jsp</result>。这样,此处的{1}也会被*号实际的内容替代,此处为login,所以就转发回login.jsp页面了。
总结:对于以上三种方式,我个人建议使用第一、第二种方式,感觉第三种方式是比较灵活,但是也容易产生混乱,且容易出错。
Struts2支持动态方法调用,它指的是一个Action中有多个方法,系统根据表单元素给定的action来访问不同的方法,而不用写多个Action。
struts2中无需配置就可以直接调用Action中非execute方法的方式,就是试用struts2的动态动态方法调用。
动态方法调用(Dynamic method Invoc)是在action的名字中使用感叹号(!)来标示要调用的方法名,其语法格式为
actionName!methodname.action
例如我们的配置如下:
<action name="login" class="com.pj.action.LoginAction">
<result type="json"></result>
</action>
当请求/login!query.action时,将调用LoginAction的query()方法,当请求/login!save.action时,将调用LoginAction的save()方法。
strust2提供了一种配置,用于禁用DMI,你可以在struts.xml文件中,使用constant元素将struts.enable.DynamicMethodInvocation属性设置为false,来关闭DMI。
- struts2 动态方法调用 感叹号
- struts2 动态方法调用 感叹号!
- struts2 动态方法调用 感叹号 !
- struts2 动态方法调用 感叹号!
- struts2动态方法调用 感叹号
- Struts2 url中包含感叹号实现动态方法调用
- Struts2 url中包含感叹号实现动态方法调用
- struts2 动态调用 (通配符和感叹号)
- struts2 DMI用感叹号动态调用方法时提示there is no action mapped for
- struts2.5 使用感叹号和通配符实现动态方法调用无效的问题及解决!
- Struts2.5使用感叹号实现动态方法调用无效的解决办法
- struts动态方法调用之感叹号
- struts中的感叹号方式动态方法调用
- struts2动态方法调用
- Struts2 动态方法调用
- struts2动态方法调用
- struts2 动态方法调用
- Struts2动态方法调用
- 软盘与FAT12文件系统的组织格式
- Oracle 分页查询 为什么需要嵌套
- 别迷失在“成功故事”中
- SQL注入攻击三部曲之高级篇
- asp.net HttpModule类
- struts2 动态方法调用 感叹号
- gvim 使用技巧
- 【object-c基础】object-c基础之二:property,assign,copy,retain,release
- 重要的东西
- 我们生活的时代
- 信息与网络安全相关参考资料的下载
- HBase性能调优
- Linux Kernel 3.0 版本正式发布!
- 数据库查询中将null置为0的方法