自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開發(fā)必掌握!Json數(shù)據(jù)交互和ResTful開發(fā)

開發(fā) 前端
JSON(JavaScript Object Notation,JS對象標記)是一種輕量級的數(shù)據(jù)交換格式。它是基于JavaScript的一個子集,使用了C、C++、C#、Java、JavaScript、Perl、Python等其他語言的約定,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。

[[432778]]

本文轉載自微信公眾號「程序員千羽」,作者程序員千羽。轉載本文請聯(lián)系程序員千羽公眾號。

GitHub:https://github.com/nateshao/ssm/tree/master/109-springmvc-json-restful

1. JSON數(shù)據(jù)交互

什么是JSON?

JSON(JavaScript Object Notation,JS對象標記)是一種輕量級的數(shù)據(jù)交換格式。它是基于JavaScript的一個子集,使用了C、C++、C#、Java、JavaScript、Perl、Python等其他語言的約定,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。

JSON有什么特點?

  • JSON與XML非常相似,都是用來存儲數(shù)據(jù)的,并且都是基于純文本的數(shù)據(jù)格式。與XML相比,JSON解析速度更快,占用空間更小,且易于閱讀和編寫,同時也易于機器解析和生成。

JSON有如下兩種數(shù)據(jù)結構:

  • 對象結構
  • 數(shù)組結構

JSON對象結構

在對象結構以“{”開始,以“}”結束。中間部分由0個或多個以英文“,”分隔的name:value對構成(注意name和value之間以英文“:”分隔),其存儲形式如下圖所示。

對象結構的語法結構代碼如下:

例如:一個address對象包含城市、街道、郵編等信息,使用JSON的表示形式如下:{"city":"Beijing","street":"Xisanqi","postcode":100096}

JSON數(shù)組結構

“數(shù)組結構以“[”開始,以“]”結束。中間部分由0個或多個以英文“,”分隔的值的列表組成,其存儲形式如下圖所示。

對象結構的語法結構代碼如下:

  1.             value1, 
  2.             value2, 
  3.              ... 

例如,一個數(shù)組包含了String、Number、Boolean、null類型數(shù)據(jù),使用JSON的表示形式如下:

  1. ["abc",12345,false,null

對象、數(shù)組數(shù)據(jù)結構也可以分別組合構成更為復雜的數(shù)據(jù)結構。例如:一個person對象包含name、hobby和address對象,其代碼表現(xiàn)形式如下:

  1.     "name""zhangsan" 
  2.     "hobby":["籃球","羽毛球","游泳"
  3.     "address":{ 
  4.         "city":"Beijing" 
  5.         "street":"Xisanqi" 
  6.         "postcode":100096 
  7.     } 
  8.  } 

注意:如果使用JSON存儲單個數(shù)據(jù)(如“abc”),一定要使用數(shù)組的形式,不要使用Object形式,因為Object形式必須是“名稱:值”的形式。

JSON數(shù)據(jù)轉換

Spring提供了一個HttpMessageConverter接口來實現(xiàn)瀏覽器與控制器類(Controller)之間的數(shù)據(jù)交互。該接口主要用于將請求信息中的數(shù)據(jù)轉換為一個類型為T的對象,并將類型為T的對象綁定到請求方法的參數(shù)中,或者將對象轉換為響應信息傳遞給瀏覽器顯示。

HttpMessageConverter< T >接口有很多實現(xiàn)類,這些實現(xiàn)類可以對不同類型的數(shù)據(jù)進行信息轉換。其中MappingJackson2HttpMessageConverter是Spring MVC默認處理JSON格式請求響應的實現(xiàn)類。該實現(xiàn)類利用Jackson開源包讀寫JSON數(shù)據(jù),將Java對象轉換為JSON對象和XML文檔,同時也可以將JSON對象和XML文檔轉換為Java對象。

要使用MappingJackson2HttpMessageConverter對數(shù)據(jù)進行轉換,就需要使用Jackson的開源包,開發(fā)時所需的開源包及其描述如下所示:

  • jackson-annoations-2.8.8.jar:JSON轉換注解包;
  • jackson-core-2.8.8.jar:JSON轉換核心包;
  • jackson-databind-2.8.8.jar:JSON轉換的數(shù)據(jù)綁定包。

下載地址:http://mvnrepository.com/artifact/com.fasterxml.jackson.core

使用的注解

在使用注解式開發(fā)時,需要用到2個重要的JSON格式轉換注解,分別為@RequestBody和@ResponseBody,關于這兩個注解的說明如下表所示:

JSON數(shù)據(jù)轉換代碼演示:

多學一招:1.使用< bean >標簽方式的JSON轉換器配置

小提示:使用< bean >標簽配置注解方式的處理器映射器和處理器適配器必須配對使用。

多學一招:2. 配置靜態(tài)資源的訪問方式

除了使用< mvc:resources >元素可以實現(xiàn)對靜態(tài)資源的訪問外,還有另外2種靜態(tài)資源訪問的配置方式,分別如下:

1.在springmvc-config.xml文件中,使用< mvc:default-servlet-handler >標簽

  1. <mvc:default-servlet-handler /> 

2.激活Tomcat默認的Servlet來處理靜態(tài)文件訪問

  1. <!--激活tomcat的靜態(tài)資源攔截,需要哪些靜態(tài)文件,再往下追加--> 
  2. <servlet-mapping> 
  3.  <servlet-name>default</servlet-name
  4.  <url-pattern>*.js</url-pattern> 
  5. </servlet-mapping> 
  6. <servlet-mapping> 
  7.  <servlet-name>default</servlet-name
  8.  <url-pattern>*.css</url-pattern> 
  9. </servlet-mapping> 
  10. ... 

以上兩種方式本質上是一樣的,都是使用Web服務器默認的Servlet來處理靜態(tài)資源文件的訪問。其中Servelt名稱也是由使用的服務器來確定的,不同的服務器需要使用不同的名稱,常用服務器及其Servlet名稱如下:

  • Tomcat, Jetty, JBoss, and GlassFish默認Servlet的名稱—— "default";
  • Google App Engine默認Servlet的名稱——"_ah_default";
  • Resin默認Servlet的名稱——"resin-file";
  • WebLogic默認Servlet的名稱—— "FileServlet";
  • WebSphere默認Servlet的名稱——"SimpleFileServlet"。

2. RESTful支持

什么是RESTful?

你回去了解一下RESTful風格之前也寫過

“RESTful也稱之為REST,是英文“Representational State Transfer”的簡稱。可以將他理解為一種軟件架構風格或設計風格,而不是一個標準。

簡單來說,RESTful風格就是把請求參數(shù)變成請求路徑的一種風格。

代碼演示:將采用RESTful風格的請求實現(xiàn)對用戶信息的查詢,同時返回JSON格式的數(shù)據(jù)。

小結

主要對Spring MVC中的JSON數(shù)據(jù)交互和RESTful風格的請求進行了詳細的講解。

首先簡單介紹了JSON的概念、作用和結構,

然后通過案例講解了Spring MVC中如何實現(xiàn)JSON數(shù)據(jù)的交互。

接著講解了什么是RESTful,最后通過用戶信息查詢案例來演示RESTful的實際使用。

 

通過這篇文章的學習,我們可以掌握Spring MVC中的JSON數(shù)據(jù)交互和對RESTful風格支持,這對今后實際工作開發(fā)有極大的幫助。

 

責任編輯:武曉燕 來源: 程序員千羽
相關推薦

2021-11-29 10:50:14

鴻蒙HarmonyOS應用

2009-01-18 15:14:00

數(shù)據(jù)倉庫開發(fā)OLTP

2025-02-10 08:18:27

JSON數(shù)據(jù)交換格式

2010-02-06 15:28:12

ibmdwStrutsREST

2009-09-22 13:02:05

ibmdwStruts

2010-02-06 13:46:55

Android開發(fā)

2013-07-18 17:22:07

Android開發(fā)資源Android開發(fā)學習Android開發(fā)

2013-05-06 15:41:30

Android開發(fā)資源

2011-08-08 15:05:50

iPhone 網站

2023-09-18 08:27:44

插件Java

2023-09-16 18:40:43

Java插件

2024-09-23 15:02:40

2018-11-26 09:55:07

MySQL誤刪數(shù)據(jù)數(shù)據(jù)庫

2023-10-16 16:05:44

PythonPyCharm編程語言

2024-07-25 08:43:35

2016-01-14 09:52:21

JavaIntelliJ ID插件

2015-12-11 14:38:54

開發(fā)快速開發(fā)工具

2020-10-16 10:21:23

大數(shù)據(jù)開發(fā)軟件開發(fā)技術

2013-02-20 15:29:00

JSONAndroid開發(fā)
點贊
收藏

51CTO技術棧公眾號