1.請求轉發
特點:1、一次請求,一次響應
2、請求轉發到的資源中可以直接擷取請求攜帶的資料
3、浏覽器位址欄顯示使用者所送出的請求路徑
4、隻能跳轉到目前應用的資源中
forward()與include()方法:
這兩個方法對請求來說是一樣的,不同在響應對象上。
輸出流開啟時間不同:forward()是在請求轉發後開啟的;include()是在請求轉發前開啟的。
對用戶端的響應不同 : forward()有請求轉發後的Servlet給出的;include()是在請求轉發前的Servlet給出的。
代碼:
request.getRequestDispatcher("index.jsp").forward(request, response);
request.getRequestDispatcher("index.jsp").include(request, response);
2.重定向
特點:1、兩次請求,兩次響應(使用者看不到)
2、請求轉發到的資源中不能直接擷取請求攜帶的資料
3、浏覽器位址欄顯示的為重定向的請求路徑(防止表單重複送出)
4、不僅可以跳轉到目前應用的資源中,也可以跳轉到其他應用中
response.sendRedirect("http://www.baidu.com");
//攜帶資料
response.sendRedirect("register2?pname="+name);
3.請求轉發與重定向的使用選擇
1、需要跳轉到其他應用,使用重定向
2、處理表單資料的Servlet要跳轉到其他的Servlet,需要重定向
3、對請求處理的Servlet的執行需要消耗大量的伺服器資源,執行完後需要重定向
4、其他情況一般使用請求轉發