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