<form action="<%=basePath %>xxx.do">
<input type="hidden" name="reqUUID" value="<%= UUID.randomUUID().toString() %>" />
</form>
String reqUUID = request.getParameter("reqUUID");
String sessionUUID = null;
try {
sessionUUID = request.getSession().getAttribute("sessionUUID").toString();
} catch (Exception e) {
sessionUUID = null;
}
if(reqUUID!=null){
if(sessionUUID!=null && sessionUUID.equals(requestUUID)){//重复提交表单
List list = request.getSession().getAttribute(sessionUUID);
request.setAttribute("dataList",list);
request.getRequestDispatcher("view.jsp").forward(request, response);
}else{ //正常提交表单
List list = null;
//业务处理
request.getSession().setAttribute("sessionUUID", requestUUIDKey);
request.getSession().setAttribute(reqUUID, list);
request.setAttribute("dataList",list);
request.getRequestDispatcher("view.jsp").forward(request, response);
}
}else{
if(sessionUUIDKey!=null){//页面刷新
List list = request.getSession().getAttribute(sessionUUID);
request.setAttribute("dataList",list);
request.getRequestDispatcher("view.jsp").forward(request, response);
}else{ //session 失效
response.sendRedirect(request.getContextPath()+"index.jsp");
}
}
本文介绍了一种通过UUID和session管理来防止Web应用中表单重复提交的方法。具体实现包括为每次表单提交生成唯一的请求标识符,并在服务器端验证该标识符的有效性和唯一性,确保同一表单不会被多次提交。
2384

被折叠的 条评论
为什么被折叠?



