欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談@RequestMapping注解的注意點(diǎn)

 更新時(shí)間:2022年02月22日 08:33:58   作者:zhangzengxiu  
這篇文章主要介紹了淺談@RequestMapping注解的注意點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@RequestMapping注解注意點(diǎn)

類上加沒(méi)加@RequestMappin注解區(qū)別

1.如果類上加了 @RequestMappin注解,那么就會(huì)去該注解對(duì)應(yīng)的路徑下去找頁(yè)面,如果沒(méi)有對(duì)應(yīng)的頁(yè)面就會(huì)報(bào)錯(cuò)。

舉例說(shuō)明:

@RequestMapping("/user")
public class UserController {
?? ?@RequestMapping("/requestParam51")
? ? public String requestParam51(String[] name) {
? ? ? ?return "index.jsp";
? ? }
}

對(duì)應(yīng)的跳轉(zhuǎn)頁(yè)面會(huì)去user目錄下去找,找不到就會(huì)報(bào)錯(cuò)。

2.如果類上沒(méi)有加@RequestMapping注解,就會(huì)直接去根路徑下去找頁(yè)面

3.如果為跳轉(zhuǎn)的頁(yè)面加了"/",還是會(huì)去根路徑下去找對(duì)應(yīng)的頁(yè)面。

舉例:

@RequestMapping("/user")
public class UserController {
?? ?@RequestMapping("/requestParam51")
? ? public String requestParam51(String[] name) {
? ? ? ?return "/index.jsp";
? ? }
}

@RequestMapping一個(gè)坑

今天發(fā)現(xiàn)了RequestMapping注解的一個(gè)坑:

當(dāng)RequestMapping用于Class上時(shí),不能用1.0,v1.0這樣帶小數(shù)點(diǎn)的value值做開(kāi)頭

@Controller
@RequestMapping(value = "/v1.0")
public class TestController {
? ? @RequestMapping(value = "/a", method = RequestMethod.GET, produces = "application/json")
? ? public @ResponseBody
? ? Object getA() {
? ? ? ? return ?"{\"test\" : \"a\"}";
? ? }
? ? @RequestMapping(value = "/b", method = RequestMethod.GET, produces = "application/json")
? ? public @ResponseBody
? ? Object getB() {
? ? ? ? return ?"{\"test\" : \"b\"}";
? ? }
}

如上代碼運(yùn)行后,訪問(wèn)http://localhost:port/v1.0/a 或者h(yuǎn)ttp://localhost:port/v1.0/b 時(shí)都會(huì)報(bào)錯(cuò):

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'testController' bean method 
public java.lang.Object com.my.test.controller.TestController.getB()
to {[/v1.0],methods=[GET],params=[],headers=[],consumes=[],produces=[application/json],custom=[]}: There is already 'testController' bean method

單看異常信息,還以為是有重名的路徑,結(jié)果搜遍了工程也沒(méi)找到重名的類,后來(lái)"v1.0"改成"v1",就正常運(yùn)行了。

順帶測(cè)試了下,發(fā)現(xiàn)改成1.0也是同樣的錯(cuò)誤。

之后再把一個(gè)方法上RequestMapping的value去掉,采用默認(rèn)寫(xiě)法:

? ? @RequestMapping("/b")
? ? public @ResponseBody
? ? Object getB() {
? ? ? ? return ?"{\"test\" : \"b\"}";
? ? }

再運(yùn)行起來(lái),訪問(wèn)http://localhost:port/v1.0/a或者h(yuǎn)ttp://localhost:port/v1.0/b 就會(huì)變成404錯(cuò)誤。

HTTP Status 404 - /v1.0/a
type Status report
message /v1.0/a
description The requested resource is not available.

沒(méi)深究根本原因,估計(jì)是Spring的小bug,以后避免帶小數(shù)點(diǎn)的路徑頭。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java堆棧跟蹤工具jstack的使用教程

    java堆棧跟蹤工具jstack的使用教程

    jstack(stack?trace?for?java)是java虛擬機(jī)自帶的一種堆棧跟蹤工具,主要用于生成java虛擬機(jī)當(dāng)前時(shí)刻的線程快照,下面我們就來(lái)學(xué)習(xí)一下它的具體使用吧
    2023-11-11
  • Java的深拷貝和淺拷貝深入了解

    Java的深拷貝和淺拷貝深入了解

    這篇文章主要為大家介紹了Java的深拷貝和淺拷貝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • 半小時(shí)通透Java的泛型

    半小時(shí)通透Java的泛型

    這篇文章主要給大家介紹了關(guān)于Java中泛型使用的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • BeanUtils.copyProperties()拷貝id屬性失敗的原因及解決

    BeanUtils.copyProperties()拷貝id屬性失敗的原因及解決

    這篇文章主要介紹了BeanUtils.copyProperties()拷貝id屬性失敗的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java設(shè)計(jì)模式--策略模式詳解

    java設(shè)計(jì)模式--策略模式詳解

    這篇文章主要介紹了Java經(jīng)典設(shè)計(jì)模式之策略模式,簡(jiǎn)單說(shuō)明了策略模式的概念、原理并結(jié)合實(shí)例形式分析了java策略模式的具有用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2021-07-07
  • SpringBoot中加密模塊的使用

    SpringBoot中加密模塊的使用

    本文主要介紹了SpringBoot中加密模塊的使用,包括對(duì)稱加密、非對(duì)稱加密和哈希加密等,同時(shí)還會(huì)提供相應(yīng)的代碼示例,感興趣的朋友可以參考一下
    2023-05-05
  • 為什么 Java 8 中不需要 StringBuilder 拼接字符串

    為什么 Java 8 中不需要 StringBuilder 拼接字符串

    java8中,編輯器對(duì)“+”進(jìn)行了優(yōu)化,默認(rèn)使用StringBuilder進(jìn)行拼接,所以不用顯示的使用StringBuilder了,直接用“+”就可以了。下面我們來(lái)詳細(xì)了解一下
    2019-05-05
  • java 中序列化NotSerializableException問(wèn)題解決辦法

    java 中序列化NotSerializableException問(wèn)題解決辦法

    這篇文章主要介紹了java 中序列化NotSerializableException問(wèn)題解決辦法的相關(guān)資料,這里對(duì)序列化問(wèn)題進(jìn)行描述說(shuō)明,并提供解決辦法,希望能幫助到大家,需要的朋友可以參考下
    2017-08-08
  • java設(shè)計(jì)模式之工廠方法模式

    java設(shè)計(jì)模式之工廠方法模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之工廠方法模式,什么是java工廠方法模式,感興趣的小伙伴們可以參考一下
    2016-08-08
  • java跟蹤執(zhí)行的sql語(yǔ)句示例分享

    java跟蹤執(zhí)行的sql語(yǔ)句示例分享

    這篇文章主要介紹了java跟蹤執(zhí)行的sql語(yǔ)句示例分享,需要的朋友可以參考下
    2014-03-03

最新評(píng)論