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

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

 更新時(shí)間:2018年05月22日 09:52:34   作者:仍是少年  
這篇文章主要介紹了Spring MVC溫故而知新系列教程之請求映射RequestMapping注解的相關(guān)知識(shí),文中給大家介紹了RequestMapping注解提供的幾個(gè)屬性及注解說明,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧

RequestMapping注解說明

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

@RequestMapping注解提供以下幾個(gè)屬性:

         name:用于指定映射器名稱

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

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

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

         params:指定請求的參數(shù)

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

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

         produces:指定請求返回的內(nèi)容類型 例如: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"),則對應(yīng)的請求路徑為:http://localhost:8080/springMvcNext /orderinfo

Controller方法上使用RequestMapping注解

 1.常用基礎(chǔ)用法

@Controller
@RequestMapping("order") 
public class OrderInfoController {
  //示例1
  @RequestMapping("orderinfo")  
  public ModelAndView OrderInfo1() {
    return new ModelAndView("order/info", "message", "OrderInfo");
  }
  //示例2 :處理多個(gè)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屬性是一個(gè)數(shù)組,所有也支持傳一個(gè)數(shù)組 示例2的訪問路徑:http://localhost:8080/springMvcNext/order/index  或者 http://localhost:8080/springMvcNext/order/info

示例3:當(dāng)value為空時(shí),表示該方法為類下默認(rèn)的Action,示例3的訪問路徑為:http://localhost:8080/springMvcNext/order

 2.URL模板映射

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

@Controller
public 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 當(dāng)通過此URL發(fā)起請求時(shí),SpringMVC將通過@PathVariable可以提取URL模板中的{×××}中的×××變量, URL變量會(huì)自動(dòng)轉(zhuǎn)換為對應(yīng)的類型,無法轉(zhuǎn)換的則返回錯(cuò)誤,比如嘗試用以下url訪問:http://localhost:8080/springMvcNext/user/xxx/order/333  其中參數(shù)Userid=xxx,則發(fā)生錯(cuò)誤:

3.Ant風(fēng)格的URL路徑映射

 Ant風(fēng)格通配符如下:

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

 示例:

@Controller
public 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還支持正則表達(dá)式風(fēng)格的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指定參數(shù)名或參數(shù)值約束

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

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

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

示例6限定請求參數(shù)必須包含參數(shù)orderNumber并且參數(shù)值不能為1222 訪問路徑:http://localhost:8080/springMvcNext/order/detail3?orderNumber=1222 時(shí)報(bào)錯(cuò)

通過headers指定參數(shù)名或參數(shù)值約束

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

// 示例7 params 限定參數(shù)值
    @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才可以正常返回,直接訪問,返回錯(cuò)誤:

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

通過consumes指定請求提交的內(nèi)容類型(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);
  }

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

下面通過拋postman測試:

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

設(shè)置參數(shù)格式為x-form-urlencoded,返回錯(cuò)誤,Http Status 415

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

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

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

示例8 表示返回內(nèi)容格式application/json ,當(dāng)客戶端設(shè)置的accept格式為text/json時(shí),運(yùn)行報(bào)錯(cuò),Http status 406

當(dāng)客戶端設(shè)置的accept格式為application/json或者不設(shè)置accept值時(shí),可以正常運(yùn)行

總結(jié)

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

相關(guān)文章

  • Java設(shè)計(jì)模式UML之類圖精解

    Java設(shè)計(jì)模式UML之類圖精解

    在UML類圖中,類使用包含類名、屬性(field) 和方法(method) 且?guī)в蟹指罹€的矩形來表示,比如下圖表示一個(gè)Employee類,它包含name,age和email這3個(gè)屬性,以及modifyInfo()方法
    2022-02-02
  • Java內(nèi)存緩存工具Guava LoadingCache使用解析

    Java內(nèi)存緩存工具Guava LoadingCache使用解析

    這篇文章主要介紹了Java內(nèi)存緩存工具Guava LoadingCache使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java連接sftp服務(wù)器實(shí)現(xiàn)上傳下載功能

    Java連接sftp服務(wù)器實(shí)現(xiàn)上傳下載功能

    這篇文章主要介紹了java連接sftp服務(wù)器實(shí)現(xiàn)上傳下載,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • 淺談Maven環(huán)境隔離應(yīng)用

    淺談Maven環(huán)境隔離應(yīng)用

    這篇文章主要介紹了淺談Maven環(huán)境隔離應(yīng)用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • Java并發(fā)編程之詳解ConcurrentHashMap類

    Java并發(fā)編程之詳解ConcurrentHashMap類

    在之前的文章中已經(jīng)為大家介紹了java并發(fā)編程的工具:BlockingQueue接口、ArrayBlockingQueue、DelayQueue、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue、BlockingDeque接口,本文為系列文章第八篇.需要的朋友可以參考下
    2021-06-06
  • java中實(shí)現(xiàn)list或set轉(zhuǎn)map的方法

    java中實(shí)現(xiàn)list或set轉(zhuǎn)map的方法

    這篇文章主要介紹了java中實(shí)現(xiàn)list或set轉(zhuǎn)map的方法的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Springboot實(shí)現(xiàn)VNC的反向代理功能

    Springboot實(shí)現(xiàn)VNC的反向代理功能

    這篇文章主要介紹了Springboot實(shí)現(xiàn)VNC的反向代理,搭建過程也很簡單,通過注冊bean攔截指定URL路徑進(jìn)行自定義操作,具體實(shí)例代碼跟隨小編一起看看需要的朋友可以參考下
    2021-09-09
  • MybatisPlus查詢條件空字符串和NULL問題背景分析

    MybatisPlus查詢條件空字符串和NULL問題背景分析

    文章詳細(xì)分析了MybatisPlus在處理查詢條件時(shí),空字符串和NULL值的問題,MP 3.3.0及以上版本提供了多種解決方法,包括在Bean屬性上使用注解、全局配置等,推薦使用全局配置的方式來解決這個(gè)問題,以避免在SQL查詢中出現(xiàn)不必要的空字符串條件,感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • 一文弄懂Mybatis中介者模式

    一文弄懂Mybatis中介者模式

    本文主要介紹了一文弄懂Mybatis中介者模式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java預(yù)防SQL注入的具體實(shí)踐方法

    Java預(yù)防SQL注入的具體實(shí)踐方法

    在?Java?中預(yù)防?SQL?注入的核心是?避免直接拼接?SQL?語句,并通過參數(shù)化查詢、ORM?框架和嚴(yán)格的輸入驗(yàn)證來實(shí)現(xiàn)安全防護(hù),以下是具體實(shí)踐方法,感興趣的小伙伴跟著小編一起來看看吧
    2025-01-01

最新評論

秦安县| 井冈山市| 通州区| 依兰县| 铜川市| 偃师市| 南和县| 永泰县| 邵东县| 临夏市| 温州市| 汉川市| 乌恰县| 长岛县| 桂东县| 江达县| 花莲县| 德安县| 山丹县| 崇义县| 新晃| 安新县| 东乌珠穆沁旗| 武平县| 郯城县| 宜黄县| 科技| 武定县| 浪卡子县| 太谷县| 武功县| 兰坪| 阜城县| 右玉县| 千阳县| 大丰市| 家居| 萨嘎县| 凭祥市| 沧州市| 仪陇县|