關(guān)注于J2SE,J2EE以及開源方面的技術(shù)。
1,先在一個Action中,調(diào)用saveToken(HttpServletRequest request)方法。然后轉(zhuǎn)向帶有表單的JSP頁面。
2,在JSP頁面提交表單給一個Action,再這個Action中進行是否為重復(fù)提交的判斷。
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自定義標簽 <html:form>的標簽類:org.apache.struts.taglib.html. FormTag
這個類的doStartTag()方法會調(diào)用本類的renderToken()方法。
這樣子會生成類似于
的隱藏標簽。
然后提交到一個Action中,在Action中用isTokenValid()方法進行比較session中” org.apache.struts.action.TOKEN”的這個key所對應(yīng)的值和提交來的request中的” org.apache.struts.action.TOKEN”的這個value是否一致。
如果為true,那么證明可以提交。如果為false,證明已經(jīng)重復(fù),不允許提交。