java 表单重复提交_防止表单重复提交(拦截器)

表单重复提交原理图

6e45afb6bdf3e6ed13d7b1db07b5355e.png

1、Servelt的表单重复提交的一种解决方案

session存验证码

比如在登录时,可以通过验证码存在session中来解决

login.jsp

用户名:

密 码:

验证码:

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

c6223398f9a26272823585c313b38e74.png

2、Struts的表单重复提交解决方案

a、使用重定向

2e42b686ed2fa17a570223305bbf8805.png

b、使用生成令牌配合token拦截器

d3abfccff28ad15926184e3a149951f4.png

68560d411f644ef7357d9aadfe3063bf.png

此种解决方式不太符合逻辑,它是产生了错误之后再告知用户,应该一直停留在当前界面

c、使用生成令牌配合tokensession拦截器

1aaf1d2ff45143ff6b72b67c7929e8ac.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值