亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Spring MVC溫故而知新系列教程之請求映射RequestMapping注解

2024-07-14 08:40:58
字體:
來源:轉載
供稿:網友

RequestMapping注解說明

@RequestMapping注解的作用將Web請求映射到特定處理程序類和/或處理程序方法,這個注解可以用于類或者方法上,并通過屬性value指定請求路徑。用在Controller類上表示提供初步的URL請求映射信息,相對于Web應用的根目錄,這是一個前置請求路徑。用在Controller中方法上,表示提供詳細的URL映射。如果Controller類上沒有加RequestMapping注解,則方法上注解標記的URL則是相對于Web應用的根目錄。

@RequestMapping注解提供以下幾個屬性:

         name:用于指定映射器名稱

         value:用于指定映射路徑,同path

         path:用于指定映射路徑,同value

         method:用于指定請求類型:GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE

         params:指定請求的參數

         headers:指定請求頭部,源碼示例:RequestMapping(value = "/something", headers = "content-type=text/*")

         consumes:指定處理請求提交的內容類型(Content-Type),例如application/json, text/html,只有在Content-Type匹配這些媒體類型之一時才會映射請求

         produces:指定請求返回的內容類型 例如:produces = "application/json; charset=UTF-8"

通過value屬性指定映射路徑

Controller類上使用RequestMapping注解

@Controller@RequestMapping("order") public class OrderInfoController {    //示例1  @RequestMapping("orderinfo")    public ModelAndView OrderInfo1() {    return new ModelAndView("order/info", "message", "OrderInfo");  }}

在OrderController類上添加了注解RequestMapping("order"),表示所有對的請求必須是以“根目錄/order” 開始

示例1的請求路徑為:http://localhost:8080/springMvcNext/order/orderinfo

示例1 如果注釋掉Controller上的@RequestMapping("order"),則對應的請求路徑為:http://localhost:8080/springMvcNext /orderinfo

Controller方法上使用RequestMapping注解

 1.常用基礎用法

@Controller@RequestMapping("order") public class OrderInfoController {  //示例1  @RequestMapping("orderinfo")    public ModelAndView OrderInfo1() {    return new ModelAndView("order/info", "message", "OrderInfo");  }  //示例2 :處理多個url映射  @RequestMapping({"info","index"}) //或者@RequestMapping(value={"info","index"})  public ModelAndView OrderInfo2() {    return new ModelAndView("order/info","message", "OrderInfo2");  }                 //示例3  @RequestMapping  public ModelAndView OrderInfo3() {      return new ModelAndView("order/info","message", "OrderInfo3");  }}

RequestMapping只配置value屬性,不顯示配置其他屬性的情況下,value省略,直接填寫URL映射信息即可,指定其他屬性的情況下value屬性必須明確填寫

上例示例1的訪問路徑為: http://localhost:8080/springMvcNext/order/orderinfo

示例2:RequestMapping接口中value屬性是一個數組,所有也支持傳一個數組 示例2的訪問路徑:http://localhost:8080/springMvcNext/order/index  或者 http://localhost:8080/springMvcNext/order/info

示例3:當value為空時,表示該方法為類下默認的Action,示例3的訪問路徑為:http://localhost:8080/springMvcNext/order

 2.URL模板映射

在RequestMapping注解中聲明URI變量,并通過@PathVariable注解的方式訪從實際請求URL中獲取值,示例如下:

@Controllerpublic class OrderInfoController {   // 示例10 帶占位符的URL   @RequestMapping(value = "user/{userId}/order/{orderNumber}", method = RequestMethod.GET)   public ModelAndView OrderInfo4(@PathVariable int userId,@PathVariable String orderNumber) {      return new ModelAndView("order/info", "message", "userid:"+userId+" orderNumber:"+orderNumber);   }}

示例10請求URL:  http://localhost:8080/springMvcNext/user/12/order/333 當通過此URL發起請求時,SpringMVC將通過@PathVariable可以提取URL模板中的{×××}中的×××變量, URL變量會自動轉換為對應的類型,無法轉換的則返回錯誤,比如嘗試用以下url訪問:http://localhost:8080/springMvcNext/user/xxx/order/333  其中參數Userid=xxx,則發生錯誤:

spring,mvc,請求映射,requestmapping,注解

3.Ant風格的URL路徑映射

 Ant風格通配符如下:

  • ?  匹配一個字符
  • *    匹配路徑段中的零個或多個字符
  • **  匹配零個或多個路徑段

 示例:

@Controllerpublic class OrderInfoController {    // 示例11 帶占位符的URL    @RequestMapping(value = "order*", method = RequestMethod.GET)    //@RequestMapping(value = "order?", method = RequestMethod.GET)    //@RequestMapping(value = "order/**", method = RequestMethod.GET)    public ModelAndView OrderInfo5(String orderNumber) {       return new ModelAndView("order/info", "message", "OrderInfo5");    }}

示例11請求URL:  http://localhost:8080/springMvcNext/order/orderdexx?orderNumber=12 可以匹配http://localhost:8080/springMvcNext/order/orderXXXXX?orderNumber=yyyy的所有請求

 

@RequestMapping(value = "order?", method = RequestMethod.GET)可以匹配諸如 “…/ordera?orderNumber….” “…/orders?orderNumber….” @RequestMapping(value = "order/**", method = RequestMethod.GET)可以匹配諸如 “…/order/aaa?orderNumber….” “…/order/bbb/ccc?orderNumber….”

另外 RequestMapping還支持正則表達式風格的URL路徑映射,此處略過

通過method屬性指定請求類型

RequestMapping提供的method屬性請求謂詞的類型,如下示例示例只接受GET請求

  // 示例4  @RequestMapping(value="detail",method=RequestMethod.GET) //也可直接使用 @GetMapping("detail")  public ModelAndView Info() {    return new ModelAndView("order/info", "message", "Info");  }

對于每種請求類型,SpringMVC還提供了專用的注解:

@GetMapping

@PostMapping

@PutMapping

@DeleteMapping

@PatchMapping

通過params指定參數名或參數值約束

params屬性可以限定請求參數包含特定的參數,也可限定參數值的約束,如下代碼所示:

 // 示例5 params 限定參數包含orderNumber  @RequestMapping(value = "detail2", params = "orderNumber")  public ModelAndView Detail2(String orderNumber) {    return new ModelAndView("order/info", "message", orderNumber);  }  // 示例6 params 限定參數值  @RequestMapping(value = "detail3", params = "orderNumber!=1222")  public ModelAndView Detail3(String orderNumber) {    return new ModelAndView("order/info", "message", orderNumber);  }

示例5限定請求參數必須包含參數orderNumber,如果不包含名為orderNumber的參數,則拒絕訪問:訪問路徑:http://localhost:8080/springMvcNext/order/detail2?orderNumber=12

示例6限定請求參數必須包含參數orderNumber并且參數值不能為1222 訪問路徑:http://localhost:8080/springMvcNext/order/detail3?orderNumber=1222 時報錯

spring,mvc,請求映射,requestmapping,注解

通過headers指定參數名或參數值約束

 RequestMapping提供的method屬性可以指定請求頭類型,只有請求數據頭部類型符合指定的值時,才能正常訪問

// 示例7 params 限定參數值    @RequestMapping(value = "headtest",headers = "apikey=23131313")     //@RequestMapping(value = "headtest",headers= {"Accept=application/json"})     public ModelAndView Header() {      return new ModelAndView("order/info", "message", "Header");    }

示例7限定請求頭必須包含apikey:23131313才可以正常返回,直接訪問,返回錯誤:

spring,mvc,請求映射,requestmapping,注解

添加添加header信息apikey:23131313訪問成功:

spring,mvc,請求映射,requestmapping,注解

通過consumes指定請求提交的內容類型(Content-Type)

  // 示例8 consumes   @RequestMapping(value = "consumes", method = RequestMethod.POST, consumes = "application/json")  public ModelAndView Consumes(String orderNumber) {    return new ModelAndView("order/info", "message", orderNumber);  }

示例限定請求參數類型為application/json,表示該方法只處理請求Content-Type為application/json的請求:

下面通過拋postman測試:

設置請求參數格式為application/json,可以正常訪問:

spring,mvc,請求映射,requestmapping,注解

設置參數格式為x-form-urlencoded,返回錯誤,Http Status 415

spring,mvc,請求映射,requestmapping,注解

通過produces指定返回的內容類型(Content-Type)

 produces屬性用于設定返回內容類型,并且滿足以下條件:接受請求header中包含Accept的值與produces設定的值相同,或者接受的請求使用不顯示設置accept值

 // 示例8 produces 限定返回數據application/json    @RequestMapping(value = "produces", method = RequestMethod.GET, produces = "application/json")    public ModelAndView Produces(String orderNumber) {      return new ModelAndView("order/info", "message", orderNumber);    }

示例8 表示返回內容格式application/json ,當客戶端設置的accept格式為text/json時,運行報錯,Http status 406

spring,mvc,請求映射,requestmapping,注解

當客戶端設置的accept格式為application/json或者不設置accept值時,可以正常運行

spring,mvc,請求映射,requestmapping,注解

總結

以上所述是小編給大家介紹的Spring MVC溫故而知新系列教程之請求映射RequestMapping注解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区中文| 亚洲色图综合久久| 91高清视频免费| 91精品国产91久久久久久久久| 亚洲国产三级网| 狠狠操狠狠色综合网| 亚洲综合日韩在线| 欧美电影在线观看高清| 国产精品女主播视频| 亚洲精品www久久久| 精品久久久久久国产91| 欧美成人精品不卡视频在线观看| 欧美视频一区二区三区…| 国产精品久久久久99| 55夜色66夜色国产精品视频| 国产精品成人观看视频国产奇米| 高清一区二区三区四区五区| 国产亚洲欧美另类中文| 国产v综合ⅴ日韩v欧美大片| 亚洲**2019国产| 色综合色综合网色综合| 久久久久久久一区二区三区| 国产精品18久久久久久麻辣| 国产精品69av| 另类少妇人与禽zozz0性伦| 亚洲国产美女久久久久| 国产精品影院在线观看| 日韩中文在线中文网在线观看| 欧美午夜宅男影院在线观看| 性欧美办公室18xxxxhd| 日韩中文字幕亚洲| 欧美电影免费在线观看| 91视频88av| 亚洲综合小说区| 性欧美长视频免费观看不卡| 国产一区二区三区日韩欧美| 久久久国产精品免费| 亚洲日本欧美中文幕| 57pao成人永久免费视频| 亚洲视频在线免费观看| 中文日韩电影网站| 精品国产31久久久久久| 久久精品人人爽| 国产精品一区二区av影院萌芽| 国模精品视频一区二区三区| 国产亚洲精品一区二区| 17婷婷久久www| 自拍亚洲一区欧美另类| 国外日韩电影在线观看| 日韩欧美成人精品| 91在线无精精品一区二区| 欧美片一区二区三区| 亚洲毛茸茸少妇高潮呻吟| 国外色69视频在线观看| 一区二区三区精品99久久| 亚洲精品在线不卡| 欧美日韩中文在线观看| 欧美日韩一区二区精品| 欧美午夜精品久久久久久久| 国产精品jvid在线观看蜜臀| 久久噜噜噜精品国产亚洲综合| 亚洲女同精品视频| 欧美亚洲免费电影| 国产精品99久久久久久白浆小说| 国产精品福利在线| 国产精品永久免费视频| 亚洲欧美日韩中文视频| 国产va免费精品高清在线| 国产亚洲一区精品| 欧美大码xxxx| 色哟哟入口国产精品| 久久久久久一区二区三区| 久久九九免费视频| 日韩在线观看你懂的| 伦理中文字幕亚洲| 日本中文字幕成人| 欧美精品在线观看| 亚洲人成伊人成综合网久久久| 高潮白浆女日韩av免费看| 亚洲高清久久网| 欧美怡红院视频一区二区三区| 97在线观看视频国产| 日韩精品在线第一页| 日韩三级影视基地| 欧美极品少妇xxxxⅹ裸体艺术| 九九久久久久99精品| 日本国产一区二区三区| 在线不卡国产精品| 亚洲国产欧美在线成人app| 国产91在线播放精品91| 国产日韩欧美日韩| 久久香蕉精品香蕉| 美女黄色丝袜一区| 亚洲国产又黄又爽女人高潮的| 欧美日韩国产123| 欧美美女15p| 亚洲精品久久久久久久久久久久久| 国产精品久久久久久久久男| 久久久久久国产免费| 久久久久久久999精品视频| 国产91热爆ts人妖在线| 91精品国产自产在线老师啪| 亚洲成av人影院在线观看| 亚洲最新中文字幕| 超碰日本道色综合久久综合| 久久天堂电影网| 国产精品网站入口| 国内精品在线一区| 亚洲免费视频网站| 欧美专区在线视频| 久久久久久久久国产精品| 亚洲精品网站在线播放gif| 亚洲欧美国产视频| 国产欧美一区二区白浆黑人| 91精品久久久久久久久久久久久| 亚洲品质视频自拍网| 亚洲天堂男人天堂女人天堂| 国产精品精品视频一区二区三区| 国产精品羞羞答答| 国产精品亚洲片夜色在线| 欧美在线亚洲在线| 日本三级韩国三级久久| 91成人在线播放| 国产999精品| 欧美二区在线播放| 中文日韩在线视频| 亚洲理论片在线观看| 精品国产区一区二区三区在线观看| 欧美日韩中文字幕| 亚洲黄页视频免费观看| 国产亚洲精品一区二555| 9.1国产丝袜在线观看| 午夜精品久久久久久久99热| 狠狠色香婷婷久久亚洲精品| 在线观看国产成人av片| 亚洲国产精品电影在线观看| 日本人成精品视频在线| 91香蕉电影院| 8090理伦午夜在线电影| 亚洲电影免费观看高清完整版在线观看| 欧美性精品220| 欧美黑人性猛交| 亚洲四色影视在线观看| 亚洲最大激情中文字幕| 欧美电影第一页| 精品视频在线导航| 国产成人精品日本亚洲专区61| 国产精品爽黄69天堂a| 不卡伊人av在线播放| 国产一区二区三区丝袜| 日韩69视频在线观看| 久久久久久91香蕉国产| 国产成人精品日本亚洲专区61| 深夜福利91大全| 国产精品99蜜臀久久不卡二区| 国产精品第一区| 日韩视频免费中文字幕| 福利微拍一区二区| 成人精品视频99在线观看免费| 成人av番号网| 91久久久国产精品| 狠狠久久亚洲欧美专区| 欧美激情a∨在线视频播放| 97视频在线观看网址|