關注于J2SE,J2EE以及開源方面的技術。
1,先在一個Action中,調用saveToken(HttpServletRequest request)方法。然后轉向帶有表單的JSP頁面。
2,在JSP頁面提交表單給一個Action,再這個Action中進行是否為重復提交的判斷。
1, 由第一個Action調用saveToken(HttpServletRequest request),這個方法內部實現如下:
token.saveToken(request);
這個方法的實現如下:
這個方法調用generateToken方法實現如下:
generateToken完畢后,將得到的唯一值setAttribute到session中。
Globals.TRANSACTION_TOKEN_KEY的值是:” org.apache.struts.action.TOKEN”
然后跳轉到JSP頁面。
2, JSP頁面的Struts自定義標簽 <html:form>的標簽類:org.apache.struts.taglib.html. FormTag
這個類的doStartTag()方法會調用本類的renderToken()方法。
這樣子會生成類似于
的隱藏標簽。
然后提交到一個Action中,在Action中用isTokenValid()方法進行比較session中” org.apache.struts.action.TOKEN”的這個key所對應的值和提交來的request中的” org.apache.struts.action.TOKEN”的這個value是否一致。
如果為true,那么證明可以提交。如果為false,證明已經重復,不允許提交。