首頁 > 軟體

Java SpringMVC資料響應超詳細講解

2022-04-06 19:04:06

1)頁面跳轉  

直接返回字串:此種方式會將返回的字串與檢視解析器的前字尾拼接後跳轉。 

返回帶有字首的字串:

轉發: forward:/WEB-INF/views/index.jsp

重定向: redirect:/index.jsp

通過ModelAndView物件返回

@RequestMapping("/quick2")
public ModelAndView quickMethod2(){
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("redirect:index.jsp");
    return modelAndView;
}
@RequestMapping("/quick3")
public ModelAndView quickMethod3(){
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("forward:/WEB-INF/views/index.jsp");
    return modelAndView;
}

 在進行轉發時,往往要向request域中儲存資料,在jsp頁面中顯示,那麼Controller中怎樣向request 域中儲存資料呢?

① 通過SpringMVC框架注入的request物件setAttribute()方法設定。

@RequestMapping("/quick")
public String quickMethod(HttpServletRequest request){
    request.setAttribute("name","zhangsan");
    return "index";
}

② 通過ModelAndView的addObject()方法設定。

@RequestMapping("/quick3")
public ModelAndView quickMethod3(){
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("forward:/WEB-INF/views/index.jsp");
    modelAndView.addObject("name","lisi");
    return modelAndView;
}

2)回寫資料

直接返回字串:Web基礎階段,使用者端存取伺服器端,如果想直接回寫字串作為響應體返回的話,只需要使用response.getWriter().print(「hello world」) 即可,那麼在Controller中想直接回寫字串該怎樣呢?

① 通過SpringMVC框架注入的response物件,使用response.getWriter().print(「hello world」) 回寫資料,此時不需要檢視跳轉,業務方法返回值為void。

@RequestMapping("/quick4")
public void quickMethod4(HttpServletResponse response) throws IOException {
    response.getWriter().print("hello world");
}

② 將需要回寫的字串直接返回,但此時需要通過@ResponseBody註解告知SpringMVC框架,方法 返回的字串不是跳轉是直接在http響應體中返回。

@RequestMapping("/quick5")
@ResponseBody
public String quickMethod5() throws IOException {
    return "hello springMVC!!!"; 
}

開發中往往要將複雜的java物件轉換成json格式的字串,我們可以使用web階段學習過的json轉換工具jackson進行轉換,

1.在pom.xml中匯入jackson座標。

<!--jackson-->
<dependency>
 <groupId>com.fasterxml.jackson.core</groupId>
 <artifactId>jackson-core</artifactId>
 <version>2.9.0</version>
</dependency>
<dependency>
 <groupId>com.fasterxml.jackson.core</groupId>
 <artifactId>jackson-databind</artifactId>
 <version>2.9.0</version>
</dependency> 
<dependency>
 <groupId>com.fasterxml.jackson.core</groupId>
 <artifactId>jackson-annotations</artifactId>
 <version>2.9.0</version>
</dependency>

2.通過jackson轉換json格式字串,回寫字串。  

@RequestMapping("/quick7")
@ResponseBody
public String quickMethod7() throws IOException {
    User user = new User();
    user.setUsername("zhangsan");
    user.setAge(18);
    ObjectMapper objectMapper = new ObjectMapper();
    String s = objectMapper.writeValueAsString(user);
    return s;
}

返回物件或集合

通過SpringMVC幫助我們對物件或集合進行json字串的轉換並回寫,為處理器介面卡設定訊息轉換引數, 指定使用jackson進行物件或集合的轉換,因此需要在spring-mvc.xml中進行如下設定:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
 <property name="messageConverters">
     <list>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
     </list>
 </property>
</bean>

直接在方法中返回物件或集合

@RequestMapping("/quick8")
@ResponseBody
public User quickMethod8() throws IOException {
    User user = new User();
    user.setUsername("zhangsan");
    user.setAge(18);
    return user;
}

3)設定註解驅動

在方法上新增 @ResponseBody就可以返回json格式的字串,但是這樣設定比較麻煩,設定的程式碼比較多, 因此,我們可以使用mvc的註解驅動代替上述設定。

在 SpringMVC 的各個元件中, 處理器對映器、 處理器介面卡、 檢視解析器稱為 SpringMVC 的三大元件。

使用<mvc:annotation-driven>自動載入 RequestMappingHandlerMapping(處理對映器)和 RequestMappingHandlerAdapter(處理介面卡)可用在Spring-xml.xml組態檔中使用 <mvc:annotation-driven>替代註解處理器和介面卡的設定。

同時使用<mvc:annotation-driven>預設底層就會整合jackson進行物件或集合的json格式字串的轉換。

<!--在spring-mvc.xml中設定mvc的註解驅動--> 
<mvc:annotation-driven/>

4)知識要點

SpringMVC的資料響應方式

1) 頁面跳轉         

  • 直接返回字串         
  • 通過ModelAndView物件返回

2) 回寫資料         

  • 直接返回字串         
  • 返回物件或集合

到此這篇關於Java SpringMVC資料響應超詳細講解的文章就介紹到這了,更多相關Java SpringMVC內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


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