我有一个简单的 html 页面,目的是对写入数据库的实体进行更改。该页面有两种形式:
- GET:选择要更改的实体
- POST:处理对实体的更改并将其写入数据库
当执行 POST 操作时,我想再次显示相同的页面,此外我想保留 GET 操作设置的实体参数。目前我在 doPost 方法的末尾执行以下操作:
response.sendRedirect(path + "?entity=" + entityValue);
它工作得很好,但在阅读了 forward and sendRedirect 之间的差异之后我以为我必须使用 forward,但是那不会起作用,因为 doGet 方法不会像 sendRedirect 那样被执行。那么我的方法是否正确,还是应该以其他方式解决?
最佳答案
您的方法很棒。它使用 post-redirect-get模式,它有几个优点:
- 干净的 URL,可以添加书签,例如可以通过电子邮件发送
- 没有通过点击刷新按钮重新提交修改的风险
- 浏览器历史记录中的清晰导航
- get 和 post URL 之间的职责分离
所以一切保持原样。在这种情况下,转发是一个不如重定向的最佳解决方案。
关于java - SendRedirect 与 Java Servlet 中的转发用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10707136/