小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Struts解決表單重復(fù)提交問題

 xue_dong5437 2011-05-05

2008-08-20 13:47

1.問題的產(chǎn)生原因
      用Struts來實現(xiàn)MVC框架。這時頁面提交給Action去進(jìn)行業(yè)務(wù)處理,Action再跳轉(zhuǎn)回前臺頁面,但這時URL依然是“頁面提交給Action的鏈接”,這時前臺刷新一下頁面,就變成再次執(zhí)行了一次提交操作;

2.解決思路
      2.1在Action頁面中跳轉(zhuǎn)的時候用重定向,可以在struts_config.xml中配置<forward ... redirect="true">
            不過這種方法會使得Request中放置數(shù)據(jù)丟失;
      2.2用Token令牌環(huán)來實現(xiàn)
            提交到Action的時候,進(jìn)行一系列操作,然后保存一個標(biāo)志,這時再跳轉(zhuǎn)到前臺頁面(必須用struts標(biāo)簽,程序會自動在該前臺頁面設(shè)置一個隱藏域)。如果前臺頁面刷新的話,Action通過查看是否有標(biāo)志,就能判斷用戶是刷新還是提交。
            Struts利用同步令牌(Token)的方式來解決Web應(yīng)用中重復(fù)提交的問題,其機制是在form表單中增加一個隱藏的域,保存當(dāng)前令牌值,然后在程序中判斷此令牌值是否合法.
            org.apache.struts.action.Action類提供了相關(guān)操作Token的方法:
            1、isTokenValie方法:
判斷存儲在當(dāng)前用戶會話中的令牌值和請求參數(shù)中的令牌值是否匹配.如果匹配,返回true,反之返回false.只要符合下列情況之一的,就會返回false:
             不存在HttpSession對象;
              在session范圍內(nèi)沒有保存令牌值;
             在請求參數(shù)中沒有令牌值;
             存儲在當(dāng)前用戶session范圍內(nèi)的令牌值和請求參數(shù)中的令牌值不匹配.
2、resetToken方法:
             從當(dāng)前session范圍內(nèi)刪除令牌屬性.
3、saveToken方法:
             創(chuàng)建一個新的令牌,并把它保存在當(dāng)前session范圍內(nèi).如果HttpSession不存在,就首先創(chuàng)建一個HttpSession對象.

如何利用上述方法應(yīng)用令牌機制解決重復(fù)提交問題:
            以用戶注冊為例:
            在用戶請求newUser.jsp之前,首先把請求轉(zhuǎn)發(fā)到PrepareAction,PrepareAction 調(diào)用saveToken方法,創(chuàng)建一個新的令牌,并將令牌值保存在當(dāng)前HttpSession中(新創(chuàng)建的),PrepareAction接著把請求轉(zhuǎn)發(fā)給newUser.jsp.

            newUser.jsp中的<html:form>標(biāo)簽自動判斷在session范圍內(nèi)是否存在Token,如果存在,就自動在表單中生成一個包含Token信息的隱藏字段,例如: 
<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="....">

            在用戶提交表單后,由InsertUserAction處理請求.在InsertUserAction中,調(diào)用isTokenValid方法,判斷當(dāng)前用戶會話中的令牌值和請求參數(shù)中的令牌值是否匹配.如果匹配,就調(diào)用resetToken方法,刪除Token,然后執(zhí)行插入數(shù)據(jù)操作.如果不匹配,返回相關(guān)錯誤提示,進(jìn)行相關(guān)操作.

            OK. That's it.

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多