javaweb中防止表单的重复提交(隐藏域+Session)


一、在表单提交也面:

1)生成一个随机值(token); 

String tokenValue = new Date().getTime()+" ";

2)将token值放入到Session属性中;

session.setAttribute("token",tokenValue);

3)将token值放入到隐藏域的value中;

<input type="hidden" name="token" value="<%=tokenValue%>" />

二、在Servlet接受页面:

1)获取Session和隐藏域中的token值;

HttpSession session = request.getSession();

Object token = session.getAttribute("token");


String tokenValue = request.getParameter("token");

2)比较两个值时候一致:若一致,受理请求,且把Session域中的token属性清除;若不一致,则直接相应提示页面“重复提交”;

if(token != null && token.equals(tokenValue){

session.removeAttribute("token");

}else{

response.sendRedirect(request.getContextPath()+"/token/token.jsp");

return;

}


总体思路:产生一个随机值,分别给Session和表单值,同时提交给Servlet;

servlet判断是否是首次提交,如果是,清楚Session值,表示提交成功;如果第二次提交,Session中就没有值,所以判断为假,则提示重复提交。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值