防止表單重複提交的處理

防止重複提交
表單類:
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
//須要生成一個惟一的httpSession值和表單隱藏域的id,當二者相同時,不是重複提交,不一樣則說明是重複提交
//方法一:(推薦)用uuid
//方法二:用數據指紋:(單獨作一章筆記總結)
//生成一個惟一id
String token=UUID.randomUUID().toString();
request.getSession().setAttribute("token", token);html

out.write("<form action='/TextSession/servlet/RegistServlet' method='post'>");
out.write("登陸名"+"<input type='text' name='username'/>");
//建立惟一的表單隱藏域的id
out.write("<input type='hidden' name='token' value='"+token+"'/>");
out.write("<input type='submit' value='登陸'/>");
out.write("</form>");數據庫

操做類:
public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   //檢驗httpSession中的id和表單隱藏域中的id是否相同
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out=response.getWriter();
  HttpSession session=request.getSession();
  String tokens=(String) session.getAttribute("token");
  String tokenf=request.getParameter("token");
  //判斷是否相同
  if(tokens.equals(tokenf)){
   System.out.println("保存到數據庫中");//模擬保存
   //保存完後將令牌從session中刪除
   session.removeAttribute("token");
  }else{
   out.write("請不要重複提交");
  }
 }session

相關文章
相關標籤/搜索