我有问题,在刷新jsp之后。当我提交表单后调用refresh (F5)按钮时。每次调用刷新按钮后重复保存的数据。
发布于 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
发布于 2013-10-10 11:54:00
使用众所周知的PRG pattern。欲了解更多信息,请看这里:链接
或者更简单的解决方案是,在从Action class发送控件时添加一个request attribute,同时对特定的请求属性进行JSp检查,如果存在的话:将控件重定向到同一个JSp页面。
逻辑:解释:当重定向发生时,它向浏览器发出匿名请求而没有任何输出,然后浏览器向目标资源发出隐式请求。因此,在从浏览器重定向您的请求时,这就是您以前的request & response对象被销毁并生成一个新请求(隐式地使用浏览器)并由容器创建新请求对象的原因。因此,您以前的请求属性将不存在。意味着您以前的数据也将不存在。然后,从下一次开始,当您刷新JSP页面时,什么也不会发生。
https://stackoverflow.com/questions/16601887
复制相似问题