← 回到文章列表

Struts2.5 404/NoSuchMethod 错误

Struts2从2.5版本开始 增加了一项AllowedMethod机制 也就是你的method需要是列表内 才可以正常访问 听说这样是极大的加强了Struts2的安全性 但是这也会导致部分非列表内method失效/404Error 我们可以在

Struts2从2.5版本开始

增加了一项AllowedMethod机制

也就是你的method需要是列表内

才可以正常访问

听说这样是极大的加强了Struts2的安全性

但是这也会导致部分非列表内method失效/404Error

我们可以在

com.opensymphony.xwork2.config.entities.ActionConfig

类里看到如下内容

<global-allowed-methods>execute,input,back,cancel,browse,save,delete,list,index</global-allowed-methods>

也就是说  默认仅允许

execute,input,back,cancel,browse,save,delete,list,index

这几种method访问

这也就是为什么index可以访问其他的都不行的原因

找到了原因我们就可以直接在struts2.xml里面增加自己的method

例如我们需要添加一个login的method

那么在package标签下层增加一行

<global-allowed-methods>login</global-allowed-methods>

例如:

<struts>
<package name="test" namespace="/" extends="json-default">
<global-allowed-methods>login</global-allowed-methods>
<action name="*" class="systemAction" method="{1}">
<result name="login">/WEB-INF/pages/login.jsp</result>
</action>
</package>
</struts>

如果觉得一个个method设置比较繁琐

那么可以用

<global-allowed-methods>regex:.*</global-allowed-methods>

开启当前package下的所有method

当然这样就和struts2.5的安全理念有所相驳了哟

另外struts2还支持注解添加allow

@AllowedMethods

根据源码可以知晓传参为String[]

在这里找找

输入关键词,找一篇过去的记录。