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格式,實際項目中有很多地方需要它們來提供查詢數據的服務。
IT行業、互聯網、開發語言(Java、前端HTML5、Python、UI/UE、雲計算、自動化測試、大數據、人工智能、物聯網、遊戲開發、網絡安全、GO語言、PHP)相關資訊,大連千鋒會第一時間送到大家身邊,也可以關注微信公衆號【dalianqianfengjiaoyu】瞭解相關行業資訊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章