码迷,mamicode.com
首页 > 其他好文 > 详细

Struts2.5的DMI与新增的SMI

时间:2019-01-03 16:43:42      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:默认   const   result   class   round   global   开始   问题   添加   

1问题

解决:在使用Struts2.5之后的版本,在DMI(动态方法调用)上,通配符无法正常使用

 

 

2原因

在使用Struts2.5之后的版本,在DMI(动态方法调用)上,在DMI使用时,是默认被禁用的,默认开启SMI模式,导致通配符*无法正常使用 

Apache Struts项目的官方解释如下:

从Struts2.3开始,我们增加了一个开关来控制DMI,我们这样做基于两个原因:

1. 如果Action的实现是纯POJO方式(既不继承自ActionSupport也不实现Action接口),这种场景下使用DMI可能导致安全问题。

2. DMI功能跟使用通配符配置Action类的方法有重叠的地方,而通配符配置的方式早在Struts1就有了。


注:DMI(Dynamic Method Invocation)SMI(Strict Method Invocation)

 

 

3解决

方式一:暴力关闭

  可以将该包的strict-method-invocation="false"设置为false

1 <package name="my" extends="struts-default" namespace="/my" strict-method-invocation="false">
2         <action name="stu_*" class="com.czd.action.tryAction" method="{1}">
3             <result name="a">/page/loginok.jsp</result>
4             <result name="b">/page/loginok.jsp</result>
5             <result name="c">/page/loginok.jsp</result>
6             <result name="d">/page/loginok.jsp</result>
7         </action>
8 </package>

方式二:添加可用

在package包中添加<global-allowed-methods>regex:.*</global-allowed-methods>

1 <package name="my" extends="struts-default" namespace="/my" >
2         <global-allowed-methods>regex:.*</global-allowed-methods>
3         <action name="stu_*" class="com.czd.action.tryAction" method="{1}">
4             <result name="a">/page/loginok.jsp</result>
5             <result name="b">/page/loginok.jsp</result>
6             <result name="c">/page/loginok.jsp</result>
7             <result name="d">/page/loginok.jsp</result>
8         </action>
9 </package>

 

或者<allowed-methods>add,del,...</allowed-methods>

1 <struts>
2     <constant name="struts.enable.DynamicMethodInvocation" value="true" />
3     <package name="mypack" extends="struts-default">
4         <action name="info*" class="com.stone.struts2.action.MyFirstAction" method="{1}">
5             <result>/{1}info.jsp</result>
6             <allowed-methods>add,del</allowed-methods>
7         </action>
8     </package>
9 </struts>

 

Struts2.5的DMI与新增的SMI

标签:默认   const   result   class   round   global   开始   问题   添加   

原文地址:https://www.cnblogs.com/liberty777/p/10214468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!