国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringMVC第八階段:Restful風(fēng)格

這篇具有很好參考價(jià)值的文章主要介紹了SpringMVC第八階段:Restful風(fēng)格。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Restful風(fēng)格

1、Restful 風(fēng)格的介紹

Restful 一種軟件架構(gòu)風(fēng)格、設(shè)計(jì)風(fēng)格,而不是標(biāo)準(zhǔn),只是提供了一組設(shè)計(jì)原則和約束條件。它主要用于客戶端和服務(wù)器交互類的軟件。基于這個(gè)風(fēng)格設(shè)計(jì)的軟件可以更簡潔,更有層次,更易于實(shí)現(xiàn)緩存等機(jī)制。

REST(英文:Representational State Transfer,簡稱REST)描述了一個(gè)架構(gòu)樣式的網(wǎng)絡(luò)系統(tǒng),比如 web 應(yīng)用程序。它首次出現(xiàn)在 2000 年 Roy Fielding 的博士論文中,他是 HTTP 規(guī)范的主要編寫者之一。在目前主流的三種Web服務(wù)交互方案中,REST相比于SOAP(Simple Object Access protocol,簡單對(duì)象訪問協(xié)議)以及XML-RPC更加簡單明了,無論是對(duì)URL的處理還是對(duì)Payload的編碼,REST都傾向于用更加簡單輕量的方法設(shè)計(jì)和實(shí)現(xiàn)。值得注意的是REST并沒有一個(gè)明確的標(biāo)準(zhǔn),而更像是一種設(shè)計(jì)的風(fēng)格。

原則條件

REST 指的是一組架構(gòu)約束條件和原則。滿足這些約束條件和原則的應(yīng)用程序或設(shè)計(jì)就是 RESTful。

Web 應(yīng)用程序最重要的 REST 原則是,客戶端和服務(wù)器之間的交互在請(qǐng)求之間是無狀態(tài)的。從客戶端到服務(wù)器的每個(gè)請(qǐng)求都必須包含理解請(qǐng)求所必需的信息。如果服務(wù)器在請(qǐng)求之間的任何時(shí)間點(diǎn)重啟,客戶端不會(huì)得到通知。此外,無狀態(tài)請(qǐng)求可以由任何可用服務(wù)器回答,這十分適合云計(jì)算之類的環(huán)境??蛻舳丝梢跃彺鏀?shù)據(jù)以改進(jìn)性能。
在服務(wù)器端,應(yīng)用程序狀態(tài)和功能可以分為各種資源。資源是一個(gè)有趣的概念實(shí)體,它向客戶端公開。資源的例子有:應(yīng)用程序?qū)ο?、?shù)據(jù)庫記錄、算法等等。每個(gè)資源都使用 URI (Universal Resource Identifier) 得到一個(gè)唯一的地址。所有資源都共享統(tǒng)一的接口,以便在客戶端和服務(wù)器之間傳輸狀態(tài)。使用的是標(biāo)準(zhǔn)的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。Hypermedia 是應(yīng)用程序狀態(tài)的引擎,資源表示通過超鏈接互聯(lián)。

Restful是一種設(shè)計(jì)風(fēng)格。對(duì)于我們Web開發(fā)人員來說。就是使用一個(gè)url地址表示一個(gè)唯一的資源。然后把原來的請(qǐng)求參數(shù)加入到請(qǐng)求資源地址中。然后原來請(qǐng)求的增,刪,改,查操作。改為使用HTTP協(xié)議中請(qǐng)求方式GET、POST、PUT、DELETE表示。

1、把請(qǐng)求參數(shù)加入到請(qǐng)求的資源地址中
2、原來的增,刪,改,查。使用HTTP請(qǐng)求方式,POST、DELETE、PUT、GET分別一一對(duì)應(yīng)。

2、如何學(xué)習(xí)restful風(fēng)格

2.1、就是把傳統(tǒng)的請(qǐng)求參數(shù)加入到請(qǐng)求地址是什么樣子?

傳統(tǒng)的方式是:

比如:http://ip:port/工程名/資源名?請(qǐng)求參數(shù)
舉例:http://127.0.0.1:8080/springmvc/book?action=delete&id=1

restful風(fēng)格是:

比如:http://ip:port/工程名/資源名/請(qǐng)求參數(shù)/請(qǐng)求參數(shù)
舉例:http://127.0.0.1:8080/springmvc/book/1

請(qǐng)求的動(dòng)作刪除由請(qǐng)求方式delete決定

2.2、restful風(fēng)格中請(qǐng)求方式GET、POST、PUT、DELETE分別表示查、增、改、刪

GET請(qǐng)求 對(duì)應(yīng) 查詢

http://ip:port/工程名/book/1		HTTP請(qǐng)求GET		表示要查詢id為1的圖書
http://ip:port/工程名/book			HTTP請(qǐng)求GET		表示查詢?nèi)康膱D書

POST請(qǐng)求 對(duì)應(yīng) 添加

http://ip:port/工程名/book			HTTP請(qǐng)求POST		表示要添加一個(gè)圖書

PUT請(qǐng)求 對(duì)應(yīng) 修改

http://ip:port/工程名/book/1		HTTP請(qǐng)求PUT		表示要修改id為1的圖書信息

DELETE請(qǐng)求 對(duì)應(yīng) 刪除

http://ip:port/工程名/book/1		HTTP請(qǐng)求DELETE		表示要?jiǎng)h除id為1的圖書信息

2.3、SpringMVC中如何發(fā)送GET請(qǐng)求、POST請(qǐng)求、PUT請(qǐng)求、DELETE請(qǐng)求

我們知道發(fā)起GET請(qǐng)求和POST請(qǐng)求,只需要在表單的form標(biāo)簽中,設(shè)置method=”get” 就是GET請(qǐng)求。
設(shè)置form標(biāo)簽的method=”post”。就會(huì)發(fā)起POST請(qǐng)求。而PUT請(qǐng)求和DELETE請(qǐng)求。要如何發(fā)起呢。

1、要有post請(qǐng)求的form標(biāo)簽
2、在form表單中,添加一個(gè)額外的隱藏域_method=”PUT”或_method=”DELETE”
3、在web.xml中配置一個(gè)Filter過濾器org.springframework.web.filter.HiddenHttpMethodFilter(注意,這個(gè)Filter一定要在處理亂碼的Filter后面)

3、Restful風(fēng)格的Controller如何實(shí)現(xiàn)

客戶端表單:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>restful首頁</title>
  </head>
  <body>
  restful首頁 <br><br>
  <a href="${pageContext.request.contextPath}/person/1">查詢一個(gè)用戶</a> <br>
  <a href="${pageContext.request.contextPath}/person">查詢?nèi)坑脩?span id="n5n3t3z"    class="token operator"></a> <br>
  <form action="${pageContext.request.contextPath}/person" method="post">
    <input type="submit" value="添加用戶">
  </form>
  <%--
    如果要實(shí)現(xiàn)put請(qǐng)求或delete請(qǐng)求,需要完成以下幾個(gè)步驟: <br/>
      1 有一個(gè)post請(qǐng)求的form表單 <br/>
      2 添加隱藏域 name="_method" value="PUT|DELETE" 用于表示相應(yīng)的請(qǐng)求 <br/>
      3 在web.xml中配置支持restful風(fēng)格的Filter過濾器
  --%>
  <form action="${pageContext.request.contextPath}/person/1" method="post">
    <input type="hidden" name="_method" value="PUT" />
    <input type="submit" value="修改用戶">
  </form>

  <form action="${pageContext.request.contextPath}/person/1" method="post">
    <input type="hidden" name="_method" value="DELETE" />
    <input type="submit" value="刪除用戶">
  </form>
  
  </body>
</html>

Controller中的代碼:

@Controller
public class RestController {

    @RequestMapping(value = "/person/1", method = RequestMethod.GET)
    public String queryPersonById() {
        System.out.println("這是查詢id為1的用戶");
        return "redirect:/index.jsp";
    }

    @RequestMapping(value = "/person", method = RequestMethod.GET)
    public String queryPersons() {
        System.out.println("這是查詢?nèi)康挠脩?);
        return "redirect:/index.jsp";
    }


    @RequestMapping(value = "/person", method = RequestMethod.POST)
    public String addPerson() {
        System.out.println("添加用戶");
        return "redirect:/index.jsp";
    }


    @RequestMapping(value = "/person/1", method = RequestMethod.PUT)
    public String updatePerson() {
        System.out.println("修改用戶");
        return "redirect:/index.jsp";
    }


    @RequestMapping(value = "/person/1", method = RequestMethod.DELETE)
    public String deletePerson() {
        System.out.println("刪除用戶");
        return "redirect:/index.jsp";
    }

}

4、Restful風(fēng)格在高版本Tomcat中無法轉(zhuǎn)發(fā)到j(luò)sp頁面

在Tomcat8之后的一些高版本,使用restful風(fēng)格訪問然后轉(zhuǎn)發(fā)到j(luò)sp頁面。就會(huì)有如下的錯(cuò)誤提示:

1 在轉(zhuǎn)發(fā)去的頁面中,添加屬性isErrorPage=“true”
2 使用重定向來進(jìn)行跳轉(zhuǎn)

5、@PathVariable 路徑參數(shù)獲取

前面我們已經(jīng)知道如何編寫和配置restful風(fēng)格的請(qǐng)求和控制器。
那么 現(xiàn)在的問題是。如何接收restful風(fēng)格請(qǐng)求的參數(shù)。比如前面的id值。

一個(gè)變量的情況:文章來源地址http://www.zghlxwxcb.cn/news/detail-474750.html

/**
 * value = "/person/{id}" 中 {id} 是路徑變量<br/>
 * 而{id}變量中的id是變量名 <br/>
 * @PathVariable("id") Integer id 表示把路徑變量id的值賦給參數(shù)id
 */
@RequestMapping(value = "/person/{id}", method = RequestMethod.GET)
public String queryPersonById(@PathVariable("id") Integer id) {
    System.out.println("這是查詢id為1的用戶 ===>>> " + id);
    return "redirect:/index.jsp";
}

到了這里,關(guān)于SpringMVC第八階段:Restful風(fēng)格的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringMVC | SpringMVC中的 “JSON數(shù)據(jù)交互“ 和 “RESTful設(shè)計(jì)風(fēng)格“

    SpringMVC | SpringMVC中的 “JSON數(shù)據(jù)交互“ 和 “RESTful設(shè)計(jì)風(fēng)格“

    作者簡介 :一只大皮卡丘,計(jì)算機(jī)專業(yè)學(xué)生,正在努力學(xué)習(xí)、努力敲代碼中! 讓我們一起繼續(xù)努力學(xué)習(xí)! 該文章 參考學(xué)習(xí)教材 為: 《Java EE企業(yè)級(jí)應(yīng)用開發(fā)教程 (Spring + Spring MVC +MyBatis)》 黑馬程序員 / 編著 文章以課本知識(shí)點(diǎn) + 代碼為主線,結(jié)合自己看書學(xué)習(xí)過程中的理解和

    2024年04月10日
    瀏覽(32)
  • SpringMVC原理分析 | Controller配置、RestFul風(fēng)格

    SpringMVC原理分析 | Controller配置、RestFul風(fēng)格

    ??wei_shuo的個(gè)人主頁 ??wei_shuo的學(xué)習(xí)社區(qū) ??Hello World ! 控制器Controller 控制器復(fù)雜提供訪問應(yīng)用程序的行為,通常通過 接口定義 或 注釋定義 的兩種方法實(shí)現(xiàn) 控制器負(fù)責(zé)解析用戶的請(qǐng)求并將其轉(zhuǎn)換為一個(gè)模型 SpringMVC中一個(gè)控制器可以包含多個(gè)方法 實(shí)現(xiàn)Controller接口 Contro

    2024年02月11日
    瀏覽(21)
  • 【Spring教程30】Spring框架實(shí)戰(zhàn):從零開始學(xué)習(xí)SpringMVC 之 Rest風(fēng)格簡介與RESTful入門案例

    【Spring教程30】Spring框架實(shí)戰(zhàn):從零開始學(xué)習(xí)SpringMVC 之 Rest風(fēng)格簡介與RESTful入門案例

    歡迎大家回到《Java教程之Spring30天快速入門》,本教程所有示例均基于Maven實(shí)現(xiàn),如果您對(duì)Maven還很陌生,請(qǐng)移步本人的博文《如何在windows11下安裝Maven并配置以及 IDEA配置Maven環(huán)境》,本文的上一篇為《SpringMVC 之 服務(wù)器響應(yīng)》 REST(Representational State Transfer),表現(xiàn)形式狀態(tài)轉(zhuǎn)

    2024年02月04日
    瀏覽(23)
  • RESTful:理解REST架構(gòu)風(fēng)格、RESTful API

    一、REST架構(gòu)風(fēng)格 REST(英文Representational State Transfer)是一種基于客戶端和服務(wù)器的架構(gòu)風(fēng)格,用于構(gòu)建可伸縮、可維護(hù)的Web服務(wù)。REST的核心思想是,將Web應(yīng)用程序的功能作為資源來表示,使用統(tǒng)一的標(biāo)識(shí)符(URI)來對(duì)這些資源進(jìn)行操作,并通過HTTP協(xié)議(GET、POST、PUT、DELET

    2024年02月07日
    瀏覽(23)
  • Restful風(fēng)格

    準(zhǔn)備工作 第一步: 創(chuàng)建Maven工程然后手動(dòng)添加 web模塊 第二步: 在 pom.xml 文件中指定Maven工程的打包方式 war 第三步: 引入依賴,由于Maven的傳遞性,我們不必將所有需要的包全部配置依賴,只需要配置最頂端的依賴,其他依賴靠傳遞性導(dǎo)入 第四步: 在web.xml文件中配置SpringMVC的前端控制

    2024年02月07日
    瀏覽(20)
  • Restful風(fēng)格筆記

    Restful風(fēng)格筆記

    @RestController注解 在類上添加@RestController可以默認(rèn)類中的所有方法都帶有@ResponseBody注解,可以省去一個(gè)個(gè)添加的麻煩。 路徑變量 @PathVariable注解可以讓控制方法接收前端傳來的請(qǐng)求中的路徑變量。例如下面這個(gè)例子,無論前端傳來1還是100這個(gè)id都能被控制方法中的requestId這個(gè)

    2024年02月10日
    瀏覽(23)
  • restful風(fēng)格接口命名規(guī)范

    (一)rest 1.概念 REST即表述性狀態(tài)傳遞(英文:Representational State Transfer,簡稱REST)是Roy Fielding博士在2000年他的博士論文中提出來的一種軟件架構(gòu)風(fēng)格。它是一種針對(duì)網(wǎng)絡(luò)應(yīng)用的設(shè)計(jì)和開發(fā)方式,可以降低開發(fā)的復(fù)雜性,提高系統(tǒng)的可伸縮性。 可理解為: URL定位資源,用H

    2024年02月02日
    瀏覽(20)
  • 【SpringBoot】| 接口架構(gòu)風(fēng)格—RESTful

    【SpringBoot】| 接口架構(gòu)風(fēng)格—RESTful

    目錄 ? 一:接口架構(gòu)風(fēng)格—RESTful 1.?認(rèn)識(shí)RESTful 2.?RESTful 的注解 1.?認(rèn)識(shí)RESTful (1)接口 ①接口: API(Application Programming Interface,應(yīng)用程序接口)是一些預(yù)先定義的接口(如函數(shù)、HTTP接口),或指軟件系統(tǒng)不同組成部分銜接的約定。 用來提供應(yīng)用程序與開發(fā)人員基于某軟件

    2024年02月13日
    瀏覽(20)
  • RESTful 風(fēng)格是指什么

    RESTful( Representational State Transfer )是一種基于 HTTP 協(xié)議的軟件架構(gòu)風(fēng)格,用于設(shè)計(jì)網(wǎng)絡(luò)應(yīng)用程序的接口。它的設(shè)計(jì)理念是利用 HTTP 協(xié)議中的方法(如 GET、POST、PUT、DELETE 等)來對(duì)資源進(jìn)行 CRUD ,使得客戶端和服務(wù)器之間的通信變得簡單、靈活和可擴(kuò)展。 下面是 RESTful 風(fēng)格的

    2024年02月21日
    瀏覽(28)
  • API 風(fēng)格 (三):RESTful & gRPC

    API 風(fēng)格 (三):RESTful & gRPC

    對(duì)比項(xiàng) RESTful gRPC 優(yōu)點(diǎn) 相對(duì)來說,REST更規(guī)范、標(biāo)準(zhǔn)、通用,無論哪種語言都支持 HTTP 協(xié)議,可以對(duì)接 外部 很多系統(tǒng),只要滿足 HTTP 調(diào)用即可。 通常采用 JSON 作為數(shù)據(jù)通信格式,可讀性強(qiáng),開發(fā)調(diào)試都很方便。 客戶端與服務(wù)端之間 松耦合,讓變更更加方便。 屏蔽網(wǎng)路細(xì)節(jié),

    2023年04月08日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包