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

SpringMVC互聯(lián)網(wǎng)軟件架構(gòu)REST使用詳解

 更新時(shí)間:2017年03月09日 12:41:06   作者:MrSaber  
這篇文章主要為大家詳細(xì)介紹了SpringMVC互聯(lián)網(wǎng)軟件架構(gòu)REST的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

什么是REST

REST:即 Representational State Transfer。(資源)表現(xiàn)層狀態(tài)轉(zhuǎn)化。是目前最流行的一種互聯(lián)網(wǎng)軟件架構(gòu)。它結(jié)構(gòu)清晰、符合標(biāo)準(zhǔn)、易于理解、擴(kuò)展方便,所以正得到越來(lái)越多網(wǎng)站的采用

☐ 資源(Resources):網(wǎng)絡(luò)上的一個(gè)實(shí)體,或者說(shuō)是網(wǎng)絡(luò)上的一個(gè)具體信息。它可以是一段文本、一張圖片、一首歌曲、一種服務(wù),總之就是一個(gè)具體的存在。可以用一個(gè)URI(統(tǒng)一資源定位符)指向它,每種資源對(duì)應(yīng)一個(gè)特定的 URI 。要獲取這個(gè)資源,訪問(wèn)它的URI就可以,因此 URI 即為每一個(gè)資源的獨(dú)一無(wú)二的識(shí)別符。

☐ 表現(xiàn)層(Representation):把資源具體呈現(xiàn)出來(lái)的形式,叫做它的表現(xiàn)層(Representation)。比如,文本可以用 txt 格式表現(xiàn),也可以用 HTML 格式、XML 格式、JSON 格式表現(xiàn),甚至可以采用二進(jìn)制格式。

☐ 狀態(tài)轉(zhuǎn)化(State Transfer):每發(fā)出一個(gè)請(qǐng)求,就代表了客戶端和服務(wù)器的一次交互過(guò)程。HTTP協(xié)議,是一個(gè)無(wú)狀態(tài)協(xié)議,即所有的狀態(tài)都保存在服務(wù)器端。因此,如果客戶端想要操作服務(wù)器,必須通過(guò)某種手段,讓服務(wù)器端發(fā)生“狀態(tài)轉(zhuǎn)化”(State Transfer)。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是 “表現(xiàn)層狀態(tài)轉(zhuǎ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

我們想實(shí)現(xiàn)的效果如下圖,通過(guò)客戶端訪問(wèn)特殊URL(例如該URL末尾的數(shù)字表示用戶ID)來(lái)快速實(shí)現(xiàn)CURD操作。

但是,瀏覽器 form 表單只支持 GET與 POST 請(qǐng)求,而DELETE、PUT 等 method 并不支持,Spring3.0 添加了一個(gè)過(guò)濾器,可以將這些請(qǐng)求轉(zhuǎn)換為標(biāo)準(zhǔn)的 http 方法,使得支持 GET、POST、PUT 與DELETE 請(qǐng)求.這個(gè)過(guò)濾器就是HiddenHttpMethodFilter。

過(guò)濾器的實(shí)現(xiàn)原理大致如下:檢測(cè)請(qǐng)求參數(shù)中是否包含 _method這個(gè)參數(shù),如果包含則獲取其值,然后判斷是哪種操作后繼續(xù)傳遞:    

protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
    //methodParam="_method";
     String paramValue = request.getParameter(this.methodParam);
    if("POST".equals(request.getMethod()) && StringUtils.hasLength(paramValue)) {
      String method = paramValue.toUpperCase(Locale.ENGLISH);
      HiddenHttpMethodFilter.HttpMethodRequestWrapper wrapper = new HiddenHttpMethodFilter.HttpMethodRequestWrapper(request, method);
      filterChain.doFilter(wrapper, response);
    } else {
      filterChain.doFilter(request, response);
    }

  }

演示(REST風(fēng)格的訪問(wèn))

1.配置過(guò)濾器HiddenHttpMethodFilter,可以把POST請(qǐng)求轉(zhuǎn)換為DELETE或PUT請(qǐng)求:


2.在表單中攜帶隱藏域

說(shuō)明:name="_method';

3.在控制器中處理請(qǐng)求

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)分頁(yè)的前臺(tái)頁(yè)面和后臺(tái)代碼

    Java實(shí)現(xiàn)分頁(yè)的前臺(tái)頁(yè)面和后臺(tái)代碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)分頁(yè)的前臺(tái)頁(yè)面和后臺(tái)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 關(guān)于SpringBoot打包測(cè)試、生產(chǎn)環(huán)境方式

    關(guān)于SpringBoot打包測(cè)試、生產(chǎn)環(huán)境方式

    這篇文章主要介紹了關(guān)于SpringBoot打包測(cè)試、生產(chǎn)環(huán)境方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • SpringMVC框架如何與Junit整合看這個(gè)就夠了

    SpringMVC框架如何與Junit整合看這個(gè)就夠了

    這篇文章主要介紹了SpringMVC框架如何與Junit整合看這個(gè)就夠了,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 淺談Java引用和Threadlocal的那些事

    淺談Java引用和Threadlocal的那些事

    這篇文章主要介紹了Java引用和Threadlocal的那些事,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • java9區(qū)分opens與exports

    java9區(qū)分opens與exports

    本篇文章主要給大家講述了java9中opens與exports的區(qū)別以及用法的不同之處,一起學(xué)習(xí)下吧。
    2018-02-02
  • Java操作MongoDB模糊查詢和分頁(yè)查詢

    Java操作MongoDB模糊查詢和分頁(yè)查詢

    這篇文章主要介紹了Java操作MongoDB模糊查詢和分頁(yè)查詢的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • Spring?Boot常用功能Profile詳解

    Spring?Boot常用功能Profile詳解

    SpringBootProfile是一個(gè)很常用的功能,我們可以通過(guò)為開(kāi)發(fā)/測(cè)試/生產(chǎn)環(huán)境配置不同的profile來(lái)實(shí)現(xiàn)配置隔離,那么在SpringBoot項(xiàng)目中是如何實(shí)現(xiàn)profile功能的呢
    2022-07-07
  • Java Validation Api如何實(shí)現(xiàn)自定義注解

    Java Validation Api如何實(shí)現(xiàn)自定義注解

    這篇文章主要介紹了Java Validation Api如何實(shí)現(xiàn)自定義注解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Vue實(shí)現(xiàn)驗(yàn)證碼登錄的超詳細(xì)步驟

    Vue實(shí)現(xiàn)驗(yàn)證碼登錄的超詳細(xì)步驟

    這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)驗(yàn)證碼登錄的超詳細(xì)步驟,我們?cè)谑褂胿ue進(jìn)行前端開(kāi)發(fā)時(shí)都需要登錄驗(yàn)證,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • 解決SpringBoot中LocalDateTime返回前端數(shù)據(jù)為數(shù)組結(jié)構(gòu)的問(wèn)題

    解決SpringBoot中LocalDateTime返回前端數(shù)據(jù)為數(shù)組結(jié)構(gòu)的問(wèn)題

    本文主要介紹了解決SpringBoot中LocalDateTime返回前端數(shù)據(jù)為數(shù)組結(jié)構(gòu)的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03

最新評(píng)論

林芝县| 金阳县| 金坛市| 梅河口市| 西丰县| 锦州市| 渭南市| 庆云县| 潼南县| 彭州市| 姚安县| 离岛区| 卓资县| 台江县| 巴马| 吉木萨尔县| 临汾市| 馆陶县| 库尔勒市| 盐源县| 阳信县| 宕昌县| 察雅县| 定州市| 梅州市| 依安县| 游戏| 塘沽区| 高阳县| 视频| 自贡市| 开封市| 景谷| 屏山县| 封开县| 日照市| 旺苍县| 合阳县| 沙雅县| 利津县| 桐庐县|