思路:首先生成一个令牌(唯一的字符串),保存到Session中,并且在客户提交表单时通过隐藏域(hidden)设置值,提价这个令牌,服务器端获取之前存入在Session中的令牌和表单提交过来的令牌比较.如果不一致则说明表单重复提交了.如果一致则清空Session中的令牌并进入后续操作.
Jsp:
</head>
<%
String token = UUID.randomUUID().toString().replace("-", "");
//将唯一的 令牌 号 存入 session域 中,令牌 叫做 token.
request.getSession().setAttribute("token_session", token);
%>
<body>
<input type="hidden" value="${token_session }" name="token">
Servlet:
public void doGet(request,response){
String token = request.getParameter("token");
String token_session = (String) request.getSession()
.getAttribute("token_session");
request.getSession().removeAttribute("token_session");
if(token_session==null || !token.equals(token_session)){
//重复提交了
return ;
}
}