gpt4 book ai didi

java - jsp中的IE后退按钮问题

转载 作者:行者123 更新时间:2023-11-29 06:23:23 24 4
gpt4 key购买 nike

我在 test1.jsp 上有 2 个 jsp 页面 test1.jsp 和 test2.jsp 我正在发布一些数据,它将重定向到 test2.jsp。但是从 test2.jsp 如果我点击即浏览器后退按钮然后它显示 网页已过期 页面那么我应该如何继续在后退按钮点击时显示 test1.jsp?我在 IE 浏览器中遇到这个问题。

最佳答案

因此,您实际上并没有重定向请求,而只是POST(和转发)请求。每当您尝试从浏览器历史记录中获取非缓存的 POST 请求时,您就会收到此错误页面。

您需要实际上重定向请求POST之后。这称为 POST-Redirect-GET pattern .假设您的 Web 应用程序设计良好并且您正在使用 Servlet 来控制、预处理和后处理请求,那么您需要做的就是调用 HttpServletResponse#sendRedirect() 而不是 RequestDispatcher#forward():

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Postprocess request parameters here.

// Finally redirect POST request to a brand new GET request.
response.sendRedirect("result.jsp");
}

这样,POST 请求就不会被记录在浏览器历史记录中。按下后退按钮将不再获得 POST 请求,而是在它 之前调用的请求(即用于打开/查看带有表单的页面的请求)。

唯一需要注意的是,初始请求(包括其所有参数和属性)也将消失,因此您无法在结果页面中使用它们。如有必要,您可以通过在重定向 URL 中使用 session 范围或查询字符串/路径信息来解决此问题。

这个特殊的“问题”不是 MSIE 特有的。其他浏览器的行为相同,但它们只会给出一些不同的错误/警告消息。以后,在明确指出 MSIE 为根本原因之前,请使用不同的浏览器进行测试。

关于java - jsp中的IE后退按钮问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2072878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com