我正在写一个程序,但我遇到一个问题: 当我刷新jsp页面时,系统会自动重新提交整个页面, 我不知道如何避免它, 有人能帮我吗 ? 以下是问题的解释 单击表单上的“提交”按钮会向We
当我刷新jsp页面时,系统会自动重新提交整个页面,
我不知道如何避免它,
有人能帮我吗 ? 以下是问题的解释
单击表单上的“提交”按钮会向Web服务器发送一个请求,该请求包括在表单上输入的所有数据.不仅URL,而且表单数据是请求的一部分,并且该请求被浏览器记住.如果用户点击“刷新”,则浏览器重复该请求,再次发送相同的URL并将数据格式复制到Web服务器.
但是,表单可以通过两种不同的方式提交,即GET或POST,具体取决于“form”标签的“method”属性.有一个约定,GET请求没有副作用;它只获取数据,但不对数据库进行任何更改.另一方面,如果请求更改数据,则应始终使用POST请求.正如我所说,这些只是惯例,它们之间没有很大的技术差异,但是一个非常重要的区别是浏览器会警告用户,如果他们尝试重复POST,点击“刷新”将弹出一个对话框警告用户这可能导致重复操作,并确认他们真的想重新提交.浏览器在刷新GET请求时不显示此确认.
您的表单是否使用GET方法,由@mk怀疑?如果是这样,将其更改为POST是最简单的解决方案,因为这至少意味着用户在尝试刷新时会被警告.
但是更好的解决方案是由@cletus建议的POST REDIRECT GET成语.这将数据库更新(POST)和视图(GET)分为两个操作.点击浏览器刷新,然后只重复GET,它没有副作用.