<s:token/>
實現原理:
在頁面加載時,<s: token />產生一個GUID(Globally Unique Identifier,全局唯一標識符)值的隱藏輸入框如:
- <input type="hidden" name="struts.token.name" value="struts.token"/>
- <input type="hidden" name="struts.token" value="BXPNNDG6BB11ZXHPI4E106CZ5K7VNMHR"/>
同時,將GUID放到會話(session)中;在執行action之前,“token”攔截器將會話token與請求token比較,如果兩者相同,則將會話中的token刪除並往下執行,否則向actionErrors加入錯誤信息。如此一來,如果用戶通過某種手段提交了兩次相同的請求,兩個token就會不同。
<s:token/>標籤有個name的屬性,可以用來明確指定保存在session中的GUID的名字,如:<s:token name="token"/>,則會把該token以"token"放到session中,可以在action中通過session.getAttribute("token");來取得.如果不指定,默認的名字是struts.token.