防止表单重复提交的处理

防止重复提交
表单类:
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

相关文章
相关标签/搜索