HTTP 狀態消息
677
2022-05-30
對于控制器內的方法間的調用,有轉發和重定向兩種。
@RequestMapping("/login")
public String login(Userinfo u,HttpSession s){
System.out.println("login:"+u.getUsername()+","+u.getPwd());
s.setAttribute("u",u);//放到session里面;
return "redirect:list";//相當于從客戶端再次發送請求
//return "forward:list";//轉發,是服務器頁面轉了一下
}
@RequestMapping("/list")
public String list(Userinfo u,HttpSession s){
System.out.println(s.getAttribute("u"));
return "list";//返回頁面
}
轉發對于數據Userinfo來說,可以在list頁面顯示出來,從登陸頁面到list頁面,而如果是重定向,則不能有數據的傳遞。
我是重定向、或轉發過來的頁面.${u.username },${u.pwd }
請求重定向與請求轉發的比較,HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以讓瀏覽器獲得另外一個URL所指向的資源,但兩者的內部運行機制有很大的區別。
1.RequestDispatcher.forward方法只能將請求轉發給同一個Web應用中的組件,HttpServletResponse.sendRedirect不僅可以重定向到當前應用程序的其他資源,還可以重定向到同一個站點上的其他應用程序的資源,甚至是使用絕對URL重定向到其他站點的資源。對于sendRedirect如果傳遞的URL以”/”開頭,他是相對于整個Web站點的根目錄;對于forward如果傳遞的URL以”/”開頭,它是相對于當前Web應用程序的根目錄。
2.sendRedirect對瀏覽器做出的響應是重新發出對另外一個URL的訪問請求,forward在服務器端內部將請求轉發給另外一個資源,瀏覽器只知道發出了請求并得到了響應結果
3.forward的調用者與被調用者之間共享相同的request對象和response對象,他們屬于同一個訪問請求和響應過程;sendRedirect的調用者與被調用者使用各自的request和response對象,屬于兩個獨立的訪問請求和響應過程
請求重定向以redirect:開頭,請求轉發以forward:開頭;
Spring web前端
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。