JavaWeb學習——頁面跳轉方式
摘要:本文主要學習了請求轉發和響應重定向,以及兩者之間的區別。
請求轉發
相關方法
使用HttpServletRequest對象的 getRequestDispatcher(String path) 方法獲取RequestDispatcher類型的轉發器。
使用RequestDispatcher轉發器的 forward(ServletRequest request, ServletResponse response) 方法進行轉發。
實例
1 @Override 2 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 3 req.getRequestDispatcher("/test.html").forward(req, resp); 4 }
響應重定向
相關方法
使用HttpServletResponse對象的 sendRedirect(String location) 方法進行重定向到其他資源。
實例
1 @Override 2 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 3 resp.sendRedirect("/HelloWorld/test.html"); 4 }
請求轉發和響應重定向的區別
發送次數
轉發只發送一次請求。
重定向發送兩次請求。
地址欄變化
轉發地址欄沒有變化,執行刷新相當於重新發送信息到原頁面。
重定向地址欄有變化,執行刷新將發給新頁面。
訪問限制
轉發可以訪問WEB-INF下的資源。
重定向不可以訪問WEB-INF下的資源。
發生位置
轉發發生在服務器內部。
重定向發生在瀏覽器端。
跳轉地址
轉發不能跳轉到本應用外的URL。
重定向可以跳轉到任意URL。
訪問屬性
通過 request.setAttribute(); 設置的屬性,如果讓下一個頁面訪問,只能通過轉發。
通過 session.setAttribute(); 設置的屬性,如果讓下一個頁面訪問,轉發和重定向都可以,建議使用轉發。