Welcome to Yumao′s Blog.
Struts2.5 404/NoSuchMethod 錯誤
, 2016年08月17日 , Java Language , 评论 0 , 浏览次数:944 次

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[]

关键字:, , ,

评论已关闭