- 浏览: 110813 次
- 性别:
- 来自: 济南
文章分类
最新评论
在jsp中,当我们刷新的时候,会重复提交,本文将讨论一下这个问题。
首先把代码写出来,然后解释一下思路
jsp页面上加一个hidden字段
<input type="hidden" name="clientToken" value="${token }">
servlet里面
下面 解释一下代码
当我们第一次提交的时候
String sessionToken = (String)session.getAttribute("sessionToken");
sessionToken的值是null
会执行if里的代码
第一次提交完,这时候返回到jsp上之后hidden字段里有值了
1.此时你刷新,String clientToken = request.getParameter("clientToken");获取clientToken值仍然为空,因为刷新,只是重复提交上一次的表单。
这时候clientToken.equals(sessionToken)判断不成立,所以执行else里的代码,也就是"这是刷新"
2.你不刷新,而是提交的话 clientToken.equals(sessionToken)是成立的。
首先把代码写出来,然后解释一下思路
jsp页面上加一个hidden字段
<input type="hidden" name="clientToken" value="${token }">
servlet里面
String clientToken = request.getParameter("clientToken"); String sessionToken = (String)session.getAttribute("sessionToken"); String time = String.valueOf(System.currentTimeMillis()); if(sessionToken==null||clientToken.equals(sessionToken)){ System.out.println("这是提交的"); session.setAttribute("sessionToken", time); session.setAttribute("token", time); }else{ System.out.println("这是刷新的"); }
下面 解释一下代码
当我们第一次提交的时候
String sessionToken = (String)session.getAttribute("sessionToken");
sessionToken的值是null
会执行if里的代码
第一次提交完,这时候返回到jsp上之后hidden字段里有值了
1.此时你刷新,String clientToken = request.getParameter("clientToken");获取clientToken值仍然为空,因为刷新,只是重复提交上一次的表单。
这时候clientToken.equals(sessionToken)判断不成立,所以执行else里的代码,也就是"这是刷新"
2.你不刷新,而是提交的话 clientToken.equals(sessionToken)是成立的。
发表评论
-
二维码
2017-07-13 16:54 367使用jquery.qrcode生成二维码 http:// ... -
servlet的url-pattern匹配规则详细描述
2017-06-20 14:06 396http://www.cnblogs.com/51kata/p ... -
Spring com.sun.proxy.$Proxy6 cannot be cast to
2017-06-16 17:08 626转载:http://blog.csdn.net/psp000 ... -
Java中getResourceAsStream的用法
2017-05-16 15:48 277转载:http://riddickbryant.iteye. ... -
log4j的使用详细解析
2017-05-15 16:50 408http://www.jb51.net/article/4 ... -
log4jdbc记录全部SQL日志
2017-05-15 15:52 376转载:http://www.cnblogs.com/xdp- ... -
BufferedInputStream如何缓冲IO以及InputStream中的read(byte[] b) 是否具有缓冲功能?
2017-04-09 17:17 274装载: http://blog.csdn.ne ... -
常见面试题
2017-03-07 11:23 292hashCode()和equals()方法的作用。 htt ... -
Java多线程之this与Thread.currentThread()的区别——java多线程编程核心技术
2017-02-08 15:12 248http://www.cnblogs.com/huangyic ... -
class getClass()
2016-12-27 16:13 350http://www.cnblogs.com/feiyun1 ... -
认真学spring官网,很容易找到spring4的jar包下载位置
2016-12-26 13:12 426http://yanln.iteye.com/blog/219 ... -
spring 下载方法
2016-10-23 15:16 0http://www.cnblogs.com/yjmyzz/ ... -
快速排序
2016-10-11 19:47 0http://www.cnblogs.com/vanezk ... -
java中为什么byte的取值范围是-128到+127
2016-09-30 16:21 568java中为什么byte的取值范围是-128到+12 ... -
java io
2016-08-31 17:48 260先看一下 InputStream 部分子类的关系。 ... -
JAVA String
2016-08-25 08:47 284转载http://blog.sina.com.cn/s/b ... -
java 异常相关文章
2016-08-23 18:26 281http://blog.csdn.net/beidou321 ... -
Spring框架下的单元测试方法
2015-10-29 14:08 392转载:http://blog.csdn.net/bruce ... -
mybatis
2015-10-23 17:31 0转载 http://my.oschina.net/u/14 ... -
Lucene源码解析--Field类
2015-07-09 15:08 474转载http://blog.itpub.net/2 ...
相关推荐
2.已经提交成功,然后又刷新页面重复提交 3.已经提交成功,然后点击后退,然后又重复提交。 重复提交的缺点: 1.加重了服务器的负担。 2.导致错误的操作。 实例:如果在淘宝上买一个东西,然后点击了订单提交,然后...
java开发时防止jsp刷新造成的重复提交 经测试完美
使用sessionID和时间戳作为标识,关键代码如下: 代码如下:public class SswpdjAction extends BaseAction{ public String execute(){ /**业务代码**/ ……………. //设置标识 this.setSessionToken();...
本篇文章主要介绍了网页如何防止刷新重复提交与如何防止后退的解决方法,具体如下: 提交后禁用提交按钮(大部分人都是这样做的) 如果客户提交后,按F5刷新怎么办? 使用Session 在提交的页面也就是数据库处理之前: ...
jsp防止重复提交 这做最好结合让jsp页面过期一起用。当用户返回到上一表单页面时(按backspase键、返回按钮,右击--返回),让表单页面过期。这样才可以让用户主动的刷新jsp而从新生成一个session.setAttribute(...
看了网上的,有几种方法: 1 在你的表单页里HEAD区加入这段代码: 代码如下:<... 2 生成一个令牌保存在用户session中,在form中加一个hidden域,显示该令 牌的值,form提交后重新生成一个新的令牌,将用户提交的令牌和
103.使用session对象防止表单重复提交? 104.获取用户真实IP地址? 105.获取请求中的所有参数? 106.获取完整的请求URL? 107.在重新显示表单时保留用户已经输入的合法数据? 108.使用选代器遍历集合 109.使用特定字符串...
使用session对象防止表单重复提交? 104.获取用户真实IP地址? 105.获取请求中的所有参数? 106.获取完整的请求URL? 107.在重新显示表单时保留用户已经输入的合法数据? 108.使用选代器遍历集合 109....
另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交 4.修改HTTP header的Location属性来重定向 通过设置直接修改地址栏来实现页面的重定向。 jsp文件代码如下: response.setStatus...
第一种情况:提交完表单以后,不做其他操作,直接刷新页面,表单会提交多次。 – 在servlet中写一句输出,用来判断是否提交多次 System.out.println(已经插入); request.getRequestDispatcher(/login_success.jsp)...
前面提到过重复提交表单问题,处理token口令校验、重定向之外,还有一种经常使用到的方法就是新页面处理表单提交,完成后关闭当前页面,并刷新之前发送请求的页面。 这里使用了artDialog.js 1、文件结构 2、user....
当页面使用ajax 提交表单时,默认页面是没有缓存历史记录功能的,于是写了一个基于js的cookie lis记录功能,类似于百度搜索后下次还能看到之前输入的数据。省去了大量重复录入工作。
重复提交表单:一条已经成功提交的纪录,返回后再提交,看看系统是否做了处理。对于Web系统来说,可以通过浏览器返回键或者系统提供的返回功能。 15. 检查多次使用返回键的情况: 在有返回键的地方,返回到原来页面...
\ajaxmodel\amel\html\autoRefresh.jsp 自动刷新网页的客户端页面。 \ajaxmodel\amel\html\processBar.jsp 显示进度条的客户端页面。 \ajaxmodel\src\bonze\UserValServlet.java 完成验证的服务器端。 \...
实例080 防止表单重复提交 124 实例081 自动提交表单 125 实例082 通过for循环获取表单元素的中文名称 126 实例083 可以提交到不同处理页的表单 127 第3章 实用JavaScript函数 129 3.1 数据验证 130 实例084 通过...
* 验 证 码:请输入验证码" size="8" name="valicode"/><img src="/validateCode.jsp?随机数" alt="" /><div id="valicodeTip"> 注册" /> [/code] 上面每控件后面都一个标签是用来显示消息的。 Html的JavaScript:...
内容: 1 转换基本数据类型;运算符;计算阶乘; 2 复数类;java的参数传递;自定义形状类;... jsp无刷新聊天室; 设置和读取cookie; 上传文件; 用servlet生成图形验证码; 用servlet实现分页查看数据库;