struts2的动态方法调用(DMI)和通配符映射

Posted 啊朋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2的动态方法调用(DMI)和通配符映射相关的知识,希望对你有一定的参考价值。

动态方法调用

 

1、Struts2默认关闭DMI功能,需要使用需要手动打开,配置常量

 

[html] view plain copy
 
  1. struts.enable.DynamicMethodInvocation = true  

 

2、使用“!”方法,即action名称!方法名称。

 

struts.xml

 

[html] view plain copy
 
  1. <action name="query" class="action.QueryAction">  
  2.     <result name="success">/success.jsp</result>  
  3.     <result name="update">/update.jsp</result>  
  4. </action>  


请求URL为/query!success.action,调用actio.QueryAction的success()方法;

 

请求URL为/query!update,调用actio.query的update()方法;

路径上的.action可以写也可以不写,Struts2默认添加.action为后缀,如果更改了后缀名,例如.do,就要显示声明。

3、好处:减少action数量,但是结果集数量不变。

 

通配符映射

1、不必配置

 

[html] view plain copy
 
  1. struts.enable.DynamicMethodInvocation = true  


2、写法

 

struts.xml

 

[html] view plain copy
 
  1. <action name="*_*" class="action.{1}Action" method="{2}">  
  2.     <result>{1}_{2}Succ.jsp</result>  
  3. </action>  


请求URL为/Query_success,调用actio.QueryAction的success()方法;

 

{1}、{2}表示通配符的位置,这里{1}表示Query,{2}表示success;

另{0}表示整个通配符,这里表示Query_success,所以上面的结果集也可以写成{0}Succ.jsp

3、好处:减少action数量的同时,减少结果集的数量,体现“约定优于配置”,在增加代码的同时,并不需要对struts.xml文件进行更改;

4、URL请求顺序:当有多个action被匹配成功,例如XAction、*Action、*,对于请求XAction,则匹配XAction,忽视XAction的出现顺序,对于请求YAction,则由*Action、*在struts.xml的出现顺序决定,先出现的先调用

5、匹配带有“/”的路径:

(1)配置常量struts.enable.SlashesInActionNames = true

(2)有些书写用**匹配带“/”的路径,但是本人实验结果不需要**,直接*/*即可

 

来自于:http://blog.csdn.net/abc45628/article/details/45482649

以上是关于struts2的动态方法调用(DMI)和通配符映射的主要内容,如果未能解决你的问题,请参考以下文章

Struts2 Action中动态方法调用通配符的使用

Struts2系列:通配符和动态方法调用

关于Struts2中DMI(动态调用)错误问题

Struts2_Action学习总结

Struts2.5动态方法调用action和使用通配符访问action

第三章Struts2 Action中动态方法调用通配符的使用