这是我的表单将数据发布到 servlet 的场景,servlet 作为回报对 db 进行更改并将对象附加到请求属性并转发到 JSP 页面。
现在的问题是,如果单击 JSP 上的刷新按钮,则流程会循环返回,并且由于它是转发,因此 servlet 重新输入数据。我实际上可以通过重定向而不是从 servlet 转发到 jsp 页面并将对象作为属性附加到会话而不是请求来解决这个问题。
但我想知道是否有更好的方法来做到这一点?
我不想存储我在会话中遇到的所有内容,有没有办法知道这是否是一个刷新事件?
可以使用 发布数据GET or POST。如果GET方法被刷新,which is idempotent,browser automatically makes request to the server。
但是,如果方法是POST, which is non-idempotent, the browser will raise a popup asking the user to really post the data and this may repeat the operation again.
如果您使用的是 GET,那么我建议将其更改为 POST。
但最好的解决方案是 POST + REDIRECT + GET。