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