熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

struts利用Token防止用戶重復提交

2013-11-23 20:27:22  來源: Java開源技術 
    struts如何利用Token(令牌)防止用戶重復提交?在我們的開發中經常遇到需要防止用戶重復提交的情況如果你用了struts恭喜你因為struts已經給你做好了你只要會調用即可
   
    Token如何使用呢?請看下例
   
    在跳轉到頁面前的action方法中寫
   
    public ActionForward toAddUser(ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response) throws Exception {
   
    thissaveToken(request)
   
    return mappingfindForward(addUser
   
    }
   
    以上的thissaveToken(request)會在將要跳轉到的addUserjsp頁面上生成一個
   
    <input type=hidden name=orgapaclTOKEN value=dccecfcca>
   
    的隱藏字段value值是隨機生成的並且同時把該屬性和值放到Session中
   
    public ActionForward addUser(ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response) throws Exception {
   
    if( ! thisisTokenValid(requesttrue)){
   
    requestsetAttribute(info 請不要刷新!
   
    return mappingfindForward(backInfo
   
    }
   
    boaddUser() ;
   
    return mappingfindForward(viewUser //添加完後顯示用戶資料
   
    }
   
    當用戶填寫完信息第一次提交調用addUser方法時咱們看一下其中的thisisTokenValid(requesttrue)都做了些什麼
   
    把從頁面傳來的orgapaclTOKEN的值和session中的orgapaclTOKEN值比較
   
    如果值是相等的(這時的值是相等)會清除session中的該令牌繼續執行boaddUser() 後跳轉到addUserjsp頁面
   
    當用戶後退到該頁面點提交程序依然會對從頁面來的與session中的orgapaclTOKEN的值進行比較由於在第一次提交時已經清除了該令牌所以struts就知道這時的用戶
   
    正在進行重復提交故執行
   
    requestsetAttribute(info 請不要刷新!
   
    return mappingfindForward(backInfo
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28523.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.