SpringMVC @GetMapping注解路徑?jīng)_突問(wèn)題解決
在SpringMVC的入門(mén)學(xué)習(xí)中,我發(fā)現(xiàn)@GetMapping注解的使用要注意路徑?jīng)_突問(wèn)題,在網(wǎng)上都沒(méi)找到類(lèi)似我這樣的情況,所以我在這里將問(wèn)題分享出來(lái),希望遇到我這樣的問(wèn)題的可以有個(gè)參考,但是為什么這樣就不行我還沒(méi)搞懂,希望知道的人可以在評(píng)論區(qū)或者私信告訴我。問(wèn)題如下:我的controller層有兩個(gè)查詢(xún)操作,一個(gè)是按id查詢(xún),一個(gè)是按name模糊查詢(xún),一開(kāi)始我的程序是
@GetMapping("/{id}")
public Result getById(@PathVariable Integer id) {
if(id == 0){
throw new BusinessException(Code.BUSINESS_ERR,"請(qǐng)規(guī)范您的操作!");
}
Book book = bookService.getById(id);
Integer code = (book == null? Code.GET_ERR:Code.GET_OK);
String msg = (book == null? "數(shù)據(jù)查詢(xún)失??!":"");
return new Result(code,book,msg);
}
@GetMapping(value = ("/{name}"))
public Result getByName(@PathVariable String name){
//解決中文亂碼
byte[] bytes = name.getBytes(StandardCharsets.ISO_8859_1);
String Name = new String(bytes,StandardCharsets.UTF_8);
List<Book> bookList = bookService.getByName(Name);
Integer code = (bookList == null ? Code.GET_ERR:Code.GET_OK);
String msg = (bookList == null? "系統(tǒng)繁忙,請(qǐng)稍后再試!":"");
return new Result(code,bookList,msg);
}

此時(shí)編譯不報(bào)錯(cuò),用Apifox進(jìn)行測(cè)試


可以看到無(wú)論是想用id查詢(xún)還是用name查詢(xún)都無(wú)法查詢(xún)成功,說(shuō)明程序無(wú)法識(shí)別哪個(gè)是按id查詢(xún)哪個(gè)是按name查詢(xún)這時(shí)候就想到如果在每個(gè)@GetMapping中指定具體路徑呢?下面來(lái)嘗試一下
@GetMapping("/getById/{id}")
@GetMapping(value = ("/getByName/{name}"))
運(yùn)行結(jié)果:



可以看到通過(guò)id查詢(xún)可以查詢(xún)成功,但是通過(guò)name查詢(xún)時(shí)候無(wú)論是在路徑中添加參數(shù)還是自定義參數(shù)都無(wú)法查詢(xún)成功,這里我也搞不明白,希望知道原理的大佬可以告訴我,十分感謝!
最終我找到的解決方案是指定參數(shù)名稱(chēng)(不知道這樣說(shuō)對(duì)不對(duì),可以看代碼):
@GetMapping(value = ("/getById"))
public Result getById(@RequestParam("id") Integer id) {
System.out.println("id="+id);
if(id == 0){
throw new BusinessException(Code.BUSINESS_ERR,"請(qǐng)規(guī)范您的操作!");
}
//將可能出現(xiàn)的異常進(jìn)行包裝,轉(zhuǎn)換成自定義異常
try{
int i = 1/0;
}catch (Exception e){
throw new SystemException(Code.SYSTEM_TIMEOUT_ERR,"服務(wù)器訪問(wèn)超時(shí),請(qǐng)稍后再試!",e);
}
Book book = bookService.getById(id);
Integer code = (book == null? Code.GET_ERR:Code.GET_OK);
String msg = (book == null? "數(shù)據(jù)查詢(xún)失?。?:"");
return new Result(code,book,msg);
}
@GetMapping(value = ("/getByName"))
public Result getByName(@RequestParam("name") String name){
//解決中文亂碼 要注意用SpringBoot時(shí)不需要進(jìn)行中文亂碼處理
byte[] bytes = name.getBytes(StandardCharsets.ISO_8859_1);
String Name = new String(bytes,StandardCharsets.UTF_8);
List<Book> bookList = bookService.getByName(Name);
Integer code = (bookList == null ? Code.GET_ERR:Code.GET_OK);
String msg = (bookList == null? "系統(tǒng)繁忙,請(qǐng)稍后再試!":"");
return new Result(code,bookList,msg);
}
此時(shí)查詢(xún):


要注意參數(shù)位置,此時(shí)可以看到兩者都查詢(xún)成功,至此問(wèn)題解決,要是有大佬知道用
@GetMapping("/getById/{id}")
@GetMapping(value = ("/getByName/{name}"))
這種方法怎么做還請(qǐng)告訴我一下。
到此這篇關(guān)于SpringMVC @GetMapping注解路徑?jīng)_突問(wèn)題解決的文章就介紹到這了,更多相關(guān)SpringMVC @GetMapping路徑?jīng)_突內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringMVC整合,出現(xiàn)注解沒(méi)有起作用的情況處理
- 如何使用Idea搭建全注解式開(kāi)發(fā)的SpringMVC項(xiàng)目
- SpringMVC?@RequestMapping注解屬性詳細(xì)介紹
- SpringMVC中RequestBody注解的List參數(shù)傳遞方式
- SpringMVC中RequestMapping注解(作用、出現(xiàn)的位置、屬性)
- 解決SpringMVC使用@RequestBody注解報(bào)400錯(cuò)誤的問(wèn)題
- SpringMVC注解@RequestParam方法原理解析
- springMVC?@RestControllerAdvice注解使用方式
相關(guān)文章
SpringBoot實(shí)現(xiàn)其他普通類(lèi)調(diào)用Spring管理的Service,dao等bean
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)其他普通類(lèi)調(diào)用Spring管理的Service,dao等bean,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Spring Boot靜態(tài)資源路徑的配置與修改詳解
最近在做SpringBoot項(xiàng)目的時(shí)候遇到了“白頁(yè)”問(wèn)題,通過(guò)查資料對(duì)SpringBoot訪問(wèn)靜態(tài)資源做了總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09
SpringBoot接口中如何直接返回圖片數(shù)據(jù)
這篇文章主要介紹了SpringBoot接口中如何直接返回圖片數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
idea導(dǎo)入項(xiàng)目框架的詳細(xì)操作方法
大家使用idea開(kāi)發(fā)工具時(shí)經(jīng)常會(huì)需要導(dǎo)入項(xiàng)目框架,糾結(jié)該怎么操作呢,今天小編給大家分享一篇圖文教程,幫助大家解決idea導(dǎo)入項(xiàng)目框架的問(wèn)題,感興趣的朋友一起看看吧2021-05-05
解決使用RestTemplate時(shí)報(bào)錯(cuò)RestClientException的問(wèn)題
這篇文章主要介紹了解決使用RestTemplate時(shí)報(bào)錯(cuò)RestClientException的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
在SpringBoot中使用UniHttp簡(jiǎn)化天地圖路徑規(guī)劃調(diào)用實(shí)踐記錄(場(chǎng)景分析)
本文介紹了如何在SpringBoot項(xiàng)目中使用UniHttp簡(jiǎn)化天地圖路徑規(guī)劃接口的調(diào)用,通過(guò)一個(gè)具體的例子展示了如何根據(jù)中文地址獲取經(jīng)緯度坐標(biāo),并使用UniHttp調(diào)用天地圖路徑規(guī)劃服務(wù),感興趣的朋友一起看看吧2025-02-02
Javabean簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Javabean簡(jiǎn)介,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07

