Struts Token 使用
1,先在一個Action中,調(diào)用saveToken(HttpServletRequest request)方法。然后轉(zhuǎn)向帶有表單的JSP頁面。
2,在JSP頁面提交表單給一個Action,再這個Action中進(jìn)行是否為重復(fù)提交的判斷。




















Struts Token 機制:
1, 由第一個Action調(diào)用saveToken(HttpServletRequest request),這個方法內(nèi)部實現(xiàn)如下:








token.saveToken(request);
這個方法的實現(xiàn)如下:





















這個方法調(diào)用generateToken方法實現(xiàn)如下:





















generateToken完畢后,將得到的唯一值setAttribute到session中。

Globals.TRANSACTION_TOKEN_KEY的值是:” org.apache.struts.action.TOKEN”
然后跳轉(zhuǎn)到JSP頁面。
2, JSP頁面的Struts自定義標(biāo)簽 <html:form>的標(biāo)簽類:org.apache.struts.taglib.html. FormTag
這個類的doStartTag()方法會調(diào)用本類的renderToken()方法。
























































這樣子會生成類似于


的隱藏標(biāo)簽。
然后提交到一個Action中,在Action中用isTokenValid()方法進(jìn)行比較session中” org.apache.struts.action.TOKEN”的這個key所對應(yīng)的值和提交來的request中的” org.apache.struts.action.TOKEN”的這個value是否一致。
如果為true,那么證明可以提交。如果為false,證明已經(jīng)重復(fù),不允許提交。