首頁 > 軟體

Spring MVC資料響應處理詳解

2022-05-24 14:00:04

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響應處理內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com