Spring?MVC基于注解的使用之JSON數(shù)據(jù)處理的方法
1.JSON數(shù)據(jù)交互
1.1 JSON概述
JSON 是一種輕量級(jí)的數(shù)據(jù)交換格式,是一種理想的數(shù)據(jù)交互語言,它易于閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。
JSON有兩種數(shù)據(jù)結(jié)構(gòu):
- 對(duì)象結(jié)構(gòu)
- 數(shù)組結(jié)構(gòu)
1.1.1 對(duì)象結(jié)構(gòu)
對(duì)象結(jié)構(gòu)是由花括號(hào)括起來的逗號(hào)分割的鍵值對(duì)(key:value)構(gòu)成。
對(duì)象結(jié)構(gòu)的語法格式是:{ "key1 ":"value 1", "key2 ":value 2, "key3 ":value 3}
注意:
key 必須是字符串,value 可以是字符串, 數(shù)字, 對(duì)象, 數(shù)組, 布爾值或 null。
key 和 value 中使用冒號(hào)(:)分割。
每個(gè) key/value 對(duì)使用逗號(hào)(,)分割。
1.1.2 數(shù)組結(jié)構(gòu)
數(shù)組結(jié)構(gòu)是由中括號(hào)包裹逗號(hào)分隔的值的列表組成。
數(shù)組結(jié)構(gòu)的語法格式是:
[ "value1","value2","value3" ]
注意:JSON 中數(shù)組值必須是字符串, 數(shù)字, 對(duì)象, 數(shù)組, 布爾值或 null。
java轉(zhuǎn)換為json 的過程一般會(huì)稱為 “序列化”
json轉(zhuǎn)換為java 的過程一般會(huì)稱為 “反序列化”
json的屬和字符串值必須要用雙引號(hào) “” 不能用單引
1.2 JSON數(shù)據(jù)轉(zhuǎn)換
為實(shí)現(xiàn)瀏覽器與控制器類之間的數(shù)據(jù)交互,Spring提供了一個(gè)HttpMessageConverter接口來實(shí)現(xiàn)該工作。Spring為HttpMessageConverter接口提供了很多實(shí)現(xiàn)類,來對(duì)不同類型的數(shù)據(jù)進(jìn)行信息轉(zhuǎn)換。而Spring MVC 默認(rèn)處理JSON格式請(qǐng)求響應(yīng)的實(shí)現(xiàn)類是MappingJackson2HttpMessageConverter,使用此類對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換。
數(shù)據(jù)轉(zhuǎn)換操作步驟:
導(dǎo)入jackson依賴
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.2.2</version>
</dependency>在SpringMVC的核心配置文件中開啟mvc的注解驅(qū)動(dòng),此時(shí)在HandlerAdaptor中會(huì)自動(dòng)裝配一個(gè)消息轉(zhuǎn)換器:MappingJackson2HttpMessageConverter,可以將響應(yīng)到瀏覽器的Java對(duì)象轉(zhuǎn)換為Json格式的字符串
<mvc:annotation-driven/> <mvc:default-servlet-handler/>
創(chuàng)建一個(gè)User類,用于封裝User類型的請(qǐng)求參數(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注解進(jìn)行標(biāo)識(shí)
@RequestMapping("/testJson")
@ResponseBody
public User testJson(){
return new User(001,"jack","123456");
}將Java對(duì)象直接作為控制器方法的返回值返回,就會(huì)自動(dòng)轉(zhuǎn)換為json格式的字符串

2. HttpMessageConverter
HttpMessageConverter,報(bào)文信息轉(zhuǎn)換器,將請(qǐng)求報(bào)文轉(zhuǎn)換為Java對(duì)象,或?qū)ava對(duì)象轉(zhuǎn)換為響應(yīng)報(bào)文。
HttpMessageConverter提供了兩個(gè)注解@RequestBody和@ResponseBody,在JSON格式轉(zhuǎn)換中也是非常重要的。
2.1 @RequestBody
@RequestBody 可以獲取請(qǐng)求體,需要在控制器方法設(shè)置一個(gè)形參,使用@RequestBody進(jìn)行標(biāo)識(shí),就會(huì)將請(qǐng)求體中的數(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="測(cè)試"><br>
</form>返回結(jié)果:requestBody:username=abc&password=123
2.2 @ResponseBody
@ResponseBody 標(biāo)識(shí)當(dāng)前的控制器方法,直接將該方法的返回值作為響應(yīng)報(bào)文的響應(yīng)體響應(yīng)到瀏覽器
@RequestMapping("/testResponseBody")
@ResponseBody
public String testResponseBody(){
return "success";
}通過超鏈接測(cè)試:
<a href="${pageContext.request.contextPath}/testResponseBody">測(cè)試testResponseBody</a>
到此這篇關(guān)于Spring MVC基于注解的使用JSON數(shù)據(jù)處理的文章就介紹到這了,更多相關(guān)Spring MVC JSON數(shù)據(jù)處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java如何實(shí)現(xiàn)微信支付v3的支付回調(diào)
這篇文章主要給大家介紹了關(guān)于Java如何實(shí)現(xiàn)微信支付v3的支付回調(diào),微信實(shí)現(xiàn)支付功能與支付寶實(shí)現(xiàn)支付功能是相似的,文中給了詳細(xì)的示例代碼,需要的朋友可以參考下2023-07-07
JVM性能調(diào)優(yōu)實(shí)現(xiàn)原理及配置
這篇文章主要介紹了JVM性能調(diào)優(yōu)實(shí)現(xiàn)原理及配置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
SpringSecurity動(dòng)態(tài)加載用戶角色權(quán)限實(shí)現(xiàn)登錄及鑒權(quán)功能
這篇文章主要介紹了SpringSecurity動(dòng)態(tài)加載用戶角色權(quán)限實(shí)現(xiàn)登錄及鑒權(quán)功能,很多朋友感覺這個(gè)功能很難,今天小編通過實(shí)例代碼給大家講解,需要的朋友可以參考下2019-11-11
SpringSecurity實(shí)現(xiàn)圖形驗(yàn)證碼功能的實(shí)例代碼
Spring Security 的前身是 Acegi Security ,是 Spring 項(xiàng)目組中用來提供安全認(rèn)證服務(wù)的框架。這篇文章主要介紹了SpringSecurity實(shí)現(xiàn)圖形驗(yàn)證碼功能,需要的朋友可以參考下2018-10-10
java利用url實(shí)現(xiàn)網(wǎng)頁內(nèi)容的抓取
本文主要介紹了java利用url實(shí)現(xiàn)網(wǎng)頁內(nèi)容抓取的示例。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03

