1. 程式人生 > >重定向(response)與轉發(request)

重定向(response)與轉發(request)

重定向

1.狀態碼:302 2.響應頭:‘location’代表重定向的地址 例: response.setatus(302); response.setHeader("location","/web/servlet2"); 釋:進入“servlet1”,他會自動跳轉到“servlet2”。 執行過程:首先進入“servlet1”他會告知瀏覽器需要跳轉到“servlet2”,所以他會再次訪問“servlet2”,不過訪問之前他會先返回上一個頁面,且url位址列的值會變。 * response.sendRedirect("/web/servlet2"); //同上面的功能一樣,這是封裝好的方法(重定向的方法)
重定向的特點: 1.url位址列的值會變,變成我們所填的地址(/web/servlet2)。 2.不會攜帶request過去 3.是經過兩次訪問

轉發

例: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.url位址列不會變 2.會攜帶request過去 3.是經過一次訪問
---------------------------------------------------------------------------------------------------------- *轉發與重定向的區別: 1.重定向兩次請求,轉發一次請求 2.重定向位址列的地址變化,轉發不變 3.重定向可以訪問外部網站,轉發只能訪問內部資源 4.轉發的效能要優於重定向