日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

是否還記得SpringMVC中的@MatrixVariable注解?

來源: 責編: 時間:2024-02-29 14:41:19 236觀看
導讀環境:SpringBoot3.0.51. 簡介RFC 3986【https://datatracker.ietf.org/doc/html/rfc3986#section-3.3】討論了路徑段中的name-value對。在Spring MVC中,我們將它們稱為“矩陣變量”,但它們也可以稱為URI路徑參數。矩陣變

環境:SpringBoot3.0.59DN28資訊網——每日最新資訊28at.com

1. 簡介

RFC 3986【https://datatracker.ietf.org/doc/html/rfc3986#section-3.3】討論了路徑段中的name-value對。在Spring MVC中,我們將它們稱為“矩陣變量”,但它們也可以稱為URI路徑參數。9DN28資訊網——每日最新資訊28at.com

矩陣變量可以出現在任何路徑段中,每個變量用分號分隔,多個值用逗號分隔(例如/cars;color=red,green;year=2012)。還可以通過重復的變量名指定多個值(例如,color=red;color=green;color=blue)。9DN28資訊網——每日最新資訊28at.com

如果期望URL包含矩陣變量,則控制器方法的請求映射必須使用URI變量來屏蔽變量內容,并確保請求可以成功匹配,而不依賴于矩陣變量的順序和存在。下面的例子使用了一個矩陣變量:9DN28資訊網——每日最新資訊28at.com

// GET /pets/42;q=11;r=22@GetMapping("/pets/{petId}")public void findPet(@PathVariable String petId, @MatrixVariable int q) {  // petId == 42  // q == 11}

@MatrixVariable應用場景9DN28資訊網——每日最新資訊28at.com

  • 主要適用于需要在URI路徑中傳遞多個與路徑段相關的參數,并且希望保持URI清晰、語義化的情況下。
  • 一個資源需要通過多維度資源定位時,一個URI可能需要同時標識多個維度的信息。比如在一個圖片處理服務中,可能會通過顏色模式、分辨率等參數來定位特定版本的圖片資源。
/images/pic1.png;colors=rgb;resolution=high

2. 實戰案例

2.1 案例1 

@GetMapping("/m1/{id}")public Object matrix1(@PathVariable("id") Long id, @MatrixVariable Integer q, @MatrixVariable String p) {  return String.format("input, id: %d, q: %d, p: %s", id, q, p) ;}

請求9DN28資訊網——每日最新資訊28at.com

圖片圖片9DN28資訊網——每日最新資訊28at.com

2.2 案例2

多個矩陣變量,在不同的路徑變量中定義9DN28資訊網——每日最新資訊28at.com

@GetMapping("/m2/{cateId}/a2/{artId}")public Object matrix2(    @PathVariable("cateId") Long cateId,     @MatrixVariable(pathVar = "cateId", name = "q") Integer q1,     @PathVariable("artId") Long artId,     @MatrixVariable(pathVar = "artId", name = "q") Integer q2) {  return String.format("input, cateId: %d, q: %d, artId: %d, q: %s%n",       cateId, q1, artId, q2) ;}

請求9DN28資訊網——每日最新資訊28at.com

圖片圖片9DN28資訊網——每日最新資訊28at.com

2.3 案例3

使用Map接收矩陣值9DN28資訊網——每日最新資訊28at.com

@GetMapping("/m3/{cateId}/a2/{artId}")public Object matrix3(    @PathVariable("cateId") Long cateId,     @MatrixVariable MultiValueMap<String, String> cateMap,     @PathVariable("artId") Long artId,     @MatrixVariable(pathVar = "artId") MultiValueMap<String, String> artMap) {  return Map.of("cate", cateMap, "art", artMap) ;}

請求9DN28資訊網——每日最新資訊28at.com

圖片圖片9DN28資訊網——每日最新資訊28at.com

注意:這里的a=1,2有多個值可以使用','分割。9DN28資訊網——每日最新資訊28at.com

2.4 案例4

當變量路徑之后沒有添加矩陣參數時,會報錯。9DN28資訊網——每日最新資訊28at.com

圖片圖片9DN28資訊網——每日最新資訊28at.com

我們可以通過配置,指定非必須活著設定默認值。9DN28資訊網——每日最新資訊28at.com

@GetMapping("/m2/{cateId}/a2/{artId}")  public Object matrix2(      ...,      // 設置默認值      @MatrixVariable(pathVar = "artId", name = "q", required = false, defaultValue = "999") Integer q2) {    return String.format("input, cateId: %d, q: %d, artId: %d, q: %s%n",         cateId, q1, artId, q2) ;  }

3. 實現原理

這里以上面的 案例2 講解。9DN28資訊網——每日最新資訊28at.com

3.1 路徑匹配存儲矩陣變量

public abstract class AbstractHandlerMethodMapping {  protected HandlerMethod getHandlerInternal(HttpServletRequest request) throws Exception {    HandlerMethod handlerMethod = lookupHandlerMethod(lookupPath, request);  }  protected HandlerMethod lookupHandlerMethod(String lookupPath, HttpServletRequest request) {    handleMatch(bestMatch.mapping, lookupPath, request);  }}

beastMatch.mapping9DN28資訊網——每日最新資訊28at.com

圖片圖片9DN28資訊網——每日最新資訊28at.com

lookupPath9DN28資訊網——每日最新資訊28at.com

圖片圖片9DN28資訊網——每日最新資訊28at.com

public abstract class RequestMappingInfoHandlerMapping {  protected void handleMatch(RequestMappingInfo info, String lookupPath, HttpServletRequest request) {    extractMatchDetails(pprc, lookupPath, request);  }  private void extractMatchDetails(...) {    // 將矩陣編碼存入到request對象中    request.setAttribute(MATRIX_VARIABLES_ATTRIBUTE, result.getMatrixVariables());  }}

3.2 解析@MatrixVariable注解的參數9DN28資訊網——每日最新資訊28at.com

public class MatrixVariableMethodArgumentResolver {  protected Object resolveName(...) throws Exception {    // 從request中取出上一步存入的map集合    Map<String, MultiValueMap<String, String>> pathParameters = (Map<String, MultiValueMap<String, String>>)        request.getAttribute(HandlerMapping.MATRIX_VARIABLES_ATTRIBUTE, RequestAttributes.SCOPE_REQUEST);    MatrixVariable ann = parameter.getParameterAnnotation(MatrixVariable.class);    // 獲取注解配置的pathVar值    String pathVar = ann.pathVar();    if (!pathVar.equals(ValueConstants.DEFAULT_NONE)) {      if (pathParameters.containsKey(pathVar)) {        // 取出值        paramValues = pathParameters.get(pathVar).get(name);      }    }    // 返回數據    return paramValues.get(0);  }}

以上本篇文章的全部內容,希望對你有所幫助。9DN28資訊網——每日最新資訊28at.com

完畢!!!9DN28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-75322-0.html是否還記得SpringMVC中的@MatrixVariable注解?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 一個超冷門的 Vue3 內置組件,幫我優化了66%的性能!

下一篇: Android平臺原生音視頻編解碼MediaCodec介紹

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国内精品久久久久影院优| 亚洲国产精品成人综合色在线婷婷 | 国产精品国产福利国产秒拍| 国产精品国产自产拍高清av| 国产乱码精品一区二区三| 国内精品伊人久久久久av影院| 经典三级久久| 亚洲精品三级| 一区二区免费在线播放| 午夜精品久久久久久久| 欧美性猛片xxxx免费看久爱 | 欧美精品v日韩精品v国产精品| 欧美日韩视频在线第一区| 国产精品免费网站在线观看| 国产在线观看一区| 亚洲精品免费一区二区三区| 亚洲中无吗在线| 久久久蜜桃一区二区人| 麻豆freexxxx性91精品| 欧美亚州一区二区三区| 国内久久精品| 亚洲精品一区二区在线| 亚洲免费在线视频| 日韩午夜高潮| 亚洲欧美久久| 免费黄网站欧美| 欧美日韩一区二区欧美激情| 久久精品91久久久久久再现| 欧美sm视频| 国产美女精品视频免费观看| 亚洲高清二区| 亚洲欧美另类在线| 男人的天堂亚洲| 国产伦精品一区二区三| 亚洲国产片色| 中文日韩在线视频| 久久香蕉国产线看观看av| 欧美日韩福利在线观看| 黄色国产精品一区二区三区| 一本色道久久综合亚洲精品小说| 亚洲激情视频| 亚洲第一精品夜夜躁人人爽| 亚洲午夜视频在线观看| 麻豆av福利av久久av| 国产精品日日摸夜夜摸av| 日韩一级成人av| 亚欧成人精品| 欧美日本中文字幕| 一区视频在线| 亚洲国产欧美在线人成| 校园激情久久| 欧美精品一区二区久久婷婷| 国内精品久久久久伊人av| 亚洲字幕一区二区| 欧美精品久久天天躁| 国模大胆一区二区三区| 亚洲欧美日韩国产成人| 欧美午夜精品久久久久久孕妇| 在线激情影院一区| 久久精品99国产精品酒店日本| 国产精品v日韩精品| 亚洲美女区一区| 久久天天狠狠| 国产一区二区三区久久久久久久久| 国产精品99久久99久久久二8| 欧美国产高潮xxxx1819| 在线免费观看日本一区| 久久国产手机看片| 国产精品综合| 亚洲欧美在线视频观看| 国产精品成人一区二区艾草| 9国产精品视频| 欧美国产日韩精品| 亚洲国产日本| 免费亚洲一区二区| 娇妻被交换粗又大又硬视频欧美| 久久成人免费| 久久久久国产免费免费| 国产欧美va欧美不卡在线| 亚洲欧美第一页| 国产精品综合不卡av| 午夜精品久久| 欧美不卡三区| 亚洲电影在线免费观看| 亚洲女同在线| 国产精品高清网站| 亚洲影院污污.| 国产精品女主播在线观看| 亚洲欧美久久久| 国产免费观看久久| 欧美在线亚洲在线| 韩国av一区二区三区在线观看| 久久久久欧美| 亚洲福利在线看| 免费成人av资源网| 亚洲精品小视频在线观看| 欧美日韩免费看| 亚洲愉拍自拍另类高清精品| 国产麻豆91精品| 久久精品亚洲一区二区三区浴池| 伊人狠狠色j香婷婷综合| 免费永久网站黄欧美| 日韩午夜av电影| 国产精品每日更新| 久久精品官网| 最新成人av网站| 久久婷婷麻豆| 在线精品福利| 欧美欧美在线| 亚洲欧美在线视频观看| 国内外成人在线视频| 久久综合影音| 亚洲毛片在线观看.| 国产精品乱人伦中文| 久久国产精品久久w女人spa| 亚洲国产导航| 欧美视频在线一区| 久久黄色小说| 亚洲日本欧美天堂| 国产精品老女人精品视频| 久久精品国产视频| 亚洲人成网站色ww在线| 国产精品久久毛片a| 久久久久久九九九九| 日韩视频不卡| 国产丝袜一区二区| 母乳一区在线观看| 亚洲在线一区| 亚洲成人直播| 国产精品美女xx| 免费不卡亚洲欧美| 亚洲在线视频免费观看| 亚洲国产成人精品视频| 国产精品www色诱视频| 久久久噜噜噜久久中文字幕色伊伊| 亚洲精品美女91| 国产伦精品一区二区三区照片91| 麻豆精品在线观看| 亚洲图片欧洲图片日韩av| 狠狠久久综合婷婷不卡| 欧美视频在线免费看| 久久久久久欧美| 一区二区三区精品| 精品不卡视频| 国产精品a久久久久| 久久久久五月天| 亚洲线精品一区二区三区八戒| 伊人精品在线| 国产精品美腿一区在线看| 免费人成精品欧美精品| 国产日韩欧美二区| 欧美精品久久一区| 久久成年人视频| 在线一区免费观看| 亚洲第一福利视频| 国产精品综合不卡av| 欧美日韩精品久久| 久久综合伊人77777蜜臀| 亚洲欧美在线x视频| 亚洲蜜桃精久久久久久久| 国内精品久久久久影院优| 欧美视频中文在线看| 欧美xart系列高清| 欧美在线播放一区| 亚洲视频日本| 欧美日精品一区视频| 久久综合精品国产一区二区三区| 亚洲你懂的在线视频| 亚洲精品社区| 精品二区视频| 国产亚洲精品久久久| 久久免费视频在线| 亚洲欧美日韩国产综合在线| 日韩午夜免费| 亚洲欧洲在线看| 在线观看精品视频| 国产一区二区精品久久99| 国产精品久久久久久久久久妞妞 | 久久免费视频在线| 午夜视频一区二区| 亚洲午夜激情网页| 亚洲精品一区二区三区四区高清| 亚洲第一天堂av| 狠狠狠色丁香婷婷综合激情| 国产欧美一区二区在线观看| 国产精品多人| 欧美日韩视频在线一区二区观看视频 | 国产日韩欧美另类| 国产精品高清在线观看| 欧美日韩在线电影| 欧美韩日视频| 欧美好吊妞视频| 欧美成人影音| 欧美大片18| 欧美激情第二页| 欧美精品一区二区精品网 | 国产精品国产三级国产aⅴ入口 | 国产精品日韩在线| 国产精品日韩一区二区三区| 欧美性猛交xxxx免费看久久久 | 欧美一区=区| 亚洲国产日韩一区二区| 伊人影院久久| 激情婷婷久久|