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

Spring?Boot請(qǐng)求處理之常用參數(shù)注解使用教程

 更新時(shí)間:2022年03月14日 12:03:47   作者:花粥之間  
這篇文章主要給大家介紹了關(guān)于Spring?Boot請(qǐng)求處理之常用參數(shù)注解使用的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

請(qǐng)求處理-SpringBoot常用參數(shù)注解使用

注解:

  • @PathVariable 路徑變量
  • @RequestHeader 獲取請(qǐng)求頭
  • @RequestParam 獲取請(qǐng)求參數(shù)(指問號(hào)后的參數(shù),url?a=1&b=2
  • @CookieValue 獲取Cookie值
  • @RequestAttribute 獲取request域?qū)傩?/li>
  • @RequestBody 獲取請(qǐng)求體[POST]
  • @MatrixVariable 矩陣變量
  • @ModelAttribute

1、@PathVariable注解

該注解主要是用于rest風(fēng)格的搭配使用,在請(qǐng)求路徑中不再以k : v的形式給出請(qǐng)求參數(shù)與值;而是直接給定一個(gè)值。如果方法參數(shù)是一個(gè)Map<String, String>將會(huì)包含路徑中所有的變量與值。

訪問:瀏覽器輸入路徑變量即可,以下是rest風(fēng)格的get請(qǐng)求的展示,直接在地址欄發(fā)起請(qǐng)求就是一個(gè)get請(qǐng)求

獲取所有訪問路徑上的請(qǐng)求參數(shù):localhost:8080/ car/{id}/owner/{username}?age=19&inters=

2、@RequestHeader注解

該注解主要用于獲取請(qǐng)求頭header中的數(shù)據(jù),客戶端請(qǐng)求之后可以拿到一些頭部攜帶的參數(shù)。支持傳統(tǒng)的SpringMVC,也支持WebFlux響應(yīng)式。如果方法參數(shù)是一個(gè)Map<String, String>將會(huì)包含所有的請(qǐng)求頭與值

@GetMapping("user/RequestHeader")
public Map<String,Object> getUser3(@RequestHeader("Accept") String Accept,
                                   @RequestHeader Map<String,String> header){
    Map<String,Object> map=new HashMap<>();
    map.put("Accept",Accept);
    map.put("header",header);
    return map;
}

測(cè)試:

3、@RequestParam注解

主要用于獲取請(qǐng)求參數(shù)名稱,設(shè)置參數(shù)是否可有可無(wú)以及默認(rèn)值。

@RequestParam注解詳解地址:blog.csdn.net/weixin_4380…

4、@CookieValue注解

主要用于獲取Cookie值

5、@RequestAttribute注解

主要用在請(qǐng)求轉(zhuǎn)發(fā)時(shí),如果頁(yè)面無(wú)法直接跳轉(zhuǎn)(如WEB-INF下的success頁(yè)面)可以使用轉(zhuǎn)發(fā)的手段。當(dāng)進(jìn)行轉(zhuǎn)發(fā)時(shí)可以在請(qǐng)求中攜帶上請(qǐng)求的參數(shù),轉(zhuǎn)發(fā)會(huì)攜帶上一次請(qǐng)求的參數(shù)(一次完整的請(qǐng)求包括轉(zhuǎn)發(fā))

由于是同一次請(qǐng)求,因此也可以直接拿到原生的HttpServletRequest,然后從這里面拿參數(shù)和屬性也都是可以的【獲取request域?qū)傩浴俊?/p>

下面就體現(xiàn)了一種轉(zhuǎn)發(fā)的思想

結(jié)果

6、@RequestBody注解

主要獲取表單或者ajax提交的內(nèi)容,將表單中提交的參數(shù)與值獲取全部獲取出來(lái)。即獲取請(qǐng)求體【所以請(qǐng)求必須是post請(qǐng)求--@PostMapping】,一般情況下都會(huì)使用@RequestBody注解將參數(shù)映射到pojo類的能力,但是要保證前后傳入的參數(shù)名是一樣的

7、@MatrixVariable與UrlPathHelper

7.1、基本簡(jiǎn)介

上述是最常見的三種請(qǐng)求方式;而矩陣變量請(qǐng)求是今天的主角一種新的請(qǐng)求風(fēng)格,嚴(yán)格來(lái)說(shuō)矩陣變量的請(qǐng)求需要用到rest風(fēng)格但是又不同于rest.

面試官:頁(yè)面開發(fā)當(dāng)中把cookie禁用了,session里面的內(nèi)容怎么使用(找到)???

  • 正常使用cookie的情況:session.set(a,b)→jsessionid→cookie→每次發(fā)請(qǐng)求攜帶該值
  • 每一個(gè)用戶都有一個(gè)不同的sessionid,我們稱之為jsessionid,jsessionid會(huì)被保存在cookie里面,我們用戶在發(fā)送請(qǐng)求的時(shí)候都會(huì)攜帶cookie。因此禁用了cookie就不能獲取里面保存的對(duì)象。
  • 解決禁用cookie的情況:假設(shè)訪問路徑/abc。我們可以用矩陣變量的形式攜帶jsessionid值:/abc;jsessionid=xxx。上面的過程就是url重寫的過程,相當(dāng)于把cookie的值使用矩陣變量的方式進(jìn)行傳遞。

7.2、MatrixVariable注解

由上面源碼知道首先可以知道這個(gè)注解是一個(gè)修飾在參數(shù)上的注解,并且可以在運(yùn)行時(shí)被JVM虛擬機(jī)加載到。

  • value 和 name屬性是兩個(gè)相同的屬性,用于綁定獲取到請(qǐng)求的參數(shù)。
  • pathvar是一個(gè)比較重要的屬性,當(dāng)多級(jí)路徑中出現(xiàn)了相同的參數(shù)可以用pathvar指定綁定哪一級(jí)路徑,然后在獲取該級(jí)下的參數(shù)。
  • required屬性主要是修飾當(dāng)前這個(gè)矩陣變量是否是必須的;true表示必須,false表示非必須。
  • defaultValue屬性當(dāng)required屬性值為false時(shí),提交請(qǐng)求的矩陣變量中沒有給定該參數(shù)的值可以使用默認(rèn)值替代。

7.3、使用細(xì)節(jié)

由于SpringBoot中默認(rèn)并沒有開啟矩陣變量的支持,直接關(guān)閉了矩陣變量。因此在使用的時(shí)候我們需要對(duì)SpringBoot自動(dòng)裝配的Bean對(duì)象進(jìn)行手動(dòng)的配置更改。

7.3.1、WebMvcAutoConfiguration自動(dòng)裝配

  • WebMvcAutoConfiguration自動(dòng)裝配類由SpringBoot啟動(dòng)時(shí)自動(dòng)裝配;
  • 內(nèi)部類WebMvcAutoConfigurationAdapter適配器實(shí)現(xiàn)了WebMvcConfigurer接口中的所有方法。
  • WebMvcConfigurer接口中的所有方法都是有默認(rèn)實(shí)現(xiàn)的,JDK8的新特性。

7.3.2、UrlPathHelper類

真正使得無(wú)法使用矩陣變量的原因是UrlPathHelper類中的removeSemicolonContent默認(rèn)為true,即移除分號(hào)內(nèi)容。

  • 由于MatrixVariable矩陣變量是根據(jù)分號(hào)進(jìn)行區(qū)分的,而底層默認(rèn)是移除的也就是說(shuō)不生效。
  • 因此手動(dòng)開啟原理:對(duì)于路徑的處理,SpringBoot用UrlPathHelper進(jìn)行解析,其里面的屬性removeSemicolonContent設(shè)置為false,才能讓其支持矩陣變量。

7.3.3、手動(dòng)配置矩陣變量

方法:參照第一章說(shuō)的SpringBoot三個(gè)自配置規(guī)則,利@configuration+WebMvcConfigurer自定義規(guī)則即可,因此為了開啟矩陣變量的使用必須實(shí)現(xiàn)WebMvcConfigurer接口,完成對(duì)configurePathMatch方法的手動(dòng)實(shí)現(xiàn)。而WebMvcConfigurer接口中所有的方法都是default的默認(rèn)方法,因此可以使用適配器模式單獨(dú)對(duì)該方法進(jìn)行重寫。所以可以在配置類中手動(dòng)向IOC容器中配置一個(gè)Bean對(duì)象,該對(duì)象只對(duì)這一個(gè)方法進(jìn)行重寫實(shí)現(xiàn)即可。

重寫如下

7.4、測(cè)試使用

首先必須手動(dòng)配置對(duì)矩陣變量的支持,其次矩陣變量是綁定在rest路徑變量中的

7.4.1、測(cè)試一

上述兩種路徑都會(huì)使用同一個(gè)Controller進(jìn)行處理,path拿到的就是 / 到第一個(gè) ; 號(hào)之間的路徑。

7.4.2、測(cè)試二

Gage綁定{gege}中的age參數(shù),Dage綁定{didi}中的age;這樣就能準(zhǔn)確的區(qū)分出到底獲取哪個(gè)age。

7.4.3、測(cè)試三

8、補(bǔ)充:SpringBoot實(shí)現(xiàn)前后端數(shù)據(jù)交互、json數(shù)據(jù)交互、Controller接收參數(shù)的幾種常用方式

摘自:http://m.fzitv.net/article/240671.htm

現(xiàn)在大多數(shù)互聯(lián)網(wǎng)項(xiàng)目都是采用前后端分離的方式開發(fā),前端人員負(fù)責(zé)頁(yè)面展示和數(shù)據(jù)獲取,后端負(fù)責(zé)業(yè)務(wù)邏輯處理和接口封裝。當(dāng)與前端交互的過程當(dāng)中,常用json數(shù)據(jù)與前端進(jìn)行交互,這樣想取出前端傳送過來(lái)的json數(shù)據(jù)的時(shí)候,就需要用到@RequestBody這個(gè)注解。@RequestBody注解用于讀取http請(qǐng)求的內(nèi)容(字符串),通過springmvc提供的HttpMessageConverter接口將讀到的內(nèi)容轉(zhuǎn)換為json、xml等格式的數(shù)據(jù)并綁定到controller方法的參數(shù)上。

提交方式為 POST 時(shí),

  • JQuery Ajax 以 application/x-www-form-urlencoded 上傳 JSON對(duì)象 ,后端用 @RequestParam 或者Servlet 獲取參數(shù)。

  • JQuery Ajax 以 application/json 上傳 JSON字符串,后端用 @RquestBody 獲取參數(shù)。

獲取參數(shù)的幾種常用注解

  • @PathVariable:一般我們使用URI template樣式映射使用,即url/{param}這種形式,也就是一般我們使用的GET,DELETE,PUT方法會(huì)使用到的,我們可以獲取URL后所跟的參數(shù)。

  • @RequestParam:一般我們使用該注解來(lái)獲取多個(gè)參數(shù),在()內(nèi)寫入需要獲取參數(shù)的參數(shù)名即可,一般在PUT,POST中比較常用。

  • @RequestBody:該注解和@RequestParam殊途同歸,我們使用該注解將所有參數(shù)轉(zhuǎn)換,在代碼部分在一個(gè)個(gè)取出來(lái),也是目前我使用到最多的注解來(lái)獲取參數(shù)

  • 還有@RequestHeader來(lái)獲取頭信息里的值,@CookieValue來(lái)獲取Cookie值等等。在這,我也僅僅說(shuō)明一些較常用的取值方法而已。

總結(jié)

到此這篇關(guān)于Spring Boot請(qǐng)求處理之常用參數(shù)注解使用的文章就介紹到這了,更多相關(guān)Spring Boot請(qǐng)求參數(shù)注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

丹东市| 临武县| 兴海县| 惠水县| 陆良县| 陆川县| 荆州市| 定陶县| 夹江县| 湖南省| 买车| 乌拉特中旗| 湾仔区| 二手房| 大足县| 勃利县| 永丰县| 寻甸| 兴业县| 博客| 东阳市| 班戈县| 九江县| 故城县| 靖边县| 衡阳县| 曲水县| 远安县| 峨眉山市| 淮北市| 海原县| 荔浦县| 宝清县| 海南省| 新巴尔虎右旗| 内丘县| 永嘉县| 水富县| 宁晋县| 临猗县| 镇平县|