jsp防止重复提交

jsp防止重复提交

 

// 页面代码start
<%
       Random random
= new  Random();
        // 生成随机flag,
       
Integer   flag = new    Integer(random.nextInt());  
       session.setAttribute(
" flag " ,flag);   
%>

// form代码
< input   type = hidden   name = " flag "    value = " <%=flag%> " >  

// 页面代码end


//处理 表单代码 start
 Integer flag  = new  Integer(Integer.parseInt(request.getParameter( " flag " )));   
        HttpSession session
= request.getSession();     
        
if  (flag.equals(session.getAttribute( " flag " ))) {   
            
//在此调用dao    
               destroyFlag(session);   
       }
  else    {   
            System.out.println(
"重复提交");
        }
 
  
  
  /**
     * 销毁flag
     * @param session
     */
    public void  destroyFlag(HttpSession session)  {   
        session.removeAttribute("flag");
    }
  //处理表单代码end
这做最好结合让jsp页面过期一起用。当用户返回到上一表单页面时(按backspase键、返回按钮,右击--返回),让表单页面过期。这样才可以让用户主动的刷新jsp而从新生成一个session.setAttribute("flag").如果不这样flag值不会更新,返回以后的操作数据是不会更新到数据库的。
(页面过期的机制还不完全了解,只知道一种实现方法但觉得不怎么好使。摸索中...)希望有人能提出更好的解决方法.让页面form的、session的flag更新。

你可能感兴趣的:(jsp防止重复提交)