當處理器對請求處理完畢后,向其它資源進行跳轉時,有兩種跳轉方式:請求轉發與重 定向。而根據所要跳轉的資源類型,又可分為兩類:跳轉到頁面與跳轉到其它處理器。
注意,對于請求轉發的頁面,可以是WEB-INF中頁面;而重定向的頁面,是不能為WEB-INF 中頁的。因為重定向相當于用戶再次發出一次請求,而用戶是不能直接訪問 WEB-INF 中資源的。
SpringMVC 框架把原來 Servlet 中的請求轉發和重定向操作進行了封裝?,F在可以使用簡單的方式實現轉發和重定向。
forward:表示轉發,實現request.getRequestDispatcher("xx.jsp").forward()
redirect: 表示重定向,實現 response.sendRedirect("xxx.jsp")
forword 和 redirect 根據他們的目標,可以分為頁面和其他處理器。
處理器方法返回 ModelAndView 時,需在 setViewName()指定的視圖前添加 forward:,且此時的視圖不再與視圖解析器一同工作,這樣可以在配置了解析器時指定不同位置的視圖。視圖頁面必須寫出相對于項目根的路徑。forward 操作不需要視圖解析器。
處理器方法返回 String,在視圖路徑前面加入 forward: ,轉發到視圖頁面。
轉發到其他處理器的格式:forward:xxx.do
發起請求的 jsp
處理器方法:
show.jsp
在處理器方法返回的視圖字符串的前面添加 redirect:,則可實現重定向跳轉。
當重定向到目標資源時,若需要向下傳遞參數值,除了可以直接通過請求 URL 攜帶參數,通過 HttpSession 攜帶參數。
處理器方法定義:
some.jsp 定義,使用 param 對象獲取請求參數
重定向操作,使用 get 方式傳遞參數
處理器方法定義:
處理器定義:
訪問請求地址:
控制臺輸出: