struct2 2.5按照默认配置,如下的配置会出现一些问题。
<package name="ssh" extends="struts-default" namespace="/">
<action name="a" class="com.web.action.AActoin"/>
<action name="add" class="com.web.action.AActoin" method="add"/>
<action name="aAction_*" class="com.web.action.AActoin" method="{1}"/>
</package>
问题如下:
单独配置action中的方法时候,没有问题,但是使用通配符的时候会报404。
问题的原因:
原来是struts2 2.5版本的安全度提高了一个台阶,通配符禁止使用,所有不安全的访问都必须要在Struts.xml中声明允许。
解决办法:
package中添加属性:strict-method-invocation=”false”
或者:
在package中添加子标签:
<global-allowed-methods>regex:.*</global-allowed-methods>
或者:
在action字子标签中添加子标签,支持正则表达式
<allowed-methods>Action内的方法名</allowed-methods>
<allowed-methods>regex:.*</allow-methods>
<package name="ssh" extends="struts-default" namespace="/" strict-method-invocation="false">
<action name="aAction_*" class="com.web.action.AActoin" method="{1}"/>
</package>
<package name="ssh" extends="struts-default" namespace="/">
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="aAction_*" class="com.web.action.AActoin" method="{1}"/>
</package>
<package name="ssh" extends="struts-default" namespace="/">
<action name="aAction_*" class="com.web.action.AActoin" method="{1}">
<allowed-methods>regex:.*</allowed-methods>
</action>
</package>
摘自别人的总结:http://ask.csdn.net/questions/260958
这是因为 struts2.5 为了提升安全性,添加了 allomethod 这么个玩意。
解决方法是在配置文件中添加:
<package name="exam" extends="json-default">
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="user" class="userAction">
...
</action>
</package>
或者,针对action,在 action 块中添加
<allowed-methods>regex:.*</allowed-methods>
同样也支持在你的 action 上使用 @AllowedMethods 注解
默认的设置为
<global-allowed-methods>execute,input,back,cancel,browse,save,delete,list,index</global-allowed-methods>
全局设置是增量而不是覆盖的,支持正则和直接匹配方法,
源码在这两段
// com.opensymphony.xwork2.DefaultActionProxy#prepare
// com.opensymphony.xwork2.config.entities.ActionConfig#isAllowedMethod
参考一些博客:
http://blog.csdn.net/iyandong/article/details/52792471
http://blog.csdn.net/qq_24059599/article/details/51986761
http://blog.csdn.net/qq_35357001/article/details/62215730