簡體   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