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