最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMVC之返回JSON的三種方式

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

一、方法上加注解@ResponseBody

需求

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

step1:maven 配置引入 jackjson

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

我們的接口需要將 java 對象轉(zhuǎn)換為 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 對象轉(zhuǎn)換為 json 格式字符串輸出到客戶端的能力。

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

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

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

驗證效果

谷歌瀏覽器中訪問下這個接口

二、Controller 上添加注解ResponseBody

當(dāng)我們 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,相當(dāng)于這 2 個注解的合體,所以可以用來替換這 2 個注解。

四、總結(jié)

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

<mvc:annotation-driven/>

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

相關(guān)文章

  • java實體對象與Map之間的轉(zhuǎn)換工具類代碼實例

    java實體對象與Map之間的轉(zhuǎn)換工具類代碼實例

    這篇文章主要介紹了java實體對象與Map之間的轉(zhuǎn)換工具類代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Java如何利用Easyexcel動態(tài)導(dǎo)出表頭列

    Java如何利用Easyexcel動態(tài)導(dǎo)出表頭列

    這篇文章主要介紹了Java利用Easyexcel動態(tài)導(dǎo)出表頭列的實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • VSCode中開發(fā)JavaWeb項目的詳細(xì)過程(Maven+Tomcat+熱部署)

    VSCode中開發(fā)JavaWeb項目的詳細(xì)過程(Maven+Tomcat+熱部署)

    這篇文章主要介紹了VSCode中開發(fā)JavaWeb項目(Maven+Tomcat+熱部署),本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 如何使用Spring Validation優(yōu)雅地校驗參數(shù)

    如何使用Spring Validation優(yōu)雅地校驗參數(shù)

    這篇文章主要介紹了如何使用Spring Validation優(yōu)雅地校驗參數(shù),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Mybatis實體類屬性與數(shù)據(jù)庫不一致解決方案

    Mybatis實體類屬性與數(shù)據(jù)庫不一致解決方案

    這篇文章主要介紹了Mybatis實體類屬性與數(shù)據(jù)庫不一致解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 詳解Spring中的@Scope注解

    詳解Spring中的@Scope注解

    這篇文章主要介紹了詳解Spring中的@Scope注解,@Scope注解是Spring IOC容器中的一個作用域,在Spring IOC容器中,他用來配置Bean實例的作用域?qū)ο?需要的朋友可以參考下
    2023-07-07
  • Java volatile的適用場景實例詳解

    Java volatile的適用場景實例詳解

    在本文里我們給大家整理了一篇關(guān)于Java volatile的適用場景實例內(nèi)容和知識點,需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • SpringBoot實現(xiàn)前后端分離國際化的示例詳解

    SpringBoot實現(xiàn)前后端分離國際化的示例詳解

    Springboot國際化可以幫助使用者在不同語言環(huán)境中構(gòu)建應(yīng)用程序,這樣應(yīng)用程序可以有效地適應(yīng)不同語言文化背景下的用戶需求。本文主要介紹了SpringBoot實現(xiàn)前后端分離國際化的方法,需要的可以參考一下
    2023-02-02
  • 詳解Java如何優(yōu)雅的實現(xiàn)字典翻譯

    詳解Java如何優(yōu)雅的實現(xiàn)字典翻譯

    當(dāng)我們在Java應(yīng)用程序中需要對字典屬性進(jìn)行轉(zhuǎn)換返回給前端時,如何簡單、方便、并且優(yōu)雅的處理是一個重要問題。在本文中,我們將介紹如何使用Java中的序列化機(jī)制來優(yōu)雅地實現(xiàn)字典值的翻譯,從而簡化開發(fā)
    2023-04-04
  • Spring Boot 定義系統(tǒng)啟動任務(wù)的多種方式

    Spring Boot 定義系統(tǒng)啟動任務(wù)的多種方式

    這篇文章主要介紹了Spring Boot 定義系統(tǒng)啟動任務(wù)的多種方式,看看你都會哪幾種 ,感興趣的朋友跟隨小編一起看看吧
    2019-04-04

最新評論

贵定县| 宜兰县| 恩平市| 阳春市| 武功县| 离岛区| 南投县| 三门县| 定结县| 会同县| 浦城县| 卢湾区| 梁平县| 乌兰察布市| 贵德县| 贡嘎县| 佳木斯市| 西畴县| 海安县| 新巴尔虎左旗| 称多县| 乐至县| 绩溪县| 金溪县| 呼和浩特市| 安义县| 时尚| 米脂县| 长武县| 禄劝| 宁海县| 文水县| 梅河口市| 峨眉山市| 耒阳市| 咸丰县| 万荣县| 安阳县| 灵丘县| 牙克石市| 铜鼓县|