SpringMVC之返回JSON的三種方式
一、方法上加注解@ResponseBody
需求
使用 springmvc 提供一個接口,以 json 格式輸出用戶列表。
step1:maven 配置引入 jackjson
jackjson 用于將 java 對象轉換為 json 格式的字符串,也可以將 json 格式的字符串轉換為 java 對象
我們的接口需要將 java 對象轉換為 json 格式的字符串輸出到客戶端,所以我們需要用到這個包。
<dependency> <groupId>com.fasterxml.jackson.core<groupId> <artifactId>jackson-core<artifactId> <version>2.11.4<version> <dependency> <dependency> <groupId>com.fasterxml.jackson.core<groupId> <artifactId>jackson-databind<artifactId> <version>2.11.4<version> <dependency>
step2:springmvc 配置文件中添加注解驅(qū)動
<mvc:annotation-driven/>
添加了這段代碼之后,springmvc 就被賦予了將 java 對象轉換為 json 格式字符串輸出到客戶端的能力。
step3:處理器的方法上添加@ResponseBody 注解
如下代碼,我們希望 list()方法用于向客戶端以 json 格式輸出用戶列表。
此時只需要在這個方法上面添加一個@ResponseBody
注解,SpringMVC 發(fā)現(xiàn)這個方法上有@ResponseBody
這個注解,并且方法返回值是一個普通的 java 對象的時候,會將方法的返回值使用 jackson 轉換為 json 格式的字符串,然后輸出到客戶端。
@Controller public class UserController { /** * 用戶列表(用戶id->用戶信息) */ Map userDtoMap = new ConcurrentHashMap<>(); { userDtoMap.put(1L, new UserDto(1L, "路人", 30)); userDtoMap.put(2L, new UserDto(2L, "張三", 20)); userDtoMap.put(3L, new UserDto(3L, "李四", 18)); } @GetMapping("/user/list.do") @ResponseBody public Collection list() { return this.userDtoMap.values(); } }
驗證效果
谷歌瀏覽器中訪問下這個接口
二、Controller 上添加注解ResponseBody
當我們 controller 中方法很多的時候,且所有方法都要求返回 json 格式的數(shù)據(jù)的時候,如果按照方式 1,我們需要在每個方法上都要添加@ResponseBody
注解,此時有更簡單的方法,將所有方法上的@ResponseBody
注解都去掉,然后在 Controller 上加上@ResponseBody
就可以了。
比如下面這段代碼,我們可以將 2 個方法上面的@ResponseBody
干掉,然后在類上添加@ResponseBody
注解就可以了。
@Controller public class UserController { Map userDtoMap = new ConcurrentHashMap<>(); { userDtoMap.put(1L, new UserDto(1L, "路人", 30)); userDtoMap.put(2L, new UserDto(2L, "張三", 20)); userDtoMap.put(3L, new UserDto(3L, "李四", 18)); } @GetMapping("/user/list.do") @ResponseBody public Collection list() { return this.userDtoMap.values(); } @GetMapping("/user/{id}.do") @ResponseBody public UserDto user(@PathVariable("id") Long id) { return this.userDtoMap.get(id); } }
調(diào)整之后如下
@Controller @ResponseBody public class UserController { Map userDtoMap = new ConcurrentHashMap<>(); { userDtoMap.put(1L, new UserDto(1L, "路人", 30)); userDtoMap.put(2L, new UserDto(2L, "張三", 20)); userDtoMap.put(3L, new UserDto(3L, "李四", 18)); } @GetMapping("/user/list.do") public Collection list() { return this.userDtoMap.values(); } @GetMapping("/user/{id}.do") public UserDto user(@PathVariable("id") Long id) { return this.userDtoMap.get(id); } }
三、Controllers 上使用@RestController
我們回頭再看下上面代碼,UserController 上有 2 個注解@Controller
和@ResponseBody
,而 SpringMVC 提供了一個更好的注解@RestController
,相當于這 2 個注解的合體,所以可以用來替換這 2 個注解。
四、總結
掌握@ResponseBody
的用法,用來返回 json 格式的數(shù)據(jù),注意需要在 springmvc 配置文件中添加注解驅(qū)動的配置,否則調(diào)用會報錯
<mvc:annotation-driven/>
以上就是SpringMVC之返回JSON的三種方式的詳細內(nèi)容,更多關于SpringMVC 返回JSON的資料請關注腳本之家其它相關文章!
相關文章
JavaScript base64 與 File 之間的互轉(操作方法)
在JavaScript 中,可以使用 Blob 對象將 base64 字符串轉換為 File 對象,這篇文章主要介紹了JavaScript base64 與 File之間的互轉,需要的朋友可以參考下2024-05-05SpringBoot Jpa 自定義查詢實現(xiàn)代碼詳解
這篇文章主要介紹了SpringBoot Jpa 自定義查詢實現(xiàn)代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02mybatis-generator-gui 工具使用(圖形化工具)
基于 mybatis generator 開發(fā)一款界面工具, 本工具可以使你非常容易及快速生成 Mybatis 的 Java POJO 文件及數(shù)據(jù)庫 Mapping 文件。本文重點給大家介紹mybatis-generator-gui 工具使用,感興趣的朋友一起看看吧2022-03-03