防止重複提交
表單類:
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