首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在struts1中刷新jsp页面后停止重新提交表单数据

如何在struts1中刷新jsp页面后停止重新提交表单数据
EN

Stack Overflow用户
提问于 2013-05-17 05:16:10
回答 2查看 3.2K关注 0票数 1

我有问题,在刷新jsp之后。当我提交表单后调用refresh (F5)按钮时。每次调用刷新按钮后重复保存的数据。

EN

回答 2

Stack Overflow用户

发布于 2013-05-17 06:54:33

1.为防止出现这种情况,请使用ajax选项进行提交。

2.在表单提交后使用重定向选项和重定向页面。

当您向服务器提交表单时发生了什么?

通过单击表单上的"submit“按钮,向web服务器发送一个请求,其中包括在表单上输入的所有数据。不仅URL而且表单数据都是请求的一部分,浏览器会记住这个请求。如果用户单击“刷新”,浏览器将重复请求,再次向web服务器发送相同的URL和表单数据。

表单可以通过两种方式提交,GET或POST.GET请求没有副作用;它只获取数据,但不以其他方式对database.In进行任何更改,如果请求更改数据,如插入、更新、删除操作,则应该是POST。

最重要的区别是浏览器会警告用户,如果他们试图重复点击“刷新”会弹出一个对话框警告用户,这可能会导致操作重复,并确认他们真的想重新提交。当刷新GET请求时,浏览器不会显示此确认。

如果您的表单使用GET方法,将其更改为POST是最简单的解决方案,因为这至少意味着用户在尝试刷新时会受到警告。

但是一个更好的解决方案是POST+REDIRECT+GET.For more http://en.wikipedia.org/wiki/Post/Redirect/Get

票数 2
EN

Stack Overflow用户

发布于 2013-10-10 11:54:00

使用众所周知的PRG pattern。欲了解更多信息,请看这里:链接

或者更简单的解决方案是,在从Action class发送控件时添加一个request attribute,同时对特定的请求属性进行JSp检查,如果存在的话:将控件重定向到同一个JSp页面。

逻辑:解释:当重定向发生时,它向浏览器发出匿名请求而没有任何输出,然后浏览器向目标资源发出隐式请求。因此,在从浏览器重定向您的请求时,这就是您以前的request & response对象被销毁并生成一个新请求(隐式地使用浏览器)并由容器创建新请求对象的原因。因此,您以前的请求属性将不存在。意味着您以前的数据也将不存在。然后,从下一次开始,当您刷新JSP页面时,什么也不会发生。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16601887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档