struts2 2.5 通配符访问action

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值