- 浏览: 117815 次
- 性别:
- 来自: 济南
文章分类
最新评论
在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 402使用jquery.qrcode生成二维码 http:// ... -
servlet的url-pattern匹配规则详细描述
2017-06-20 14:06 455http://www.cnblogs.com/51kata/p ... -
Spring com.sun.proxy.$Proxy6 cannot be cast to
2017-06-16 17:08 657转载:http://blog.csdn.net/psp000 ... -
Java中getResourceAsStream的用法
2017-05-16 15:48 320转载:http://riddickbryant.iteye. ... -
log4j的使用详细解析
2017-05-15 16:50 450http://www.jb51.net/article/4 ... -
log4jdbc记录全部SQL日志
2017-05-15 15:52 417转载:http://www.cnblogs.com/xdp- ... -
BufferedInputStream如何缓冲IO以及InputStream中的read(byte[] b) 是否具有缓冲功能?
2017-04-09 17:17 315装载: http://blog.csdn.ne ... -
常见面试题
2017-03-07 11:23 343hashCode()和equals()方法的作用。 htt ... -
Java多线程之this与Thread.currentThread()的区别——java多线程编程核心技术
2017-02-08 15:12 306http://www.cnblogs.com/huangyic ... -
class getClass()
2016-12-27 16:13 393http://www.cnblogs.com/feiyun1 ... -
认真学spring官网,很容易找到spring4的jar包下载位置
2016-12-26 13:12 479http://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 604java中为什么byte的取值范围是-128到+12 ... -
java io
2016-08-31 17:48 290先看一下 InputStream 部分子类的关系。 ... -
JAVA String
2016-08-25 08:47 322转载http://blog.sina.com.cn/s/b ... -
java 异常相关文章
2016-08-23 18:26 320http://blog.csdn.net/beidou321 ... -
Spring框架下的单元测试方法
2015-10-29 14:08 425转载: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 528转载http://blog.itpub.net/2 ...
相关推荐
### JSP重复提交问题及其解决方法 #### 一、引言 在Web应用程序开发中,尤其是在使用Java Server Pages (JSP)技术时,一个常见的问题是重复提交数据。当用户不小心刷新了页面或按下了浏览器的“后退”按钮时,可能...
在Web开发中,尤其是使用JavaServer Pages (JSP) 技术时,页面表单的重复提交是一个常见的问题。这可能会导致数据不一致或者服务端处理逻辑错误。本篇文章将探讨如何有效地防止JSP页面中的表单重复提交,确保系统的...
2.已经提交成功,然后又刷新页面重复提交 3.已经提交成功,然后点击后退,然后又重复提交。 重复提交的缺点: 1.加重了服务器的负担。 2.导致错误的操作。 实例:如果在淘宝上买一个东西,然后点击了订单提交,然后...
### Struts Token机制防止页面刷新及重复提交 在Web应用开发过程中,特别是在使用MVC框架如Apache Struts进行开发时,防止表单重复提交是一个重要的安全措施。表单重复提交通常发生在用户点击“提交”按钮后,由于...
addFieldError("token", "重复提交,请刷新页面再试"); return INPUT; } } } ``` 4. **清理Token:** 一旦处理完请求,记得清除Token,防止用户回退到已提交的表单并再次提交。这可以通过重写`validate()`方法...
JSP 重复提交问题解决方案 JSP 重复提交问题是一个常见的Web 开发问题,导致用户重复提交表单,引发业务级异常。解决这个问题有多种方法,以下是其中一些: 1. 在表单页的 HEAD 区加入禁止缓存的 meta 标签,以...
"jsp刷新不变计数器"指的是在使用JavaServer Pages (JSP)技术构建的网页中,实现的一种即使页面被刷新,计数也不会增加的计数器机制。这种计数器的设计目的是为了确保每次实际的独立访问被准确地记录,而不会因为...
本文将深入探讨这个问题,以及如何通过JavaServer Pages(JSP)技术来防止表单的重复提交。 首先,理解表单重复提交的情况。当用户点击提交按钮后,由于网络延迟或刷新页面等原因,可能会导致同一个表单的数据被多...
在Web开发中,一个常见的问题就是防止用户意外或恶意地重复提交表单,这可能导致数据的不一致性和服务器负载的增加。Struts2提供了一种称为“令牌”或“Token Session”的机制来解决这个问题。 令牌机制的工作原理...
这样,当发生重复提交时,Struts2框架会自动处理并转向token.jsp页面,提示用户重复提交了表单。 对于第二种原因,即提交表单后刷新浏览器页面导致的重复提交,Struts2框架允许开发者通过配置结果视图的跳转方式来...
以下是对JSP中针对表单重复提交处理方法的详细说明。 **表单重复提交的原因** 当用户在提交表单时快速点击多次提交按钮,或者由于网络延迟,用户可能看到页面刷新多次,导致服务器接收到相同的请求。这被称为表单...
以下是一些防止JSP网页刷新重复提交数据的方法: 1. 提交后禁用提交按钮:这是一种常见的做法,即在用户点击提交按钮后,通过JavaScript禁用该按钮,使其不可再点击。例如,可以在HTML表单中添加`onclick`事件,...
本篇文档介绍了一种在Java Web开发中防止JSP刷新造成的重复提交的方法。这种方法通过利用会话(Session)和令牌(Token)机制来实现,确保即使在用户刷新页面的情况下,也只允许一次有效提交。 #### 三、具体实现...
在本文中,我们将深入探讨如何通过XML配置来解决Struts中的重复提交问题。 首先,理解重复提交的原因。在Web应用中,用户点击提交按钮后,如果网络延迟或刷新页面,同一个请求可能被发送多次。Struts框架默认情况下...
使用sessionID和时间戳作为标识,关键代码如下: 代码如下:public class SswpdjAction extends BaseAction{ public String execute(){ /**业务代码**/ ……………. //设置标识 this.setSessionToken();...
Struts Token机制是一种防止表单重复提交的有效策略,尤其在处理关键操作时,如金融交易或数据修改,防止用户意外或恶意多次点击提交按钮导致的数据重复性问题。下面将详细介绍Struts Token的工作原理、实现方式及其...
表单重复提交可能发生在用户点击提交按钮后,由于网络延迟或刷新页面等原因,导致请求被多次发送到服务器。如果不加以控制,可能会导致同一份数据被处理多次,从而对数据库造成不必要的影响。 二、Token机制的原理 ...
这种方法有效防止了用户短时间内多次点击提交按钮的情况,但并不能应对用户刷新页面或使用浏览器的前进/后退功能导致的重复提交。 第二种情况,用户在表单提交后刷新页面,会导致浏览器重新发送之前的POST请求,...