防止表单重复提交(拦截器)
2019-10-11 / JAVA / 1363 次围观 / 0 次吐槽 /表单重复提交原理图
1、Servelt的表单重复提交的一种解决方案
session存验证码
比如在登录时,可以通过验证码存在session中来解决
login.jsp
<form action="${pageContext.request.contextPath}/LoginServlet" method="post"> 用户名:<input type="text" name="username"><br> 密 码:<input type="password" name="password"><br> 验证码:<input type="text" name="code"> <img alt="" src="${pageContext.request.contextPath}/ValidateCodeServlet"><br> <input type="submit" value="登录"> </form>
ValidateCodeServlet
@WebServlet("/ValidateCodeServlet") public class ValidateCodeServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建验证码对象 ValidateCode code = new ValidateCode(100, 30,4,4); //存储服务端验证码 request.getSession().setAttribute("serverCode", code.getCode()); System.out.println("ServerCode:" + code.getCode()); //响应客户端 code.write(response.getOutputStream()); } }
LoginServelt
2、Struts的表单重复提交解决方案
a、使用重定向
b、使用<s:token/>生成令牌配合token拦截器
此种解决方式不太符合逻辑,它是产生了错误之后再告知用户,应该一直停留在当前界面
c、使用<s:token/>生成令牌配合tokensession拦截器
- 上一篇:OGNL
- 下一篇:Hibernate[一]
Powered By Cheug's Blog
Copyright Cheug Rights Reserved.