欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringMVC?RESTFul及REST架構(gòu)風(fēng)格介紹

 更新時(shí)間:2022年05月28日 16:10:27   作者:把蘋果咬哭的測(cè)試筆記  
這篇文章主要為大家介紹了SpringMVC?RESTFul及REST架構(gòu)風(fēng)格介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、RESTful 簡(jiǎn)介

REST 是一種軟件架構(gòu)風(fēng)格。

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

對(duì)此,有幾個(gè)名字需要理解一下:

表現(xiàn)層:實(shí)際上就是前端的頁(yè)面到后端的控制層。

資源:當(dāng)應(yīng)用部署到服務(wù)器上之后,萬(wàn)物皆資源,比如一個(gè)類、一個(gè)html頁(yè)面等等。

  • 1-資源是一種看待服務(wù)器的方式,即將服務(wù)器看作是由很多離散的資源組成。每個(gè)資源是服務(wù)器上一個(gè)可命名的抽象概念。
  • 2-因?yàn)橘Y源是一個(gè)抽象的概念,所以它不僅僅能代表服務(wù)器文件系統(tǒng)中的一個(gè)文件、數(shù)據(jù)庫(kù)中的一張表等等具體的東西,可以將資源設(shè)計(jì)的要多抽象有多抽象,只要想象力允許而且客戶端應(yīng)用開發(fā)者能夠理解。
  • 3-與面向?qū)ο笤O(shè)計(jì)類似,資源是以名詞為核心來組織的,首先關(guān)注的是名詞。
  • 4-一個(gè)資源可以由一個(gè)或多個(gè)URI來標(biāo)識(shí)。
  • 5-URI既是資源的名稱,也是資源在Web上的地址。
  • 6-對(duì)某個(gè)資源感興趣的客戶端應(yīng)用,可以通過資源的URI與其進(jìn)行交互。

資源的表述:是一段對(duì)于資源在某個(gè)特定時(shí)刻的狀態(tài)的描述。

  • 1-可以在客戶端-服務(wù)器端之間轉(zhuǎn)移(交換)。
  • 2-資源的表述可以有多種格式,例如HTML/XML/JSON/純文本/圖片/視頻/音頻等等。
  • 3-資源的表述格式可以通過協(xié)商機(jī)制來確定。
  • 4-請(qǐng)求-響應(yīng)方向的表述通常使用不同的格式。

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

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

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

它們分別對(duì)應(yīng)四種基本操作:

  • GET 用來獲取資源
  • POST 用來新建資源
  • PUT 用來更新資源
  • DELETE 用來刪除資源

REST 風(fēng)格提倡 URL 地址使用統(tǒng)一的風(fēng)格設(shè)計(jì),從前到后各個(gè)單詞使用斜杠分開。

不使用問號(hào)鍵值對(duì)方式攜帶請(qǐng)求參數(shù),而是將要發(fā)送給服務(wù)器的數(shù)據(jù)作為 URL 地址的一部分,以保證整體風(fēng)格的一致性。比如:

實(shí)踐一下

使用 RESTFul 模擬一下用戶資源的增刪改查。

1. get 和 post 請(qǐng)求

控制器方法:

@Controller
public class UserController {
    /**
     * /user    GET     查詢所有用戶信息
     * /user/1  GET     根據(jù)用戶 id 查詢用戶信息
     * /user    POST    添加用戶信息
     * /user/1  DELETE  刪除用戶信息
     * /user    PUT     更新用戶信息
     */
    @RequestMapping(value = "/user", method = RequestMethod.GET)
    public String getAllUser() {
        System.out.println("查詢所有用戶信息");
        return "success";
    }
    @RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
    public String getUserById() {
        System.out.println("根據(jù)用戶 id 查詢用戶信息");
        return "success";
    }
    @RequestMapping(value = "/user", method = RequestMethod.POST)
    public String addUser(String username, String password) {
        System.out.println("添加用戶信息:" + username + "," + password);
        return "success";
    }
}

test_rest.html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p>test_rest 頁(yè)面</p>
    <a th:href="@{/user}" rel="external nofollow" >查詢所有用戶信息</a><br>
    <a th:href="@{/user/1}" rel="external nofollow" >根據(jù)用戶 id 查詢用戶信息</a><br>
    <form th:action="@{/user}" method="post">
        用戶名:<input type="text" name="username"><br>
        密碼:<input type="password" name="password"><br>
        <input type="submit" name="添加用戶"><br>
    </form>
</body>
</html>

配置文件里,加上視圖控制:

<mvc:view-controller path="/testRest" view-name="test_rest"></mvc:view-controller>

這樣就可以通過http://localhost:8080/springmvc/testRest訪問到test_rest.html的頁(yè)面了。

點(diǎn)擊測(cè)試一下。

2. put 和 delete 請(qǐng)求

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

答案:使用 HiddenHttpMethodFilter 過濾器,可以幫助我們將 POST 請(qǐng)求轉(zhuǎn)換為 DELETE 或 PUT 請(qǐng)求。

在web.xml中注冊(cè)HiddenHttpMethodFilter,這個(gè)過濾器要配置在編碼過濾器之后,防止更新操作獲取到的參數(shù)是亂碼:

<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>

注意使用的前提條件有 2 個(gè):

  • 當(dāng)前請(qǐng)求的請(qǐng)求方式必須為 post當(dāng)
  • 前請(qǐng)求必須傳輸請(qǐng)求參數(shù) _method

那么前端頁(yè)面里修改的表單應(yīng)該是成這樣:

<p>修改用戶信息的表單</p>
    <form th:action="@{/user}" method="post">
        <input type="hidden" name="_method" value="put">
        用戶名:<input type="text" name="username"><br>
        密碼:<input type="password" name="password"><br>
        <input type="submit" name="修改"><br>
    </form>

注意這里name="_method" value="put",value 的值才是真正的方法名。

提交測(cè)試一下:

感謝《尚硅谷》的學(xué)習(xí)資源。

以上就是SpringMVC RESTFul及REST架構(gòu)風(fēng)格介紹的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC RESTFul架構(gòu)風(fēng)格的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JavaWeb表單注冊(cè)界面的實(shí)現(xiàn)方法

    JavaWeb表單注冊(cè)界面的實(shí)現(xiàn)方法

    這篇文章主要介紹了JavaWeb表單注冊(cè)界面的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文大家能掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • 新手了解java 異常處理基礎(chǔ)知識(shí)

    新手了解java 異常處理基礎(chǔ)知識(shí)

    Java中異常提供了一種識(shí)別及響應(yīng)錯(cuò)誤情況的一致性機(jī)制,有效地異常處理能使程序更加健壯、易于調(diào)試。那么這篇文章總結(jié)了Java有效處理異常的三個(gè)原則,有需要的朋友們可以參考借鑒
    2021-07-07
  • java隨機(jī)生成一個(gè)名字和對(duì)應(yīng)拼音的方法

    java隨機(jī)生成一個(gè)名字和對(duì)應(yīng)拼音的方法

    這篇文章主要介紹了java隨機(jī)生成一個(gè)名字和對(duì)應(yīng)拼音的方法,涉及java針對(duì)數(shù)組及隨機(jī)數(shù)操作的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • mybatis+springboot發(fā)布postgresql數(shù)據(jù)的實(shí)現(xiàn)

    mybatis+springboot發(fā)布postgresql數(shù)據(jù)的實(shí)現(xiàn)

    本文主要介紹了mybatis+springboot發(fā)布postgresql數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • Java中Arraylist的最大長(zhǎng)度

    Java中Arraylist的最大長(zhǎng)度

    這篇文章主要介紹了Java中Arraylist的最大長(zhǎng)度,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java中的ReentrantReadWriteLock實(shí)現(xiàn)原理詳解

    Java中的ReentrantReadWriteLock實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了Java中的ReentrantReadWriteLock實(shí)現(xiàn)原理詳解,讀寫鎖實(shí)現(xiàn)了接口ReadWriteLock,適合于讀多寫少的情況,支持公平鎖和非公平鎖,支持可沖入(進(jìn)入讀鎖后可再進(jìn)入讀鎖,進(jìn)入寫鎖后可再進(jìn)入寫鎖和讀鎖),需要的朋友可以參考下
    2024-01-01
  • Java基本概念監(jiān)視器實(shí)習(xí)原理解析

    Java基本概念監(jiān)視器實(shí)習(xí)原理解析

    這篇文章主要介紹了Java基本概念監(jiān)視器實(shí)習(xí)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java小程序賽馬游戲?qū)崿F(xiàn)過程詳解

    Java小程序賽馬游戲?qū)崿F(xiàn)過程詳解

    這篇文章主要介紹了Java小程序賽馬游戲?qū)崿F(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java中常見的對(duì)象轉(zhuǎn)換工具

    Java中常見的對(duì)象轉(zhuǎn)換工具

    對(duì)象進(jìn)行對(duì)象的轉(zhuǎn)換是一個(gè)操作重復(fù)且繁瑣的工作,于是市面上就有許多的對(duì)象轉(zhuǎn)換工具來解決這個(gè)問題,下面我們就來看看幾個(gè)比較常用的工具(mapstruct,Spring BeanUtils,Apache BeanUtils)使用方式及其性能
    2023-04-04
  • Springboot通過url訪問本地圖片代碼實(shí)例

    Springboot通過url訪問本地圖片代碼實(shí)例

    這篇文章主要介紹了springboot通過url訪問本地圖片代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論