好程式設計師Java分享SpringMVC之@ResponseBody註解

好程式設計師IT發表於2019-08-22

好程式設計師Java 分享 SpringMVC @ResponseBody 註解,本章我們學習到 SpringMVC 的伺服器端如何提供資料查詢服務,這裡需要使用兩個重要的註解: @ResponseBody @RestController

@ResponseBody 註解

      在前面使用SpringMVC 時, Controller 中的方法返回值會透過檢視處理器 ViewResolver 處理為頁面的 URL ,然後跳轉到對應頁面中,如下面例子返回的 hello ,將轉換為 /WEB-INF/pages/hello.jsp

  @Controller
  public class UserController{
  @RequestMapping(“/login”)
  public String login(){
  return “hello”;
  }
  }

  

   有時候我們需要用Controller 實現網路服務介面,比如:商品查詢、查詢天氣、新聞資料等。就不需要進行頁面跳轉而是直接返回資料。

  這時候我們可以在方法上,新增註解:@ResponseBody

  @Controller
  public class UserController{
  @ResponseBody
  @RequestMapping(“/login”)
  public String login(){
  return “hello”;
  }
  }

  

  

  在瀏覽器中直接顯示hello 文字,也就是說新增了 @ResponseBody 註解的方法,返回值會透過 HTTP 響應主體直接傳送給瀏覽器。

 

型別轉換器

  預設情況下,使用@ResponseBody 返回的資料只能是 String 型別,其它型別返回時會出現異常:

  

  這裡提示沒有對應的轉換器,這裡可以新增轉換器將資料轉換為特定的格式,如:xml json 等, JSON 是資料通訊的主要格式,我們將新增一個 JSON 格式的轉換器。配置方法非常簡單,我們只需要新增jackson-databind依賴:

  <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.7</version>
  </dependency>

  

  Jackson 庫可以實現 Java 物件和 JSON 的相互轉換,引入 Jackson-databind 依賴後, SpringMVC 會自動新增 Jackson 的轉換器。

 

轉換自定義型別

  接下來我們再進行測試,新增方法測試返回boolean 資料

      @ResponseBody
      @RequestMapping("/login2")
      public boolean login2(){
          return false;
      }

  


  我們進行資料查詢時,需要返回自定義型別的資料,如:使用者、商品、訂單、文章等,這裡我們測試返回自定義型別:

  public class User {
      private int id;
      private String username;
      private String birthday;
      private String sex;
      private String address;
        //新增get\set\構造方法

  

        ...

  }
  @ResponseBody
  @RequestMapping("/login3")
  public User login3(){
      User user = new User(1, "張三", "1990-2-1", "男", "武漢");
      return user;
  }

  


  

  可以看到User物件被轉換成了JSON格式。再測試物件集合:

      @ResponseBody
      @RequestMapping("/login4")
      public List<User> login4(){
          List<User> users = new ArrayList<>();
          users.add(new User(1, "張三", "1990-2-1", "男", "武漢"));
          users.add(new User(2, "李四", "1990-2-1", "男", "武漢"));
          users.add(new User(3, "王五", "1990-2-1", "男", "武漢"));
          return users;
      }

  

  

  List集合被轉換成了JSON陣列,我們從資料庫查詢到資料後都會放入對應的實體類集合中,然後把集合轉換成JSON格式傳送給客戶端,有了@ResponseBody和Jackson轉換器可以很容易的實現。

 

@RestController 註解

  如果一個Controller 類主要用於做網路服務,所有的方法都需要新增 @ResponseBody 註解,我們可以在類的前面加上 @RestController 註解,這個註解相當於 @Controller+@ResponseBody ,也就是說它既可以用於宣告類為 Controller ,也可以給所有方法自動新增 @ResponseBody 註解。

  

總結

  本章我們學習了SpringMVC中的@ResponseBody註解,有該註解的方法,可以將資料直接返回給客戶端,我們還學習了利用Jackson庫提供的轉換器,將自定義型別轉換為JSON格式,實際專案中有很多地方需要它們來提供查詢資料的服務。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2654622/,如需轉載,請註明出處,否則將追究法律責任。

相關文章