中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

JSP避免Form重復(fù)提交的三種方案

  1 Javascript ,設(shè)置一個(gè)變量,只允許提交一次?!?

  <script language="Javascript">

   var checkSubmitFlg = false;

   function checkSubmit() {

   if (checkSubmitFlg == true) {

   return false;

   }

   checkSubmitFlg = true;

   return true;

   }

   document.ondblclick = function docondblclick() {

   window.event.returnValue = false;

   }

   document.onclick = function doconclick() {

   if (checkSubmitFlg) {

   window.event.returnValue = false;

   }

   }

  </script>

  

  <html:form action="myAction.do" method="post" onsubmit="return checkSubmit();">  

  2 還是Javascript,將提交按鈕或者image置為disable  

   <html:form action="myAction.do" method="post"

   onsubmit="getElById('submitInput').disabled = true; return true;">   

   <html:image styleId="submitInput" src="images/ok_b.gif" border="0" /> 

   </html:form>  

  3 利用struts的同步令牌機(jī)制  

  利用同步令牌(Token)機(jī)制來(lái)解決Web應(yīng)用中重復(fù)提交的問(wèn)題,Struts也給出了一個(gè)參考實(shí)現(xiàn)。

  基本原理: 

  服務(wù)器端在處理到達(dá)的請(qǐng)求之前,會(huì)將請(qǐng)求中包含的令牌值與保存在當(dāng)前用戶會(huì)話中的令牌值進(jìn)行比較,看是否匹配。在處理完該請(qǐng)求后,且在答復(fù)發(fā)送給客戶端之前,將會(huì)產(chǎn)生一個(gè)新的令牌,該令牌除傳給客戶端以外,也會(huì)將用戶會(huì)話中保存的舊的令牌進(jìn)行替換。這樣如果用戶回退到剛才的提交頁(yè)面并再次提交的話,客戶端傳過(guò)來(lái)的令牌就和服務(wù)器端的令牌不一致,從而有效地防止了重復(fù)提交的發(fā)生?!?

  if (isTokenValid(request, true)) {

   // your code here

   return mapping.findForward("success");

  } else {

   saveToken(request);

   return mapping.findForward("submitagain");

  } 

  Struts根據(jù)用戶會(huì)話ID和當(dāng)前系統(tǒng)時(shí)間來(lái)生成一個(gè)唯一(對(duì)于每個(gè)會(huì)話)令牌的,具體實(shí)現(xiàn)可以參考TokenProcessor類中的generateToken()方法?! ?

  1. //驗(yàn)證事務(wù)控制令牌,<html:form >會(huì)自動(dòng)根據(jù)session中標(biāo)識(shí)生成一個(gè)隱含input代表令牌,防止兩次提交

  2. 在action中:  

   //<input type="hidden" name="org.apache.struts.taglib.html.TOKEN"

   // value="6aa35341f25184fd996c4c918255c3ae">

   if (!isTokenValid(request))

   errors.add(ActionErrors.GLOBAL_ERROR,

   new ActionError("error.transaction.token"));

   resetToken(request); //刪除session中的令牌  

  3. action有這樣的一個(gè)方法生成令牌  

   protected String generateToken(HttpServletRequest request) {  

   HttpSession session = request.getSession();

   try {

   byte id[] = session.getId().getBytes();

   byte now[] =

   new Long(System.currentTimeMillis()).toString().getBytes();

   MessageDigest md = MessageDigest.getInstance("MD5");

   md.update(id);

   md.update(now);

   return (toHex(md.digest()));

   } catch (IllegalStateException e) {

   return (null);

   } catch (NoSuchAlgorithmException e) {

   return (null);

   }

   }   

jsp技術(shù)JSP避免Form重復(fù)提交的三種方案,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲一区二区三区视频 | 99久久电影 | 午夜精品一区 | 综合激情久久 | 国产 欧美 日韩 一区 | 久久久久久国产精品 | 亚洲网址 | 亚洲一区二区三区免费在线观看 | 午夜视频免费在线观看 | 国产视频久久 | 国产精品一码二码三码在线 | 亚洲成人免费视频 | 国产区在线免费观看 | 精品久久一区二区三区 | 国产一级毛片精品完整视频版 | 欧美日韩国产一区二区三区 | aaa级片| 性一交一乱一透一a级 | 亚洲精品一区二区三区在线 | 国产精品无码专区在线观看 | 国产亚洲精品精品国产亚洲综合 | 国产精品毛片久久久久久 | 一级黄色毛片 | 91人人在线 | 91秦先生艺校小琴 | 国产成人精品高清久久 | 国产欧美日韩在线 | 国产1区| 在线色网站 | 99久久99久久精品国产片果冰 | 精品无码三级在线观看视频 | 精品日韩在线观看 | 999国产视频 | 欧美激情一区二区 | 亚洲综合小视频 | 欧美三区在线观看 | 狠狠久 | 亚洲精品日韩综合观看成人91 | 国产毛片在线看 | 91精品国产91久久久久久最新 | 久久久成人一区二区免费影院 |