- 浏览: 1370547 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (551)
- 计划 (4)
- java (115)
- oracle (60)
- ajax (3)
- javascript (64)
- 计算机操作技巧集 (11)
- 近期关注话题 (10)
- 随想 (13)
- html (6)
- struts (15)
- hibernate (16)
- spring (2)
- game (0)
- Eglish (10)
- DisplayTag (6)
- jsp (18)
- css (3)
- eclipse (3)
- 其他知识 (8)
- 备用1 (12)
- 备用2 (1)
- 笑话-放松心情 (9)
- 设计 (1)
- 设计模式 (1)
- 数据结构 (0)
- office办公软件 (5)
- webwork (0)
- tomcat (2)
- MySql (1)
- 我的链接资源 (5)
- xml (2)
- servlet (0)
- PHP (13)
- DOM (0)
- 网页画图vml,canvas (1)
- 协议 (2)
- 健康 (3)
- 书籍下载 (1)
- jbpm (1)
- EXT (1)
- 自考 (2)
- 报表 (4)
- 生活 (64)
- 操作系统基础知识 (2)
- 测试 (2)
- guice (1)
- google学习 (2)
- Erlang (1)
- LOG4J (2)
- wicket (1)
- 考研 (1)
- 法律 (1)
- 地震 (1)
- 易学-等等相关 (1)
- 音乐 (1)
- 建站 (4)
- 分享说 (3)
- 购物省钱 (0)
- linux (1)
最新评论
-
zenmshuo:
如果使用SpreadJS这一类的表格工具,应该能更好的实现这些 ...
js中excel的用法 -
hjhj2991708:
第一个已经使用不了
jar包查询网站 非常好用! -
jiangmeiwei:
...
中文乱码 我的总结 不断更新 -
gary_bu:
...
response.sendRedirect 中文乱码问题解决 -
hnez:
多谢指点,怎么调试也不通,原来我在<body>&l ...
ExtJs IE ownerDocument.createRange() 错误解决方案
如果避免重复提交呢?
请知道的详细说下,或者把文章的链接地址写下也好。
应用环境是tomcat,struts1.2,jsp,hibernate
下面是问题,请看到后能给一个解决方案。
1。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理完毕返回到一个新的列表页面。此时刷新页面,则服务器当作重复提交对待。
2。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理时发生一个异常,于是返回一个错误页面,告诉用户哪个字段有错误,然后用户点击返回按钮,返回上一个页面,再次提交页面时,用户器则把这次的提交当作了重复提交对待。
3。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交,服务器还没有处理完毕时,用户等不及了,再次单击提交按钮,则struts的token机制不会把此当作重复提交,而是会两样处理这次的提交。
如果要带参数怎么办,,
这不太好。
其实讨论来讨论去,大家可能忘了最早的目的了:"防止用户在短时间内提交相同的内容", 这不就完了,很明显,这是一个业务需求,解决业务需求的方法只能是写到业务逻辑中去:如
if ( (post.time-lastpost.time)<1S) && (post.content.length()=lastpost.content.length() && post.content.hashcode()=lastpost.content.hashcode() ) throw BuzisException("重复了")
请知道的详细说下,或者把文章的链接地址写下也好。
应用环境是tomcat,struts1.2,jsp,hibernate
下面是问题,请看到后能给一个解决方案。
1。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理完毕返回到一个新的列表页面。此时刷新页面,则服务器当作重复提交对待。
2。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理时发生一个异常,于是返回一个错误页面,告诉用户哪个字段有错误,然后用户点击返回按钮,返回上一个页面,再次提交页面时,用户器则把这次的提交当作了重复提交对待。
3。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交,服务器还没有处理完毕时,用户等不及了,再次单击提交按钮,则struts的token机制不会把此当作重复提交,而是会两样处理这次的提交。
评论
24 楼
Fly_m
2008-04-18
直接把参数带到后面算了,forward + 参数,action中将参数全部取出,再全部追加至url后面.
或者说将临时数据保存至session中(token就是这样吧),保存之后将session中数据去掉.不知道这个如何?
或者说将临时数据保存至session中(token就是这样吧),保存之后将session中数据去掉.不知道这个如何?
23 楼
devil_javaMode
2008-04-17
My_Choice 写道
forward设置redirect=true是最简单的设置了也是最容易想到的啊
如果要带参数怎么办,,
22 楼
sheqiguo
2008-04-03
网上一堆。。搜搜。。struts2有防重复提交的。。
21 楼
javaxy
2008-04-02
弄个验证码也可以解决这个问题吧?!
20 楼
My_Choice
2008-03-25
forward设置redirect=true是最简单的设置了也是最容易想到的啊
19 楼
pacer123
2008-02-19
通过js控制,提交后将提交按钮所在的table块 通过
document.forms[0].submitType.value = v;
var v = document.getElementById(t);
v.innerHTML = "数据提交中...";
这种方式替换掉就ok了
document.forms[0].submitType.value = v;
var v = document.getElementById(t);
v.innerHTML = "数据提交中...";
这种方式替换掉就ok了
18 楼
drinkjava
2008-01-20
81261686 写道
提交后把按键去掉
这不太好。
其实讨论来讨论去,大家可能忘了最早的目的了:"防止用户在短时间内提交相同的内容", 这不就完了,很明显,这是一个业务需求,解决业务需求的方法只能是写到业务逻辑中去:如
if ( (post.time-lastpost.time)<1S) && (post.content.length()=lastpost.content.length() && post.content.hashcode()=lastpost.content.hashcode() ) throw BuzisException("重复了")
17 楼
pypg
2008-01-03
刚好用到,收下了。
呵呵,不错技巧。
呵呵,不错技巧。
16 楼
Jonney
2007-12-22
比较优雅的是redirect-after-post技术。
Webwork或者Struts2对redirect-after-post都有支持,
FlashResult和FlashIntecepter搭配使用。
Stripes里面也有个Flash类型的result。
Webwork或者Struts2对redirect-after-post都有支持,
FlashResult和FlashIntecepter搭配使用。
Stripes里面也有个Flash类型的result。
15 楼
watermud
2007-12-21
问题3的解决方法挺巧妙的,呵呵。
14 楼
81261686
2007-12-03
提交后把按键去掉
13 楼
leeking
2007-12-02
不行你就用ajax,象这个论坛一样,页面局部刷新
12 楼
xiaoqiang
2007-11-30
对于这个问题,我觉得在struts1.2时代,处理方法就有了。
但到了struts2.0,则用的是webwork的机制,而且更加成熟
问题1,就不用说了,在struts1.2中,new ActionForward(各参数);
可以指定参数:boolean redirect
问题2,应该加一个异常处理的方法,当发生异常时,重置token的值,即使返回到编辑页面,取得的token值还是原来的,并不会重新生成,所以再次提交,也还是原来的token。这个在webwork中就很方便:加一个异常Interceptor,处理极其方便
问题3,人家手快,没办法,只能把按钮diabled掉
但到了struts2.0,则用的是webwork的机制,而且更加成熟
问题1,就不用说了,在struts1.2中,new ActionForward(各参数);
可以指定参数:boolean redirect
问题2,应该加一个异常处理的方法,当发生异常时,重置token的值,即使返回到编辑页面,取得的token值还是原来的,并不会重新生成,所以再次提交,也还是原来的token。这个在webwork中就很方便:加一个异常Interceptor,处理极其方便
问题3,人家手快,没办法,只能把按钮diabled掉
11 楼
pany
2007-11-28
或者当点了提交按钮后 使按钮不可用 或者可以在页面加个验证码 如果验证不通过就不跳转么
10 楼
zyp731
2007-11-28
1。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理完毕返回到一个新的列表页面。此时刷新页面,则服务器当作重复提交对待。
可采用重定向方式
2。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理时发生一个异常,于是返回一个错误页面,告诉用户哪个字段有错误,然后用户点击返回按钮,返回上一个页面,再次提交页面时,用户器则把这次的提交当作了重复提交对待。
把修改token的状态信息的代码放在保存完信息之后。如果在保存信息之前发生错误,token的信息是不会被清除的。
3。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交,服务器还没有处理完毕时,用户等不及了,再次单击提交按钮,则struts的token机制不会把此当作重复提交,而是会两样处理这次的提交。
和第二个问题一样。
可采用重定向方式
2。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理时发生一个异常,于是返回一个错误页面,告诉用户哪个字段有错误,然后用户点击返回按钮,返回上一个页面,再次提交页面时,用户器则把这次的提交当作了重复提交对待。
把修改token的状态信息的代码放在保存完信息之后。如果在保存信息之前发生错误,token的信息是不会被清除的。
3。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交,服务器还没有处理完毕时,用户等不及了,再次单击提交按钮,则struts的token机制不会把此当作重复提交,而是会两样处理这次的提交。
和第二个问题一样。
9 楼
抛出异常的爱
2007-11-28
post 。。。action名。。。
8 楼
eoeac
2007-11-28
forward设置redirect=true有时刷新过快好像还能发生重复提交
token使用起来老是觉着不是十分顺手,但一般处理重复提交还是使用token,心里觉着踏实些
token使用起来老是觉着不是十分顺手,但一般处理重复提交还是使用token,心里觉着踏实些
7 楼
hantsy
2007-11-28
两种方法都是可行的
1.使用token
2.forward设置redirect=true
1.使用token
2.forward设置redirect=true
6 楼
zsslxy2006
2007-11-17
我们是用了最笨的方法.是针对refresh页面时重复提交的问题.当进入一张表单时往session写个值设为true,提交后在action处理的时候往session里设这个值为false,在方法里判段它为true时才执行数据库等操作.就杜绝了重复提交.
5 楼
zgqynx
2007-11-16
yyjn12 写道
绝大多数情况是不需要使用token的.
我不知道token适用于什么情况,反正我也没用过.不过我想它既然存在,应该有道理的吧.
重复提交是个经典的老问题了,但是似乎于struts无关吧?你自己直接写jsp,或是servlet,不是照样存在这个问题吗?
这是个对MVC的理解的问题.
做完一个事情,比如处理表单提交,插入了一条记录.之后页面要流转到显示列表的页的时候,应该是一个 redirect,而不是forward.
struts1 的forward 是可以设置的, 好象是 redirect=true,或着是 type=redirect ,具体我忘了.好久没用了.
设置了就自动是redirect了..
楼上,你没有看具体的应用环境,我的应用程序就是使用了struts1.2框架的。而struts又提供了解决这个重复提交的问题的机制。我不知道token适用于什么情况,反正我也没用过.不过我想它既然存在,应该有道理的吧.
重复提交是个经典的老问题了,但是似乎于struts无关吧?你自己直接写jsp,或是servlet,不是照样存在这个问题吗?
这是个对MVC的理解的问题.
做完一个事情,比如处理表单提交,插入了一条记录.之后页面要流转到显示列表的页的时候,应该是一个 redirect,而不是forward.
struts1 的forward 是可以设置的, 好象是 redirect=true,或着是 type=redirect ,具体我忘了.好久没用了.
设置了就自动是redirect了..
发表评论
-
TilesRequestProcessor - Tiles definition factory found for request processor ''
2011-11-03 15:39 2507TilesRequestProcessor - T ... -
struts开发细节关注
2009-09-22 16:09 1230一段时间不写代码,很多细节就忘了。为了使以后查找起来方面 ... -
Strus message指南
2008-07-24 09:58 1256struts message指南 http://www.lal ... -
org.apache.struts.util.RequestUtils.populate
2008-05-16 20:19 6301at org.apache.struts.util.Reque ... -
根据 JAR包 查看 struts 的版本
2008-03-05 14:51 3494http://www.jguru.com/faq/view.j ... -
struts token
2008-03-05 08:48 1337http://blog.f12.no/wp/2004/08/3 ... -
struts l标签
2008-02-29 10:18 1075equal http://www.roseindia.net/ ... -
避免重复提交 资源 struts
2007-11-16 10:22 1862[size=18]原文:http://www.kpwang.c ... -
struts中直接得到request中信息
2007-06-21 17:24 1605Enumeration e = request.getPara ... -
入門 10 - Map-backed ActionForm
2007-06-12 14:55 1398入門 10 - Map-backed ActionForm ... -
struts
2007-05-29 12:23 1243有这种情况:如果是在A页面中用window.open弹出一个窗 ... -
Struts 中 html:options 的使用
2007-05-28 12:00 2297摘自:http://java.chinaitlab.com/S ... -
iterate
2007-05-23 09:18 1262<table width="100%" ... -
相对页面路径,相对项目路径
2007-05-15 18:29 1709注意 (1)这样写:则点击链接时,是从服务器的根目录进行的链接 ...
相关推荐
在Struts2中,防止重复提交是一个重要的问题,因为它可能导致数据不一致性和服务器资源的浪费。本文将详细介绍如何在Struts2中解决这个问题,以及相关的技术概念。 首先,我们要理解Struts2中的拦截器(Interceptor...
为了避免刷新页面导致的重复提交,可以将结果视图的跳转类型设置为redirect,即将页面重定向到另一个视图,这样即使刷新也不会回退到原表单页面。除了直接使用redirect,还可以使用redirectAction,并在result中配置...
防止提交 在用struts2.0标签开发中,经常要使用form提交.在点击"提交"后,我们通常会弹出一个提示信息的页面,用户此时有可能会按f5刷新当前提交的action,从而将多个相同的数据保存到了后台数据库,并且...避免重复提交呢?
这样可以避免因刷新页面或重复提交导致的问题。 2. 操作状态管理(OWSM,Operation Status Management): Struts2的OWSM插件提供了一种管理用户操作状态的方法,它可以跟踪用户的请求状态,对重复请求进行拦截。...
下面将详细讲解Struts2令牌解决重复提交问题的过程: 1. **生成令牌**:在Action中,使用`TokenAwareActionSupport`作为基类,这个类实现了`TokenSessionStore`接口,可以方便地获取和验证令牌。在表单展示之前,...
### Struts Token机制防止页面刷新及重复提交 在Web应用开发过程中,特别是在使用MVC框架如Apache Struts进行开发时,防止表单重复提交是一个重要的安全措施。表单重复提交通常发生在用户点击“提交”按钮后,由于...
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
在Web应用中,用户点击提交按钮后,如果网络延迟或刷新页面,同一个请求可能被发送多次。Struts框架默认情况下不会阻止这种行为,因此需要我们自己添加防护机制。 TokenFilter是Struts中用来防止重复提交的一种常见...
1. **表单重复提交问题**:当用户在提交表单时,由于网络延迟或用户误操作,可能会导致同一个表单被多次提交。例如,在购物网站上,用户可能因点击按钮太快而无意中购买了多份商品。 2. **Struts2框架**:Struts2是...
Struts Token机制是一种防止表单重复提交的有效策略,尤其在处理关键操作时,如金融交易或数据修改,防止用户意外或恶意多次点击提交按钮导致的数据重复性问题。下面将详细介绍Struts Token的工作原理、实现方式及其...
本文将详细介绍如何在Struts框架中利用Token机制来避免重复提交问题。 #### 一、什么是重复提交问题? 重复提交问题通常发生在用户点击“提交”按钮后网络延迟导致页面加载缓慢的情况下,用户可能会多次点击提交...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用...综上所述,Struts2的Token机制是防止Web应用中重复提交的有效工具,通过合理的配置和编程,可以为用户的操作提供更安全的环境。
表单重复提交可能发生在用户点击提交按钮后,由于网络延迟或刷新页面等原因,导致请求被多次发送到服务器。如果不加以控制,可能会导致同一份数据被处理多次,从而对数据库造成不必要的影响。 二、Token机制的原理 ...
特别是在一些涉及敏感操作如订单提交、支付确认等场景下,避免重复提交尤为重要。Struts框架作为Java Web应用开发的经典框架之一,提供了一套成熟的解决方案来处理这个问题——即所谓的令牌(token)机制。 #### ...
- **页面跳转(Redirect After Post)**:处理完请求后,使用`redirect`或`redirectAction`结果,将用户重定向到新的URL,避免回退按钮导致的重复提交。 4. **Struts2配置** 对于以上功能的实现,Struts2的配置...
在J2EE框架中,开发过程中常常会遇到一些与用户交互相关的技术问题,如重复提交、重复刷新以及防止用户后退导致的数据不一致。这些问题在实际应用中可能会对系统的稳定性和数据完整性造成影响,因此需要采取相应的...
本节主要关注Struts在处理两个关键问题上的高级应用:防止重复提交和文件上传组件的使用。 **一、解决重复提交** 在Web应用程序中,重复提交是一个常见的问题,可能导致数据不一致或服务过载。Struts通过几种策略...