2012-06-07 18 views
1

以下是我的表单将数据发布到一个servlet的场景,该servlet作为回报更改数据库并将对象附加到请求属性并转发到JSP页面。使用REFRESH阻止多次发布

现在的问题是,如果单击JSP上的刷新按钮,则进程将回退,并且因为它是前向的,所以servlet会重新输入数据。我实际上可以通过重定向来解决此问题,而不是从servlet转发到jsp页面,并将该对象作为属性附加到会话而不是请求。

但我想知道是否有更好的方法来做到这一点?

我不想存储我在会话中遇到的所有内容,并且有办法知道这是否是刷新事件?

回答

0

数据可以使用GET or POST发布。如果GET方法被刷新,则which is idempotentbrowser 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。