Spring MVC數據響應處理詳解
1. 內置視圖解析器
Spring MVC 中的視圖解析器負責解析視圖,可以通過在配置文件中定義一個ViewResolver來配置視圖解析器,配置如下:
<!--默認的內置視圖解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--設置前綴--> <property name="prefix" value="/WEB-INF/templates"/> <!--設置後綴--> <property name="suffix" value=".html"/> </bean>
定義瞭一個id為viewResolver的視圖解析器,並設置瞭前綴後綴,這樣設置的好處就是簡化方法中定義的路徑。在訪問視圖解析器是就會自動的增加前綴和後綴。
2. 使用原生servlet的對象傳遞數據
HttpServletRequest:通過request對象獲取請求信息
控制器方法:
//使用servlet傳遞數據 @RequestMapping("/testServlet") public String testRequestByServletAPI(HttpServletRequest request){ request.setAttribute("test","hello,servlet"); return "success"; }
3. 使用ModelAndView對象傳輸數據
當使用modelAndView對象的時候,返回值的類型也必須是ModelAndView,可以將要跳轉的頁面設置成view的名稱,來完成跳轉的功能,同時數據也是放到request域中。
使用方式:
- 創建ModelAndView對象
- 向模型對象中添加數據
- 設置邏輯視圖名
- 返回ModelAndView對象
控制器方法:
@RequestMapping("/testModelAndView") public ModelAndView testModelAndView(){ //創建ModelAndView對象 ModelAndView mav = new ModelAndView(); //處理模型數據,即向請求域request共享數據 mav.addObject("test","Hello ModelAndView"); //設置視圖名稱 mav.setViewName("success"); return mav; }
ModelAndView對象的作用:
將控制器方法中處理的結果數據傳遞到結果頁面,也就是把在結果頁面上需要的數據放到ModelAndView對象中即可,其作用類似於request對象的setAttribute方法的作用,用來在一個請求過程中傳遞處理的數據。
4. 使用Model、Map、ModelMap傳輸數據
在SpringMVC中除瞭可以使用原生servlet的對象傳遞數據之外,還有什麼其他的方式呢?
可以在方法的參數上傳入Model,ModelMap,Map類型,此時都能夠將數據傳送回頁面。
控制器方法:
@RequestMapping("/testModel") public String testModel(Model model){ model.addAttribute("test","Hello Model"); return "success"; } @RequestMapping("/testMap") public String testMap(Map<String,Object> map){ map.put("test","Hello Map"); return "success"; } @RequestMapping("/testModelMap") public String testModelMap(ModelMap modelMap){ modelMap.addAttribute("test","hello modelmap"); return "success"; }
如果方法的入參為Map,Model和ModelMap類型,Spring MVC會將隱含模型的引用傳遞給這些入參。在方法體內,開發者可以通過這個入參對象訪問到模型中的所有數據,也可以向模型中添加新的屬性數據,作用類似於request對象的setAttribute方法的作用: 用來在一個請求過程中傳遞處理的數據。
三者之間的關系:
- Map為原生的儲存鍵值的對象,裡面很多的方法可以使用;
- Model 隻有寥寥幾個方法隻適合用於儲存數據,簡化瞭新手對於Model對象的操作和理解;
- ModelMap 繼承瞭 LinkedMap ,除瞭實現瞭自身的一些方法,同樣的繼承 LinkedMap 的方法和特性;
- Map、Model、ModelMap的底層都是使用BindingAwareModelMap。
- Map、Model和ModelMap返回的是地址路徑
5. 使用session傳輸數據
HttpSession:通過session對象得到session中存儲的對象
控制器方法
//向session域共享數據 @RequestMapping("/testSession") public String testSession(HttpSession httpSession){ httpSession.setAttribute("testSessionScope","hello session"); return "success"; } //向application域共享數據 @RequestMapping("/testApplication") public String testApplication(HttpSession session){ ServletContext servletContext = session.getServletContext(); servletContext.setAttribute("testApplicationScope","hello application"); return "success"; }
總結
到此這篇關於Spring MVC數據響應處理的文章就介紹到這瞭,更多相關Spring MVC響應處理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- SpringMVC域對象共享數據示例詳解
- SpringMVC 域對象共享數據的實現示例
- SpringMVC處理數據輸出的實例代碼
- Java經典面試題匯總:Spring MVC
- SpringMVC數據輸出相關知識總結