Sturts2方法调用有三种方式,各有各的优缺点,开发人员要根据自己项目的需要,看适合哪一种方式。
Sturts2方法调用有三种方式:1、动态方法调用
2、在<action>中配置method属性
3、使用通配符
下面通过一个实例,来一一介绍:
1、动态方法调用
格式:action名称+!+方法名称+后缀
Struts.xml配置文件:
<package name="user-package" extends="struts-default"> <action name="user" class="com.lf.zym.struts2.UserAction"> <result>/success.jsp</result> </action> </package>调用方式:
<span style="white-space:pre"> </span><a href="user!add.action">添加用户</a><br> <a href="user!del.action">删除用户</a><br> <a href="user!modify.action">修改用户</a><br> <a href="user!list.action">查询用户</a><br>
动态调用参数配置,默认为ture,可以调用。如果不想调用,则需要设置为false
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
2、指定mehtod属性
配置文件的配置:action的命名可以自己随意命名,只要符合规范即可,
method="方法名称"
Struts.xml文件配置
<span style="white-space:pre"> </span><package name="user-package" extends="struts-default"> <action name="addUser" class="com.lf.zym.struts2.UserAction" method="add"> <result>/success.jsp</result> </action> <action name="delUser" class="com.lf.zym.struts2.UserAction" method="del"> <result>/success.jsp</result> </action> <action name="modifyUser" class="com.lf.zym.struts2.UserAction" method="modify"> <result>/success.jsp</result> </action> <action name="findUser" class="com.lf.zym.struts2.UserAction" method="find"> <result>/success.jsp</result> </action> </package>页面调用:配置文件中配置的action的名称,只要对应就行
<span style="white-space:pre"> </span><a href="addUser.action">添加用户</a><br> <a href="delUser.action">删除用户</a><br> <a href="modifyUser.action">修改用户</a><br> <a href="findUser.action">查询用户</a><br>
使用这种方法的缺点就是配置量比较大,如果有过的的Action,那这个方法是绝对不使用的。代码量大,也不好维护。所以引用了通配符的方式,来降低配制量。
3、通配符
Struts.xml配置文件:
<package name="user-package" extends="struts-default"> <action name="*User" class="com.lf.zym.struts2.UserAction" method="{1}"> <result>/{1}Success.jsp</result> </action> </package>页面的调用:
<span style="white-space:pre"> </span><a href="addUser.action">添加用户</a><br> <a href="delUser.action">删除用户</a><br> <a href="modifyUser.action">修改用户</a><br> <a href="findUser.action">查询用户</a><br>
三种方式实现起来都不难,但是使用的时候可能会遇到这样那样的问题,比如说报异常,动态方法调用无效。可能是因为我们关闭了Struts2的动态方法调用开发。导致如下错误:
解决方法:将struts.enable.DynamicMethodInvocation设置为true.
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
小结:
以上是Struts2的Action中的方法如何调用的实现方式,具体项目中用哪一种,自己选择合适的就好,但是本人认为使用通配符的方式比较爱好。既不用考虑Action太多,使得配置量太大,也不需要使用“!”,使用起来比较简便。