spring mvc處理方法支持以下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void。下面將對具體的一一進行說明:spring
1、ModelAndViewsession
經過ModelAndView構造方法能夠指定返回的頁面名稱,也能夠經過setViewName()方法跳轉到指定的頁面 ,
使用addObject()設置須要返回的值,addObject()有幾個不一樣參數的方法,能夠默認和指定返回對象的名字。
調用addObject()方法將值設置到一個名爲ModelMap的類屬性,ModelMap是LinkedHashMap的子類,
具體請看類。mvc
2、
Model 是一個接口, 其實現類爲ExtendedModelMap,繼承了ModelMap類。
Map app
在jsp頁面中可直經過${key1}得到到值, map.put()至關於request.setAttribute方法。jsp
對應的邏輯視圖名爲「show」,URL= 請求路徑 +suffix後綴組成。url
本例返回url = /demo2/show.jsp
寫例子時發現,key值包括 - . 時會有問題.
View 能夠返回pdf excel等,暫時沒詳細瞭解。excel
3、注意:若是方法聲明瞭註解@ResponseBody ,則會直接將返回值輸出到頁面。
例如:對象
Java代碼 繼承
上面的結果會將文本"Hello World "直接寫到http響應流,返回的路徑爲訪問的url路徑。接口
4、String 指定返回的視圖頁面名稱,結合設置的返回地址路徑加上頁面名稱後綴便可訪問到。
Java代碼
對應的邏輯視圖名爲「center」,URL= prefix前綴(/)+視圖名稱 +suffix後綴組成(.jsp)。
本例返回url = /center.jsp
5、void 若是返回值爲空,則響應的視圖頁面爲對應爲訪問地址
Java代碼
此例對應的邏輯視圖名爲"welcome"。返回的路徑就是請求的路徑,如本例是 = /welcome.jsp
小結:
1.使用 String 做爲請求處理方法的返回值類型是比較通用的方法,這樣返回的邏輯視圖名不會和請求 URL 綁定,具備很大的靈活性,而模型數據又能夠經過 ModelMap 控制。
2.使用void,map,Model 時,返回對應的邏輯視圖名稱真實url爲:prefix前綴+視圖名稱 +suffix後綴組成。
3.使用String,ModelAndView返回視圖名稱能夠不受請求的url綁定,ModelAndView能夠設置返回的視圖名稱。
6、Model model,HttpServletRequest request, ModelMap map聲明變量 request.getSession().setAttribute("test", "haiwei2Session"); request.setAttribute("test", "haiwei1request"); map.addAttribute("test", "haiweiModelMap"); model.addAttribute("test", "haiweiModel"); 我經過${test}這個方式取值,優先取Model和ModelMap的,Model和ModelMap是同一個東西,誰最後賦值的就取誰的,而後是request,最後是從session中獲取