Spring?MVC數(shù)據(jù)響應處理詳解
1. 內(nèi)置視圖解析器
Spring MVC 中的視圖解析器負責解析視圖,可以通過在配置文件中定義一個ViewResolver來配置視圖解析器,配置如下:
<!--默認的內(nèi)置視圖解析器-->
<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的對象傳遞數(shù)據(jù)
HttpServletRequest:通過request對象獲取請求信息
控制器方法:
//使用servlet傳遞數(shù)據(jù)
@RequestMapping("/testServlet")
public String testRequestByServletAPI(HttpServletRequest request){
request.setAttribute("test","hello,servlet");
return "success";
}
3. 使用ModelAndView對象傳輸數(shù)據(jù)
當使用modelAndView對象的時候,返回值的類型也必須是ModelAndView,可以將要跳轉的頁面設置成view的名稱,來完成跳轉的功能,同時數(shù)據(jù)也是放到request域中。
使用方式:
- 創(chuàng)建ModelAndView對象
- 向模型對象中添加數(shù)據(jù)
- 設置邏輯視圖名
- 返回ModelAndView對象
控制器方法:
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
//創(chuàng)建ModelAndView對象
ModelAndView mav = new ModelAndView();
//處理模型數(shù)據(jù),即向請求域request共享數(shù)據(jù)
mav.addObject("test","Hello ModelAndView");
//設置視圖名稱
mav.setViewName("success");
return mav;
}
ModelAndView對象的作用:
將控制器方法中處理的結果數(shù)據(jù)傳遞到結果頁面,也就是把在結果頁面上需要的數(shù)據(jù)放到ModelAndView對象中即可,其作用類似于request對象的setAttribute方法的作用,用來在一個請求過程中傳遞處理的數(shù)據(jù)。
4. 使用Model、Map、ModelMap傳輸數(shù)據(jù)
在SpringMVC中除了可以使用原生servlet的對象傳遞數(shù)據(jù)之外,還有什么其他的方式呢?
可以在方法的參數(shù)上傳入Model,ModelMap,Map類型,此時都能夠將數(shù)據(jù)傳送回頁面。
控制器方法:
@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";
}
如果方法的入?yún)镸ap,Model和ModelMap類型,Spring MVC會將隱含模型的引用傳遞給這些入?yún)ⅰT诜椒w內(nèi),開發(fā)者可以通過這個入?yún)ο笤L問到模型中的所有數(shù)據(jù),也可以向模型中添加新的屬性數(shù)據(jù),作用類似于request對象的setAttribute方法的作用: 用來在一個請求過程中傳遞處理的數(shù)據(jù)。
三者之間的關系:
- Map為原生的儲存鍵值的對象,里面很多的方法可以使用;
- Model 只有寥寥幾個方法只適合用于儲存數(shù)據(jù),簡化了新手對于Model對象的操作和理解;
- ModelMap 繼承了 LinkedMap ,除了實現(xiàn)了自身的一些方法,同樣的繼承 LinkedMap 的方法和特性;
- Map、Model、ModelMap的底層都是使用BindingAwareModelMap。
- Map、Model和ModelMap返回的是地址路徑

5. 使用session傳輸數(shù)據(jù)
HttpSession:通過session對象得到session中存儲的對象
控制器方法
//向session域共享數(shù)據(jù)
@RequestMapping("/testSession")
public String testSession(HttpSession httpSession){
httpSession.setAttribute("testSessionScope","hello session");
return "success";
}
//向application域共享數(shù)據(jù)
@RequestMapping("/testApplication")
public String testApplication(HttpSession session){
ServletContext servletContext = session.getServletContext();
servletContext.setAttribute("testApplicationScope","hello application");
return "success";
}
總結
到此這篇關于Spring MVC數(shù)據(jù)響應處理的文章就介紹到這了,更多相關Spring MVC響應處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot整合curator實現(xiàn)分布式鎖過程
這篇文章主要介紹了springboot整合curator實現(xiàn)分布式鎖過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
springboot layui hutool Excel導入的實現(xiàn)
本文主要介紹了springboot layui hutool Excel導入的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-03-03
Jenkins集成sonarQube實現(xiàn)代碼質量檢查過程圖解
這篇文章主要介紹了Jenkins集成sonarQube實現(xiàn)代碼質量檢查過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09

