淺談Springmvc中的頁面跳轉(zhuǎn)問題
SpringMvc跳轉(zhuǎn)問題
SpringMvc的Controller每次處理完數(shù)據(jù)后都會返回一個邏輯視圖(view)和模型(model)
所以我們會看到原生的Controller是返回一個ModelAndView(內(nèi)部包含了view和model)。
正常情況下(除非被@ModelAttribute注解了的方法),否則最終都會返回ModelAndView。
當(dāng)然有時候一個功能處理方法不一定要返回一個邏輯視圖,也可以重定向到另一個功能方法
服務(wù)器內(nèi)部轉(zhuǎn)發(fā)到一個邏輯視圖或者另一個功能方法。
---
SpringMvc的強大之處在于它封裝了Servlet大量底層代碼,但是有沒有完全屏蔽用戶對ServletAPI
的使用。所以SpringMvc中頁面跳轉(zhuǎn)也是分為兩大類:
使用ServletAPI實現(xiàn)頁面跳轉(zhuǎn)
重定向方式:由于重定向的本質(zhì)是要求瀏覽器重新發(fā)送一個請求,SpringMvc里面的頁面一般是放到WEB-INF下,瀏覽器不可以直接訪問)
所以這里的重定向?qū)嵸|(zhì)是重定向到另一個功能方法。
服務(wù)器內(nèi)部請求轉(zhuǎn)發(fā):請求轉(zhuǎn)發(fā)為服務(wù)器內(nèi)部行為,所以可以直接跳轉(zhuǎn)訪問一個jsp頁面也可以跳轉(zhuǎn)到另一個功能處理方法。
```text
//使用原生的ServletApi進(jìn)行頁面跳轉(zhuǎn) @RequestMapping("/c") public String test(HttpServletResponse response, HttpServletRequest request) throws ServletException, IOException { System.out.println("testC"); //跳轉(zhuǎn)到服務(wù)器內(nèi)部的一個頁面 //request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request,response); //跳轉(zhuǎn)到服務(wù)器內(nèi)部的一個功能處理方法 //request.getRequestDispatcher("/dispather/b").forward(request,response); //重定向一個功能方法 response.sendRedirect(request.getContextPath()+"/dispather/b"); return null; }
使用SpringMvc的API實現(xiàn)頁面跳轉(zhuǎn)
直接返回邏輯視圖名
text @RequestMapping("/b") public String testB(){ System.out.println("testB"); //直接返回一個視圖 return "index"; }
返回自定義的ModelAndView:自定義ModelAndView時,可以重定向或請求轉(zhuǎn)發(fā)
```text
//Controller中使用ModelAndView進(jìn)行跳轉(zhuǎn)和重定向 @RequestMapping("/e") public ModelAndView testE(){ System.out.println("testE"); //跳轉(zhuǎn)到服務(wù)器內(nèi)部的一個頁面 //return "index"; //跳轉(zhuǎn)到服務(wù)器內(nèi)部的一個功能處理方法 //return new ModelAndView("forward:/dispather/b"); //重定向一個功能方法 return new ModelAndView("redirect:/dispather/b"); }
總結(jié)
以上就是本文關(guān)于淺談Springmvc中的頁面跳轉(zhuǎn)問題的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
參考:
相關(guān)文章
IDEA下載并大學(xué)生edu郵箱認(rèn)證免費使用教程(圖文)
這篇文章主要介紹了IDEA下載并大學(xué)生edu郵箱認(rèn)證免費使用教程(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Java 中函數(shù) Function 的使用和定義示例小結(jié)
這篇文章主要介紹了Java 中函數(shù) Function 的使用和定義小結(jié),本文通過實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-07-07并發(fā)編程之Java內(nèi)存模型volatile的內(nèi)存語義
這篇文章主要介紹了并發(fā)編程之Java內(nèi)存模型volatile的內(nèi)存語義,理解volatile特性的一個好辦法是把對volatile變量的單個讀/寫,看成是使用同一個鎖對單個讀/寫操作做了同步。下面我們一起進(jìn)入文章看看具體例子吧,需要的小伙伴可以參考下2021-11-11Spring框架中一個有用的小組件之Spring Retry組件詳解
Spring Retry 是從 Spring batch 中獨立出來的一個功能,主要實現(xiàn)了重試和熔斷,對于那些重試后不會改變結(jié)果,毫無意義的操作,不建議使用重試,今天通過本文給大家介紹Spring Retry組件詳解,感興趣的朋友一起看看吧2021-07-07