为什么一刷新就会提交表单??????

是风啊a 2009-11-03 05:22:05

<action path="/texta/textup"
name="diary"
type="com.action.dao.InDiary"
validate="false"
scope="request">
<forward name="diaryok" path="/texta/showall.do" />

一个JSP页:为增加一条数据的页,点击后执行/texta/textup.do
成功后转向/texta/showall.do,再成功后转向一个JSP页。
都成功后,ie地址栏还是显示为http://..../texta/textup.do
在这个显示数据列表中刷新的话会再次提交一条相同的数据??不知道是怎么回事?
...全文
357 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
forward是提交请求了也就是重定向,redirect是告诉服务器重新请求地址。
传奇 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 dickli1986 的回复:]
防止重复提交:
1、可以自己判断一下请求参数。
2、不要用forward,用重定向redirect。
3、使用领牌

[/Quote]
这个可以。
dickli1986 2009-11-04
  • 打赏
  • 举报
回复
防止重复提交:
1、可以自己判断一下请求参数。
2、不要用forward,用重定向redirect。
3、使用领牌
lzh_me 2009-11-04
  • 打赏
  • 举报
回复
up
huisui1234 2009-11-04
  • 打赏
  • 举报
回复
请使用请求重定向,或者把页面的刷新禁掉然后按钮点过一次后就置灰,或者使用安全令牌.防止重复提交的方法还是比较多的,你可以GOOGLE一下.
编程小妞儿 2009-11-04
  • 打赏
  • 举报
回复
你跳到添加数据的页面了,然后刷新一下就会提交一下,这种情况,应该这样解决:在提交页做一个跳转,把数据插入库里,就跳转回来,这样就不会出现你说的这种情况了。
yudongming 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 youjianbo_han_87 的回复:]
如果需要避免的话,配置个 filter,在里面判断下
[/Quote]
能举个例子吗?新手学习中,谢谢
jy03029760 2009-11-04
  • 打赏
  • 举报
回复
ddd
是风啊a 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 javaors 的回复:]
你的action类里面有没有findforward("diaryok")?跳转成功后,怎么会刷新?
[/Quote]

当然有findforward了,没有ACTION怎么能跳转呢,关键是跳转后地址栏没变???
为什么??用GET也是一样,成功显示后,刷新还是增加。。。
过程:jsp页增加数据---->action.do成功后findforward跳转--->action.do成功后跳转-->jsp显示
全部可以完成。。。但地址栏不变。。。
andyiouv1 2009-11-04
  • 打赏
  • 举报
回复
你都。do了当然要执行了
xiaochengfu1 2009-11-04
  • 打赏
  • 举报
回复
你没用重定向
kky2010_110 2009-11-04
  • 打赏
  • 举报
回复
<action path="/login/login" type="com.cn.action.LoginAction"
name="formBean" attribute="loginForm" parameter="login"
validate="false">
<forward name="list" path="/admin/listNews.do"
redirect="true">
</forward>
</action>
添加redirect="true"
louisgarcia 2009-11-04
  • 打赏
  • 举报
回复
楼上几位乱说,误导别人
刷新是重复上次请求,你上次是提交表单,刷新当然提交表单咯,要是你上次操作不是提交表单呢
chongan_wang 2009-11-04
  • 打赏
  • 举报
回复
采用struts防重复提交令牌机制就可以了
badboy_xjg 2009-11-04
  • 打赏
  • 举报
回复
ddddddddddddddddd
  • 打赏
  • 举报
回复
用重定向redirect或者 使用Struts领牌机制
liangwansheng 2009-11-04
  • 打赏
  • 举报
回复
转发 和 重定项。
dickli1986 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 suyangxyz 的回复:]
forward是提交请求了也就是重定向,redirect是告诉服务器重新请求地址。
[/Quote]
forward是将原请求重新提交,redirect是重新发送另一个请求,与原请求不一样,一般来说,重复提交问题使用redirect可以解决的
liu163710 2009-11-04
  • 打赏
  • 举报
回复
你可以 禁止他刷新
function document.onkeydown(){
if(event.keyCode==116){
window.alert("禁止刷新");
}
}
这是键盘上禁止刷新

或者添加数据的时候 在action里判断他 是否重复 重复就报错就可以了 就不会添加到服务器了
javaors 2009-11-03
  • 打赏
  • 举报
回复
http://..../texta/textup.do 和<s:a href="textup.do">的效果是一样的,当然会提交
加载更多回复(16)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧