2018-4-8日志记录(Jsp表单重复提交)

今日工作:

1、Jsp页面的刷新或者浏览器的前后通知按钮,导致表单的重复提交。   

前端的控制只能是控制前端的提交次数只能是一次,提交一次之后不能提交或者提交一次之后隐藏按钮。
如果是jsp页面,那么会存在刷新页面和浏览器的前进按钮,控制提交就会出问题。
接下来使用Servlet来生成表单,然后通过Servlet来控制提交次数(基于JSP/Servlet):

1)在表单中建立一个hidden的隐藏域,用来放token的参数。

<input type="text" name="token" value="${token}" hidden="hidden" />

2)在服务端生成token,放入session中。
String token = UUID.randomUUID().toString();
//生成了token 然后放入session中
HttpSession session = request.getSession();
System.out.println("存入session的token:"+token);
session.setAttribute("token", token);
3)提交表单以后,Servlet获取隐藏域的formToken和session中的token,然后做对比,如果相同,
那么处理数据,然后清空session的token值。
HttpSession session = request.getSession();
// 获取表单的隐藏值,token
String formToken = request.getParameter("token");	
// 获取session中的token
String token = (String) session.getAttribute("token");
System.out.println("formToken:"+formToken+"   token:"+token);
// 1、比较token是否一致
if (token.equalsIgnoreCase(formToken)) {
	// 2、清楚session的token 
	session.setAttribute("token", "");
	String id = request.getParameter("id");
	String name = request.getParameter("name");
	System.out.println("id:" + id +"  name:" + name);
}
2、controlle处理完用户提交的数据后,重定向到另一个controlle或是一个页面,
使用户提交后,所停留的位置,不是当前处理数据的controlle,这样用户再刷新时,就不会再次
执行这个controlle了,就会避免表单重复提交的问题了。
弊端:会丢失参数。

明日安排: 明日参加会议,准备好需要用到的java环境,为教学的环境以及软件安装作指导。






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值