繁体   English   中英

JSP中的IE后退按钮问题

[英]IE Back Button issue in jsp

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

因此,您实际上不是在重定向请求,而只是POST (和转发)请求。 每当尝试从浏览器历史记录中获取未缓存的POST请求时,即会获得此错误页面。

实际上需要 POST 之后 重定向请求。 这称为POST-Redirect-GET模式 假设您的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中的querystring / pathinfo解决此问题。

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

看一下“ 邮寄后重定向”模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM