重定向(response)與轉發(request)
阿新 • • 發佈:2019-01-09
重定向
1.狀態碼:302 2.響應頭:‘location’代表重定向的地址 例: response.setatus(302); response.setHeader("location","/web/servlet2"); 釋:進入“servlet1”,他會自動跳轉到“servlet2”。 執行過程:首先進入“servlet1”他會告知瀏覽器需要跳轉到“servlet2”,所以他會再次訪問“servlet2”,不過訪問之前他會先返回上一個頁面,且url位址列的值會變。 * response.sendRedirect("/web/servlet2"); //同上面的功能一樣,這是封裝好的方法(重定向的方法)轉發
例:request.setAttribute("name","zhangsan"); RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet2"); dispatcher.forward(request, response);//執行轉發 釋:訪問“servlet1”會自動跳轉到“servlert2”,且“servlet2”能成功獲取“name”的值,url地址不發生變化。 執行過程:首先進入“servlet1”,他會告知瀏覽器需要跳轉到“servlet2”,所以他會再次訪問“servlert2”,但是他是直接從“servlet1”中跳到“servlet2”。 *request.getRequestDispatcher(轉發的地址).forward(request,response);---------------------------------------------------------------------------------------------------------- *轉發與重定向的區別: 1.重定向兩次請求,轉發一次請求 2.重定向位址列的地址變化,轉發不變 3.重定向可以訪問外部網站,轉發只能訪問內部資源 4.轉發的效能要優於重定向