你总是在发布后重定向吗?如果是,您如何管理它?
假设您正在提交一个表单,该表单会影响您的数据库(添加记录/删除记录/更新它们),这就是您的请求的样子:
POST /application/action=update
现在,假设您已完成更新,因此您希望将用户带到主页。
Response.sendRedirect /application/action=home
这非常有效。用户在POST后被发送重定向,因此即使用户尝试通过按F5刷新页面,您也很好。但是,如果您这样做,这将不起作用:
requestDispatcher.forward(/application/action=home)
鉴于有一种情况,您必须在完成更新后显示不同类型的错误/成功消息,因此您很可能在POST后进行转发。在这种情况下,如何避免更新操作发生两次?
我发现相当有趣的是,许多安全网站(银行)/支付网关倾向于通过在屏幕上放置文本来通知用户,例如“请不要按后退/刷新按钮”。
难道没有更好的方法来处理这个问题吗?除了要求用户不要按下这些按钮?当我上次检查时,有一种叫做“垂直响应缓存”的东西。一个筛选器,它将标识会话中请求的唯一性,并在请求重复时尝试发送缓存的响应。有没有更简单的方法来解决这个经典问题?
以下是我正在谈论的垂直响应缓存解决方案的链接:http://www.fingo.info/en/articles/_1.html。但是,我不确定这到底有多好。