在前端代码写一个随机数出来,把这个随机数放在两个地方,一个是session域对象中,一个是表单的隐藏域中。传到后台进行比对,根据这两个值是不是一致,一致的话不是表单重复提交,不一致就是表单重复提交。注意:当判断到是一致的时候要把session中的随机数清除
<%
String stoken = UUID.randomUUID().toString();//生成唯一的令牌
request.getSession().setAttribute("stoken", stoken);
%>
<form action="${pageContext.request.contextPath}/recommit" method="post">
<input type="hidden" name="ttoken" value="<%=stoken%>"/>
<input type="text" name="name"/>
<input type="submit" value="提交"/>
</form>
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String ttoken = request.getParameter("ttoken");
System.out.println(ttoken);
String stoken = (String) request.getSession().getAttribute("stoken");
System.out.println(stoken);
if(ttoken.equals(stoken)){
request.getSession().removeAttribute("stoken");
String name = request.getParameter("name");
System.out.println(name);
}else{
System.out.println("请不要重复提交");
}
}