Welcome to Yumao′s Blog.
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[]