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

關(guān)于SpringMVC對Restful風格的支持詳解

 更新時間:2022年01月06日 12:35:22   作者:拾階求上  
Restful就是一個資源定位及資源操作的風格,不是標準也不是協(xié)議,只是一種風格,是對http協(xié)議的詮釋,下面這篇文章主要給大家介紹了關(guān)于SpringMVC對Restful風格支持的相關(guān)資料,需要的朋友可以參考下

前言

RESTFUL是一種網(wǎng)絡(luò)應(yīng)用程序的設(shè)計風格和開發(fā)方式,基于HTTP,可以使用XML格式定義或JSON格式定義。

一、RESTful簡介

REST:Representational State Transfer,表現(xiàn)層資源狀態(tài)轉(zhuǎn)移。

1.1、資源

資源是一種看待服務(wù)器的方式。即,將服務(wù)器看作是由很多離散的資源組成。

每個資源是服務(wù)器上一個可命名的抽象概念。

因為資源是一個抽象的概念,所以它不僅僅能代表服務(wù)器文件系統(tǒng)中的一個文件、數(shù)據(jù)庫中的一張表等等具體的東西,可以將資源設(shè)計的要多抽象有多抽象,只要想象力允許而且客戶端應(yīng)用開發(fā)者能夠理解。

與面向?qū)ο笤O(shè)計類似,資源是以名詞為核心來組織的,首先關(guān)注的是名詞。

一個資源可以由一個或多個URI來標識。URI既是資源的名稱,也是資源在Web上的地址。對某個資源感興趣的客戶端應(yīng)用,可以通過資源的URI與其進行交互。

1.2、資源的表述

資源的表述是一段對于資源在某個特定時刻的狀態(tài)的描述??梢栽诳蛻舳?服務(wù)器端之間轉(zhuǎn)移(交換)。

資源的表述可以有多種格式,例如HTML/XML/JSON/純文本/圖片/視頻/音頻等等。

資源的表述格式可以通過協(xié)商機制來確定。請求-響應(yīng)方向的表述通常使用不同的格式。

1.3、狀態(tài)轉(zhuǎn)移

狀態(tài)轉(zhuǎn)移說的是:在客戶端和服務(wù)器端之間轉(zhuǎn)移(transfer)代表資源狀態(tài)的表述。通過轉(zhuǎn)移和操作資源的表述,來間接實現(xiàn)操作資源的目的。

RESTful規(guī)范

1、對URL進行規(guī)范,寫RESTful格式的URL

非REST的URL:http://..../queryItems.action?id=001

REST的URL風格:http://..../items/001

特點:URL簡潔,將參數(shù)通過URL傳到服務(wù)端,請求URL只是對資源的定位,因此不應(yīng)該出現(xiàn)動詞

2、http的方法規(guī)范

不管是刪除、添加、更新,使用的URL是一致的,如果進行刪除,需設(shè)置HTTP的方法為delete,其它同理

后臺controller方法:判斷http方法,如果是delete則執(zhí)行刪除,如果是post則執(zhí)行添加

3、對http的contentType規(guī)范

請求時執(zhí)行contentType,要json數(shù)據(jù),則設(shè)置成json格式的type

而實際使用中第2點往往沒有做到

二、RESTful的實現(xiàn)

具體說,就是 HTTP 協(xié)議里面,四個表示操作方式的動詞:GET、POST、PUT、DELETE。

它們分別對應(yīng)四種基本操作:GET 用來獲取資源,POST 用來新建資源,PUT 用來更新資源,DELETE 用來刪除資源。

REST 風格提倡 URL 地址使用統(tǒng)一的風格設(shè)計,從前到后各個單詞使用斜杠分開,不使用問號鍵值對方式攜帶請求參數(shù),而是將要發(fā)送給服務(wù)器的數(shù)據(jù)作為 URL 地址的一部分,以保證整體風格的一致性。

操作傳統(tǒng)方式REST風格
查詢操作getUserById?id=1user/1–>get請求方式
保存操作saveUseruser–>post請求方式
刪除操作deleteUser?id=1user/1–>delete請求方式
更新操作updateUseruser–>put請求方式

三、HiddenHttpMethodFilter

Q:由于瀏覽器只支持發(fā)送get和post方式的請求,那么該如何發(fā)送put和delete請求呢?

A:SpringMVC 提供了 HiddenHttpMethodFilter 幫助我們將 POST 請求轉(zhuǎn)換為 DELETE 或 PUT 請求。

3.1、HiddenHttpMethodFilter 過濾器處理put和delete請求

要求:

  • 當前請求的請求方式必須為post。
  • 當前通過post請求封裝的實際請求方式通過請求參數(shù)_method傳輸。

HiddenHttpMethodFilter 過濾器就會將當前請求的請求方式轉(zhuǎn)換為請求參數(shù)_method的值,因此請求參數(shù)_method的值才是最終的請求方式。

3.2、在web.xml中注冊HiddenHttpMethodFilter

<filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

3.3、過濾器的先后配置順序

當 SpringMVC中提供了兩個過濾器:CharacterEncodingFilter和HiddenHttpMethodFilter 在web.xml中注冊時,必須先注冊CharacterEncodingFilter,再注冊HiddenHttpMethodFilter。

原因:

在 CharacterEncodingFilter 中通過 request.setCharacterEncoding(encoding) 方法設(shè)置字符集的 request.setCharacterEncoding(encoding) 方法要求前面不能有任何獲取請求參數(shù)的操作。

而 HiddenHttpMethodFilter 恰恰有一個獲取請求方式的操作:String paramValue = request.getParameter(this.methodParam);

總結(jié)

到此這篇關(guān)于SpringMVC對Restful風格支持的文章就介紹到這了,更多相關(guān)SpringMVC對Restful風格的支持內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot使用jsr303校驗的實現(xiàn)

    SpringBoot使用jsr303校驗的實現(xiàn)

    這篇文章主要介紹了SpringBoot使用jsr303校驗的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-10-10
  • Mybatis-Plus邏輯刪除的用法詳解

    Mybatis-Plus邏輯刪除的用法詳解

    這篇文章主要為大家詳細介紹了Mybatis-Plus 邏輯刪除的用法,文中有詳細的代碼示例,對我們的學(xué)習或工作有一定的幫助,需要的朋友可以參考下
    2023-07-07
  • java中對象和JSON格式的轉(zhuǎn)換方法代碼

    java中對象和JSON格式的轉(zhuǎn)換方法代碼

    JSON格式可以輕松地以面向?qū)ο蟮姆绞睫D(zhuǎn)換為Java對象,下面這篇文章主要給大家介紹了關(guān)于java中對象和JSON格式的轉(zhuǎn)換方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • java中接口(interface)及使用方法示例

    java中接口(interface)及使用方法示例

    這篇文章主要介紹了java中接口(interface)及使用方法示例,涉及接口定義的簡單介紹以及Java語言代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-11-11
  • Java Swing JCheckBox復(fù)選框的實現(xiàn)方法

    Java Swing JCheckBox復(fù)選框的實現(xiàn)方法

    這篇文章主要介紹了Java Swing JCheckBox復(fù)選框的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-12-12
  • springboot注解之@Conditional使用解析

    springboot注解之@Conditional使用解析

    這篇文章主要介紹了springboot注解之@Conditional使用解析,conditional 這個英文單詞翻譯過來是有條件的,所以 @Conditional 注解是作為條件存在的,如果滿足配置的條件則執(zhí)行,如果沒有滿足的話就不執(zhí)行,需要的朋友可以參考下
    2023-11-11
  • Spring?Boot?+?Spring?Batch?實現(xiàn)批處理任務(wù)的詳細教程

    Spring?Boot?+?Spring?Batch?實現(xiàn)批處理任務(wù)的詳細教程

    這篇文章主要介紹了Spring?Boot+Spring?Batch實現(xiàn)批處理任務(wù),本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Jenkins一鍵打包部署SpringBoot應(yīng)用的方法步驟

    Jenkins一鍵打包部署SpringBoot應(yīng)用的方法步驟

    本文主要介紹了使用Jenkins一鍵打包部署SpringBoot應(yīng)用的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • java?實現(xiàn)獲取指定位置后的第一個數(shù)字

    java?實現(xiàn)獲取指定位置后的第一個數(shù)字

    這篇文章主要介紹了java?實現(xiàn)獲取指定位置后的第一個數(shù)字,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java中transient關(guān)鍵字的作用解析

    java中transient關(guān)鍵字的作用解析

    這篇文章主要介紹了java中transient關(guān)鍵字的作用解析,日常業(yè)務(wù)中,為了安全起見,有些敏感信息我們不希望在網(wǎng)絡(luò)間被傳輸可以使用transient對字段進行修飾,不進行序列化,則返回獲取到的字段為null,需要的朋友可以參考下
    2023-11-11

最新評論

舟山市| 蒲江县| 商南县| 缙云县| 宜丰县| 岳池县| 衡南县| 四会市| 安义县| 汪清县| 双鸭山市| 廉江市| 莱阳市| 许昌县| 承德县| 甘泉县| 长兴县| 涿鹿县| 浦北县| 苏尼特右旗| 图片| 兴业县| 太仆寺旗| 西城区| 武平县| 思茅市| 饶阳县| 铜鼓县| 德兴市| 岐山县| 竹北市| 沂源县| 通城县| 定安县| 镇康县| 新和县| 江华| 耿马| 公主岭市| 云霄县| 峡江县|