亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于SpringMVC對(duì)Restful風(fēng)格的支持詳解

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

前言

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

一、RESTful簡(jiǎn)介

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

1.1、資源

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

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

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

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

一個(gè)資源可以由一個(gè)或多個(gè)URI來(lái)標(biāo)識(shí)。URI既是資源的名稱,也是資源在Web上的地址。對(duì)某個(gè)資源感興趣的客戶端應(yīng)用,可以通過(guò)資源的URI與其進(jìn)行交互。

1.2、資源的表述

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

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

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

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

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

RESTful規(guī)范

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

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

REST的URL風(fēng)格:http://..../items/001

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

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

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

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

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

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

而實(shí)際使用中第2點(diǎn)往往沒(méi)有做到

二、RESTful的實(shí)現(xiàn)

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

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

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

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

三、HiddenHttpMethodFilter

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

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

3.1、HiddenHttpMethodFilter 過(guò)濾器處理put和delete請(qǐng)求

要求:

  • 當(dāng)前請(qǐng)求的請(qǐng)求方式必須為post。
  • 當(dāng)前通過(guò)post請(qǐng)求封裝的實(shí)際請(qǐng)求方式通過(guò)請(qǐng)求參數(shù)_method傳輸。

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

3.2、在web.xml中注冊(cè)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、過(guò)濾器的先后配置順序

當(dāng) SpringMVC中提供了兩個(gè)過(guò)濾器:CharacterEncodingFilter和HiddenHttpMethodFilter 在web.xml中注冊(cè)時(shí),必須先注冊(cè)CharacterEncodingFilter,再注冊(cè)HiddenHttpMethodFilter。

原因:

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

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

總結(jié)

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

相關(guān)文章

  • 淺談maven的jar包和war包區(qū)別 以及打包方法

    淺談maven的jar包和war包區(qū)別 以及打包方法

    下面小編就為大家分享一篇淺談maven的jar包和war包區(qū)別 以及打包方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助
    2017-11-11
  • java中 Set與Map排序輸出到Writer詳解及實(shí)例

    java中 Set與Map排序輸出到Writer詳解及實(shí)例

    這篇文章主要介紹了 java中 Set與Map排序輸出到Writer詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Springboot實(shí)現(xiàn)ENC加密的詳細(xì)流程

    Springboot實(shí)現(xiàn)ENC加密的詳細(xì)流程

    在項(xiàng)目開發(fā)過(guò)程中,需要配置數(shù)據(jù)庫(kù)連接密碼、Redis密碼、網(wǎng)盤上傳的AK/SK等敏感信息,都需要保存在配置文件里,或者配置中心,這些信息如果泄露,還是會(huì)造成一定的困擾,下面這篇文章主要給大家介紹了關(guān)于Springboot實(shí)現(xiàn)ENC加密的詳細(xì)流程,需要的朋友可以參考下
    2023-06-06
  • Java之BigDecimal實(shí)現(xiàn)詳解

    Java之BigDecimal實(shí)現(xiàn)詳解

    這篇文章主要介紹了Java之BigDecimal實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • maven搭建java ee項(xiàng)目圖文教程

    maven搭建java ee項(xiàng)目圖文教程

    這篇文章主要為大家詳細(xì)介紹了maven搭建java ee項(xiàng)目圖文教程,感興趣的小伙伴們可以參考一下
    2016-04-04
  • MyBatis-Plus的物理刪除和邏輯刪除(使用場(chǎng)景)

    MyBatis-Plus的物理刪除和邏輯刪除(使用場(chǎng)景)

    數(shù)據(jù)庫(kù)中的數(shù)據(jù)刪除會(huì)分為兩種:物理刪除 和 邏輯刪除,接下來(lái)通過(guò)本文給大家介紹MyBatis-Plus的物理刪除和邏輯刪除使用場(chǎng)景分析,感興趣的朋友一起看看吧
    2021-09-09
  • Java HashMap在遍歷時(shí)刪除元素的實(shí)現(xiàn)

    Java HashMap在遍歷時(shí)刪除元素的實(shí)現(xiàn)

    本文主要介紹了Java HashMap在遍歷時(shí)刪除元素的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • mybatis條件語(yǔ)句中帶數(shù)組參數(shù)的處理

    mybatis條件語(yǔ)句中帶數(shù)組參數(shù)的處理

    這篇文章主要介紹了mybatis條件語(yǔ)句中帶數(shù)組參數(shù)的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • springboot接收日期字符串參數(shù)與返回日期字符串類型格式化

    springboot接收日期字符串參數(shù)與返回日期字符串類型格式化

    這篇文章主要介紹了springboot接收日期字符串參數(shù)與返回日期字符串類型格式化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java中的編碼轉(zhuǎn)換過(guò)程(以u(píng)tf8和gbk為例)

    java中的編碼轉(zhuǎn)換過(guò)程(以u(píng)tf8和gbk為例)

    這篇文章主要介紹了java中的編碼轉(zhuǎn)換過(guò)程(以u(píng)tf8和gbk為例),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評(píng)論