Spring?MVC基于注解的使用之JSON數(shù)據(jù)處理的方法
1.JSON數(shù)據(jù)交互
1.1 JSON概述
JSON 是一種輕量級的數(shù)據(jù)交換格式,是一種理想的數(shù)據(jù)交互語言,它易于閱讀和編寫,同時也易于機器解析和生成。
JSON有兩種數(shù)據(jù)結(jié)構(gòu):
- 對象結(jié)構(gòu)
- 數(shù)組結(jié)構(gòu)
1.1.1 對象結(jié)構(gòu)
對象結(jié)構(gòu)是由花括號括起來的逗號分割的鍵值對(key:value)構(gòu)成。
對象結(jié)構(gòu)的語法格式是:{ "key1 ":"value 1", "key2 ":value 2, "key3 ":value 3}
注意:
key 必須是字符串,value 可以是字符串, 數(shù)字, 對象, 數(shù)組, 布爾值或 null。
key 和 value 中使用冒號(:)分割。
每個 key/value 對使用逗號(,)分割。
1.1.2 數(shù)組結(jié)構(gòu)
數(shù)組結(jié)構(gòu)是由中括號包裹逗號分隔的值的列表組成。
數(shù)組結(jié)構(gòu)的語法格式是:
[ "value1","value2","value3" ]
注意:JSON 中數(shù)組值必須是字符串, 數(shù)字, 對象, 數(shù)組, 布爾值或 null。
java轉(zhuǎn)換為json 的過程一般會稱為 “序列化”
json轉(zhuǎn)換為java 的過程一般會稱為 “反序列化”
json的屬和字符串值必須要用雙引號 “” 不能用單引
1.2 JSON數(shù)據(jù)轉(zhuǎn)換
為實現(xiàn)瀏覽器與控制器類之間的數(shù)據(jù)交互,Spring提供了一個HttpMessageConverter接口來實現(xiàn)該工作。Spring為HttpMessageConverter接口提供了很多實現(xiàn)類,來對不同類型的數(shù)據(jù)進行信息轉(zhuǎn)換。而Spring MVC 默認處理JSON格式請求響應(yīng)的實現(xiàn)類是MappingJackson2HttpMessageConverter,使用此類對數(shù)據(jù)進行轉(zhuǎn)換。
數(shù)據(jù)轉(zhuǎn)換操作步驟:
導入jackson依賴
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.2.2</version> </dependency>
在SpringMVC的核心配置文件中開啟mvc的注解驅(qū)動,此時在HandlerAdaptor中會自動裝配一個消息轉(zhuǎn)換器:MappingJackson2HttpMessageConverter,可以將響應(yīng)到瀏覽器的Java對象轉(zhuǎn)換為Json格式的字符串
<mvc:annotation-driven/> <mvc:default-servlet-handler/>
創(chuàng)建一個User類,用于封裝User類型的請求參數(shù)
public class User { private Integer id; private String username; private String password; public User() { } public User(Integer id, String username, String password) { this.id = id; this.username = username; this.password = password; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
在控制器方法上使用@ResponseBody注解進行標識
@RequestMapping("/testJson") @ResponseBody public User testJson(){ return new User(001,"jack","123456"); }
將Java對象直接作為控制器方法的返回值返回,就會自動轉(zhuǎn)換為json格式的字符串
2. HttpMessageConverter
HttpMessageConverter,報文信息轉(zhuǎn)換器,將請求報文轉(zhuǎn)換為Java對象,或?qū)ava對象轉(zhuǎn)換為響應(yīng)報文。
HttpMessageConverter提供了兩個注解@RequestBody和@ResponseBody,在JSON格式轉(zhuǎn)換中也是非常重要的。
2.1 @RequestBody
@RequestBody 可以獲取請求體,需要在控制器方法設(shè)置一個形參,使用@RequestBody進行標識,就會將請求體中的數(shù)據(jù)綁定到方法的形參中。
@RequestMapping("/testRequestBody") public String testRequestBody(@RequestBody String requestBody){ System.out.println("requestBody:" + requestBody); return "success"; }
表單提交:
<form action="${pageContext.request.contextPath}/testRequestBody" method="post"> 用戶名:<input type="text" name="username"><br> 密碼:<input type="password" name="password"><br> <input type="submit" value="測試"><br> </form>
返回結(jié)果:requestBody:username=abc&password=123
2.2 @ResponseBody
@ResponseBody 標識當前的控制器方法,直接將該方法的返回值作為響應(yīng)報文的響應(yīng)體響應(yīng)到瀏覽器
@RequestMapping("/testResponseBody") @ResponseBody public String testResponseBody(){ return "success"; }
通過超鏈接測試:
<a href="${pageContext.request.contextPath}/testResponseBody">測試testResponseBody</a>
到此這篇關(guān)于Spring MVC基于注解的使用JSON數(shù)據(jù)處理的文章就介紹到這了,更多相關(guān)Spring MVC JSON數(shù)據(jù)處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析java修飾符訪問權(quán)限(動力節(jié)點Java學院整理)
Java有四種訪問權(quán)限,其中三種有訪問權(quán)限修飾符,分別為private,public和protected,還有一種不帶任何修飾符,下面通過本文給大家簡單介紹下java修飾符訪問權(quán)限相關(guān)知識,感興趣的朋友一起學習吧2017-04-04導入項目出現(xiàn)Java多個工程相互引用異常A cycle was detected in the build path o
今天小編就為大家分享一篇關(guān)于導入項目出現(xiàn)Java多個工程相互引用異常A cycle was detected in the build path of project的解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實現(xiàn)方法
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實現(xiàn)方法,簡單描述了雙端鏈表的概念、原理并結(jié)合實例形式分析了java實現(xiàn)雙端鏈表的相關(guān)操作技巧,需要的朋友可以參考下2017-10-10基于SpringBoot與Mybatis實現(xiàn)SpringMVC Web項目
這篇文章主要介紹了基于SpringBoot與Mybatis實現(xiàn)SpringMVC Web項目的相關(guān)資料,需要的朋友可以參考下2017-04-04Java的NIO之并發(fā)環(huán)境下非阻塞IO技術(shù)詳解
這篇文章主要介紹了Java的NIO之并發(fā)環(huán)境下非阻塞IO技術(shù)詳解,Java NIO(New IO)是Java平臺提供的一種用于高效處理I/O操作的API,它引入了一組新的類和概念,以提供更好的性能和可擴展性,需要的朋友可以參考下2023-09-09