如何取消刷新页面时弹出的"重试"对话框?

nisersent 2008-08-25 10:26:43
找了好多类似的问题都没有我想要的答案,请大家看清楚再回答.
比如说,登录过程中,成功之后转向另一个页面success.jsp,
这时,如果刷新该页面就会出现"重试"对话框,如何不让它出现呢?
有人说用GET请求,抱歉,用户登录不可能用GET请求,数据不安全...
...全文
1121 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
zy_pub 2008-08-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sd5816690 的回复:]
只要有 post 请求到某个页面,刷新该页面就会出现“重试”的现象

解决办法:
请求页向中间页(或servlet)发送请求,中间页对请求进行处理,把结果存入 session
然后用 response.sendRedirect(...) 跳转到success.jsp
这时候刷新success.jsp ,就不会出现“重试”了

但这个方法很消耗服务器端内存,最好及时清空 session
[/Quote]


对于一个登陆来讲 这样做会不会太麻烦了??
wpabbs 2008-08-31
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 realcbb 的回复:]
引用 26 楼 herowzz 的回复:
用redirect或者令牌

<forward name="..." path="/...jsp" redirect="true" />


token基本原理
第一次提交,生成同步令牌 写入到session,同时把同步令牌写入到返回页中;
再次提交,比较同步令牌,如果相同,重复上面动作, 不同则重复提交了。
if (!isTokenValid(request)) {
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error.transaction.to…
[/Quote]


此方法就能解决问题。
iwillrockyou 2008-08-31
  • 打赏
  • 举报
回复
学习~
nisersent 2008-08-31
  • 打赏
  • 举报
回复
用form.submit()就不会出现问题了吗?我回去试试。。。
skming美女相册 2008-08-30
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 herowzz 的回复:]
用redirect或者令牌

<forward name="..." path="/...jsp" redirect="true" />


token基本原理
第一次提交,生成同步令牌 写入到session,同时把同步令牌写入到返回页中;
再次提交,比较同步令牌,如果相同,重复上面动作, 不同则重复提交了。
if (!isTokenValid(request)) {
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error.transaction.token"_));
}
resetToken(re…
[/Quote]


方法可行.
或者,你可以设置页面立即过期.返回就出现超时.那也是可以的.
  • 打赏
  • 举报
回复
我都是用window.location.href="......?参数"来解决。如果要求保存状态,就在所跳的网页后边加上?状态的参数。
什么都不能 2008-08-30
  • 打赏
  • 举报
回复
表单重复提交本来就有问题
ncowboy 2008-08-30
  • 打赏
  • 举报
回复
“重试”的原因是为了防止再次提交POST数据而导致的重复。理解了找个道理就好做了多了。
jin75hong 2008-08-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jacklondon 的回复:]
"重试"是 HTML 标准中规定的,如果要去掉,有以下方法:
1. 建议 HTML 标准委员会去掉"重试",等待他们更改标准
2. 自己开发一个浏览器,不遵守HTML 标准,不"重试"
3. 告诉用户,这个页面不能刷新。

我一般都是用方法 3 的。
[/Quote]
realcbb 2008-08-29
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 herowzz 的回复:]
用redirect或者令牌

<forward name="..." path="/...jsp" redirect="true" />


token基本原理
第一次提交,生成同步令牌 写入到session,同时把同步令牌写入到返回页中;
再次提交,比较同步令牌,如果相同,重复上面动作, 不同则重复提交了。
if (!isTokenValid(request)) {
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error.transaction.token"_));
}
resetToken(re…
[/Quote]
herowzz 2008-08-29
  • 打赏
  • 举报
回复
用redirect或者令牌

<forward name="..." path="/...jsp" redirect="true" />


token基本原理
第一次提交,生成同步令牌 写入到session,同时把同步令牌写入到返回页中;
再次提交,比较同步令牌,如果相同,重复上面动作, 不同则重复提交了。
if (!isTokenValid(request)) {
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error.transaction.token"_));
}
resetToken(request);
贾米森 2008-08-29
  • 打赏
  • 举报
回复
本人也建意用AJAX
zhuxr2003 2008-08-29
  • 打赏
  • 举报
回复
应该是这样,比如登陆页面是login.do,post后回到login.do,如果是struts,可以用ActionMessages返回校验参数,如果登陆成功,就用location.href转向.这样就可以避免刷新的问题.
zou_wei_forever 2008-08-29
  • 打赏
  • 举报
回复
mark!
siriuscor 2008-08-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jacklondon 的回复:]
"重试"是 HTML 标准中规定的,如果要去掉,有以下方法:
1. 建议 HTML 标准委员会去掉"重试",等待他们更改标准
2. 自己开发一个浏览器,不遵守HTML 标准,不"重试"
3. 告诉用户,这个页面不能刷新。

我一般都是用方法 3 的。
[/Quote]

lijtom 2008-08-29
  • 打赏
  • 举报
回复
用form.submit提交,用form传值就行了,你那个是在。。。?+value这样别人肯定能看见你的值。你在后台用form.XXX获得值就行了。
笨沙发 2008-08-29
  • 打赏
  • 举报
回复
跳转这个页面前设置一个SESSION,当处理后清空这个SESSION,到这个页面在判断是否存在这个SESSION,问题就解决了
nisersent 2008-08-28
  • 打赏
  • 举报
回复
说了那么多,好象都没用。。。。
easyroom 2008-08-28
  • 打赏
  • 举报
回复
防止重复提交吗,几乎所有的web框架都解决了这个问题,原理就是7楼说的,先处理请求然后302跳转
如果success.jsp要显示点东西又不想弄脏session直接放到url里面吧
heavenfeng 2008-08-26
  • 打赏
  • 举报
回复
action跳转和重定向的区别,
加载更多回复(16)

81,092

社区成员

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

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