跳轉
1.使用request完成
2.跳轉的本質是在服務器內部把請求和響應進行轉發,轉發給下一個資源
3.如果request中有數據,在跳轉到的每一個資源中都可以拿到一個數據(從開始到結束只有一個request對象)
4.由於服務器跳轉是把請求和響應在服務器內部中來回轉發,所以瀏覽器的地址欄中的地址是不受影響的,所以始終還是第一次發出請求的地址
5.在設置跳轉的資源地址的時候,路徑的前面一般要加上/
例如 String path = "/a.html";
重定向
1.使用response完成
2.重定向的本質是把資源路徑通過響應返回給瀏覽器(通過響應頭信息),讓瀏覽器向這個新地址發送一個新請求
3.如果request中有數據,重定向后在新的資源中是拿不到這個數據的(重定向會發一個全新的請求,但是數據在上一個老的請求中)
4.由於重定向讓瀏覽器發出新的請求,所以瀏覽器地址欄中的地址會變成新請求的地址
5.在設置重定向的資源地址的時候,路徑的前面一般不加/
例如 String path = "a.html";
但是如果一定要加/的話,那么還需要額外加上一個項目名
例如 String path = "/web_test/a.html";
同時也可以動態獲取項目:req.getContextPath()
String path = req.getContextPath()+"/a.html";