一、請求轉發(forward)
也叫作直接轉發方式,客戶端和瀏覽器只能發出一次請求,Servlet、HTML、JSP或者其他資源,由第二個信息資源響應該請求,在請求對象request中,保存的對象對於每個信息資源是共享的
語法:request.getRequestDispatcher(path).forward(request,response);
特點:(1)地址欄中的地址不會改變
(2)只有一個·請求
(3)資源是共享的,也就是說兩個servlet可以共享請求資源,通過request.setAttribute(String var1,Object var2)設置共享數據資源,在通過request。getAttribute(String var1)來獲取傳遞的資源
(4)可以訪問WEB-INF中的資源:WEB-INF 文件夾是 Java Web 應用的默認安全目錄,即客戶端無法直接訪問,只有服務端可以訪問的目錄。
如果想在頁面中直接訪問其中的文件,必須通過web.xml文件對要訪問的文件進行相應映射才能訪問。
(5)請求轉發不能跨域訪問:跨域是指域名,協議,端口均相同
二、URL重定向(redirect)
又叫間接轉發方式,實際是兩次Http請求,服務器端在響應第一次請求的時候,讓瀏覽器再向另一個URL發送請求,從而達到轉發的目的
語法:response.sendRedirect(String location);
特點:(1)地址欄中的地址會發生改變,通常看做客戶端跳轉
(2)有兩個請求
(3)在兩個servlet中不可以共享請求中的資源
(4)最終的響應有第二個servlet來決定,與第一個servlet沒有關係
(5)不可以訪問WEB-INF中的資源
(6)請求轉發能跨域訪問