亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談@RequestMapping注解的注意點

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

@RequestMapping注解注意點

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

1.如果類上加了 @RequestMappin注解,那么就會去該注解對應的路徑下去找頁面,如果沒有對應的頁面就會報錯。

舉例說明:

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

對應的跳轉(zhuǎn)頁面會去user目錄下去找,找不到就會報錯。

2.如果類上沒有加@RequestMapping注解,就會直接去根路徑下去找頁面

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

舉例:

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

@RequestMapping一個坑

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

當RequestMapping用于Class上時,不能用1.0,v1.0這樣帶小數(shù)點的value值做開頭

@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\"}";
? ? }
}

如上代碼運行后,訪問http://localhost:port/v1.0/a 或者http://localhost:port/v1.0/b 時都會報錯:

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

單看異常信息,還以為是有重名的路徑,結果搜遍了工程也沒找到重名的類,后來"v1.0"改成"v1",就正常運行了。

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

之后再把一個方法上RequestMapping的value去掉,采用默認寫法:

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

再運行起來,訪問http://localhost:port/v1.0/a或者http://localhost:port/v1.0/b 就會變成404錯誤。

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

沒深究根本原因,估計是Spring的小bug,以后避免帶小數(shù)點的路徑頭。

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

相關文章

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

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

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

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

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

    半小時通透Java的泛型

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

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

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

    java設計模式--策略模式詳解

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

    SpringBoot中加密模塊的使用

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

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

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

    java 中序列化NotSerializableException問題解決辦法

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

    java設計模式之工廠方法模式

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

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

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

最新評論