spring处理方法返回值的类型
spring mvc處理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void。下面將對具體的一一進行說明:
ModeAndView:
@RequestMapping("/show1")public ModelAndView show1(HttpServletRequest request,HttpServletResponse response) throws Exception {ModelAndView mav = new ModelAndView("/demo2/show");mav.addObject("account", "account -1");return mav;}通過ModelAndView構造方法可以指定返回的頁面名稱,也可以通過setViewName()方法跳轉到指定的頁面 , 使用addObject()設置需要返回的值,addObject()有幾個不同參數的方法,可以默認和指定返回對象的名字。
Model:
@RequestMapping("/demo2/show")public Map<String, String> getMap() {Map<String, String> map = new HashMap<String, String>();map.put("key1", "value-1");map.put("key2", "value-2");return map;}Map:
@RequestMapping("/demo2/show")public Map<String, String> getMap() {Map<String, String> map = new HashMap<String, String>();map.put("key1", "value-1");map.put("key2", "value-2");return map;}在jsp頁面中可直通過${key1}獲得到值, map.put()相當于request.setAttribute方法。
String:
@RequestMapping(value = "/something", method = RequestMethod.GET) @ResponseBody public String helloWorld() { return "Hello World"; }String 指定返回的視圖頁面名稱,結合設置的返回地址路徑加上頁面名稱后綴即可訪問到。?
注意:如果方法聲明了注解@ResponseBody ,則會直接將返回值輸出到頁面。
Void:
@RequestMapping("/welcome") public void welcomeHandler() {}如果返回值為空,則響應的視圖頁面對應為訪問地址。
以上內容來自:http://flyer2010.iteye.com/blog/1294400
?
Spring Web MVC 提供Model、Map或ModelMap讓我們能去暴露渲染視圖需要的模型數據。
@RequestMapping(value = "/model") public String createUser(Model model, Map model2, ModelMap model3) {model.addAttribute("a", "a");model2.put("b", "b");model3.put("c", "c");System.out.println(model == model2);System.out.println(model2 == model3);return "success";}雖然此處注入的是三個不同的類型(Model model, Map model2, ModelMap model3),但三者是同一個對象,如圖所示:
AnnotationMethodHandlerAdapter和RequestMappingHandlerAdapter將使用BindingAwareModelMap作為模型對象的實現,即此處我們的形參(Model model, Map model2, ModelMap model3)都是同一個BindingAwareModelMap實例。
此處還有一點需要我們注意:
@RequestMapping(value = "/mergeModel") public ModelAndView mergeModel(Model model) {model.addAttribute("a", "a");//①添加模型數據ModelAndView mv = new ModelAndView("success");mv.addObject("a", "update");//②在視圖渲染之前更新③處同名模型數據model.addAttribute("a", "new");//③修改①處同名模型數據//視圖頁面的a將顯示為"update" 而不是"new"return mv; }從代碼中我們可以總結出功能處理方法的返回值中的模型數據(如ModelAndView)會 合并 功能處理方法形式參數中的模型數據(如Model),但如果兩者之間有同名的,返回值中的模型數據會覆蓋形式參數中的模型數據。
以上內容來自:http://jinnianshilongnian.iteye.com/blog/1698916
轉載于:https://www.cnblogs.com/luoh/p/4315616.html
總結
以上是生活随笔為你收集整理的spring处理方法返回值的类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【web必知必会】—— 图解HTTP(下
- 下一篇: C++指针初始化总结