贏在執(zhí)行

          這個(gè)世界上只有兩樣?xùn)|西愈分享愈多,那就是智慧與愛。

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            17 Posts :: 11 Stories :: 13 Comments :: 0 Trackbacks
          java-web-struts2-2.0-防止重復(fù)提交之設(shè)置-intercept   文章指數(shù):0  CSDN Blog推出文章指數(shù)概念,文章指數(shù)是對(duì)Blog文章綜合評(píng)分后推算出的,綜合評(píng)分項(xiàng)分別是該文章的點(diǎn)擊量,回復(fù)次數(shù),被網(wǎng)摘收錄數(shù)量,文章長(zhǎng)度和文章類型;滿分100,每月更新一次。

          在用struts2.0標(biāo)簽開發(fā)中,經(jīng)常要使用form提交.

          通常:

          1)寫一個(gè)action類
           此action類完成提交后的保存動(dòng)作.

          2)寫一個(gè)靜態(tài)jsp頁(yè)面
           寫form,以及輸入input,和提交button.

          3)設(shè)置struts*****.xml文件
          配置action名稱以及映射的類和返回結(jié)果名稱等.

          問題:

          在點(diǎn)擊"提交"后,我們通常會(huì)彈出一個(gè)提示信息的頁(yè)面,用戶此時(shí)有可能會(huì)按f5刷新當(dāng)前提交的action,從而將多個(gè)相同的數(shù)據(jù)保存到了后臺(tái)數(shù)據(jù)庫(kù),并且造成了潛在的安全危險(xiǎn)!
          如何避免重復(fù)提交呢?

          1) 用<s:token>!
          如在輸入界面的jsp里,設(shè)置token標(biāo)志:

          <form name="myname" action="myaction.do" method="post">

          <input type="text" name="stuName" value="" .../>

          ... ...

          <s:token/>

          <input type="button" onclick="mymethod(this.form);" .../>

          </form> 

          2) 在struts****.xml文件里配置攔截器:

          <!-- 保存 -->
            <action name="Save"
             class="com.yourcom.app.Action.Dataform.saveAction"
             method="Save">
             <interceptor-ref name="defaultStack" />
                      <interceptor-ref name="token" />
                      <result name="invalid.token">/Info/NoBack.jsp</result>                       
                     
             
            </action>

          3)寫一個(gè)名稱為NoBack.jsp的提示文件,當(dāng)重復(fù)f5刷新時(shí),將顯示本頁(yè)內(nèi)容,提示"不可重復(fù)提交,或者頁(yè)面已經(jīng)過期"

          <s:token/>在最終生成頁(yè)面時(shí),自動(dòng)生成一個(gè)unique id,通過它攔截器才能知道頁(yè)面是否是同一次提交.

          posted on 2008-02-04 23:57 飛雪(leo) 閱讀(4412) 評(píng)論(4)  編輯  收藏

          Feedback

          # re: java-web-struts2-2.0-防止重復(fù)提交之設(shè)置-intercept [未登錄] 2008-05-15 17:04 java初學(xué)者
          謝謝樓主了!!!  回復(fù)  更多評(píng)論
            

          # re: java-web-struts2-2.0-防止重復(fù)提交之設(shè)置-intercept 2008-08-03 15:37 topG
          摟主,能再詳細(xì)介紹下避免重復(fù)提交的機(jī)制嗎?
          因?yàn)槲铱紤],如果一個(gè)頁(yè)面我添加一次數(shù)據(jù)后,再回到本頁(yè)面,然后我再填寫添加數(shù)據(jù),點(diǎn)再次添加時(shí)是否判斷重復(fù)提交,那就會(huì)出現(xiàn),打開一次頁(yè)面之能提交一次操作了.... 請(qǐng)賜教  回復(fù)  更多評(píng)論
            

          # re: java-web-struts2-2.0-防止重復(fù)提交之設(shè)置-intercept [未登錄] 2009-06-30 16:42 dd
          返回到相同的頁(yè)面后token已經(jīng)重新賦值了  回復(fù)  更多評(píng)論
            

          # re: java-web-struts2-2.0-防止重復(fù)提交之設(shè)置-intercept 2010-06-15 09:29 fan
          攔截器能不能寫成全局的呢
          如果我又多個(gè)action要防止重復(fù)提交沒個(gè)都寫不是很麻煩???  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 东安县| 木兰县| 芜湖县| 龙里县| 绥棱县| 贵州省| 临沧市| 湘西| 济宁市| 三穗县| 黔西县| 页游| 扶风县| 邛崃市| 定安县| 临武县| 杭州市| 吉安市| 高阳县| 德江县| 郸城县| 临安市| 云林县| 厦门市| 鄂尔多斯市| 宁乡县| 鸡东县| 新晃| 浦北县| 海伦市| 宜兰市| 木兰县| 纳雍县| 元朗区| 新昌县| 高密市| 泌阳县| 青州市| 衡阳市| 定陶县| 吉首市|