欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringMVC之返回JSON的三種方式

 更新時(shí)間:2023年06月06日 11:21:57   作者:ProgrammingAh  
現(xiàn)在都是前后端分離了,后端只需要跟前端提供restful接口,所有接口都返回json格式數(shù)據(jù)即可,SpringMVC通常有3種方式向前端輸出json格式數(shù)據(jù),下面我們就來了解一下

一、方法上加注解@ResponseBody

需求

使用 springmvc 提供一個(gè)接口,以 json 格式輸出用戶列表。

step1:maven 配置引入 jackjson

jackjson 用于將 java 對(duì)象轉(zhuǎn)換為 json 格式的字符串,也可以將 json 格式的字符串轉(zhuǎn)換為 java 對(duì)象

我們的接口需要將 java 對(duì)象轉(zhuǎn)換為 json 格式的字符串輸出到客戶端,所以我們需要用到這個(gè)包。

<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ū)動(dòng)

<mvc:annotation-driven/>

添加了這段代碼之后,springmvc 就被賦予了將 java 對(duì)象轉(zhuǎn)換為 json 格式字符串輸出到客戶端的能力。

step3:處理器的方法上添加@ResponseBody 注解

如下代碼,我們希望 list()方法用于向客戶端以 json 格式輸出用戶列表。

此時(shí)只需要在這個(gè)方法上面添加一個(gè)@ResponseBody注解,SpringMVC 發(fā)現(xiàn)這個(gè)方法上有@ResponseBody這個(gè)注解,并且方法返回值是一個(gè)普通的 java 對(duì)象的時(shí)候,會(huì)將方法的返回值使用 jackson 轉(zhuǎn)換為 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();
    }
}

驗(yàn)證效果

谷歌瀏覽器中訪問下這個(gè)接口

二、Controller 上添加注解ResponseBody

當(dāng)我們 controller 中方法很多的時(shí)候,且所有方法都要求返回 json 格式的數(shù)據(jù)的時(shí)候,如果按照方式 1,我們需要在每個(gè)方法上都要添加@ResponseBody注解,此時(shí)有更簡單的方法,將所有方法上的@ResponseBody注解都去掉,然后在 Controller 上加上@ResponseBody就可以了。

比如下面這段代碼,我們可以將 2 個(gè)方法上面的@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 個(gè)注解@Controller@ResponseBody,而 SpringMVC 提供了一個(gè)更好的注解@RestController,相當(dāng)于這 2 個(gè)注解的合體,所以可以用來替換這 2 個(gè)注解。

四、總結(jié)

掌握@ResponseBody 的用法,用來返回 json 格式的數(shù)據(jù),注意需要在 springmvc 配置文件中添加注解驅(qū)動(dòng)的配置,否則調(diào)用會(huì)報(bào)錯(cuò)

<mvc:annotation-driven/>

以上就是SpringMVC之返回JSON的三種方式的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC 返回JSON的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用Java代碼來比較Android客戶端版本號(hào)

    使用Java代碼來比較Android客戶端版本號(hào)

    這篇文章主要介紹了使用Java代碼來比較Android客戶端版本號(hào),Java是目前安卓程序唯一的開發(fā)語言,需要的朋友可以參考下
    2015-07-07
  • idea 配置checkstyle詳細(xì)步驟

    idea 配置checkstyle詳細(xì)步驟

    checkstyle是提高代碼質(zhì)量,檢查代碼規(guī)范的很好用的一款工具,本文簡單介紹一下集成的步驟,并提供一份完整的checkstyle的代碼規(guī)范格式文件,以及常見的格式問題的解決方法,需要的朋友可以參考下
    2023-11-11
  • JavaScript base64 與 File 之間的互轉(zhuǎn)(操作方法)

    JavaScript base64 與 File 之間的互轉(zhuǎn)(操作方法)

    在JavaScript 中,可以使用 Blob 對(duì)象將 base64 字符串轉(zhuǎn)換為 File 對(duì)象,這篇文章主要介紹了JavaScript base64 與 File之間的互轉(zhuǎn),需要的朋友可以參考下
    2024-05-05
  • SpringBoot Jpa 自定義查詢實(shí)現(xiàn)代碼詳解

    SpringBoot Jpa 自定義查詢實(shí)現(xiàn)代碼詳解

    這篇文章主要介紹了SpringBoot Jpa 自定義查詢實(shí)現(xiàn)代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • default怎么修飾接口中的方法詳解

    default怎么修飾接口中的方法詳解

    今天給各位小伙伴們總結(jié)一下default怎么修飾接口中的方法,文中有非常詳細(xì)的圖文解說.對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • mybatis中的字符串拼接問題

    mybatis中的字符串拼接問題

    這篇文章主要介紹了mybatis中的字符串拼接問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java中的事件處理機(jī)制詳細(xì)解讀

    Java中的事件處理機(jī)制詳細(xì)解讀

    這篇文章主要介紹了Java中的事件處理機(jī)制詳細(xì)解讀,ava事件處理是采取"委派事件模型",當(dāng)事件發(fā)生時(shí),產(chǎn)生事件的對(duì)象會(huì)把此"信息"傳遞給"事件的監(jiān)聽者"處理,需要的朋友可以參考下
    2024-01-01
  • mybatis-generator-gui 工具使用(圖形化工具)

    mybatis-generator-gui 工具使用(圖形化工具)

    基于 mybatis generator 開發(fā)一款界面工具, 本工具可以使你非常容易及快速生成 Mybatis 的 Java POJO 文件及數(shù)據(jù)庫 Mapping 文件。本文重點(diǎn)給大家介紹mybatis-generator-gui 工具使用,感興趣的朋友一起看看吧
    2022-03-03
  • Spring Boot配置動(dòng)態(tài)更新問題

    Spring Boot配置動(dòng)態(tài)更新問題

    這篇文章主要介紹了Spring Boot配置動(dòng)態(tài)更新問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java基礎(chǔ)學(xué)習(xí)之實(shí)參和形參

    Java基礎(chǔ)學(xué)習(xí)之實(shí)參和形參

    這篇文章主要介紹了Java基礎(chǔ)學(xué)習(xí)之實(shí)參形參,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-05-05

最新評(píng)論