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

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


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



可以看到通過id查詢可以查詢成功,但是通過name查詢時(shí)候無論是在路徑中添加參數(shù)還是自定義參數(shù)都無法查詢成功,這里我也搞不明白,希望知道原理的大佬可以告訴我,十分感謝!
最終我找到的解決方案是指定參數(shù)名稱(不知道這樣說對不對,可以看代碼):
@GetMapping(value = ("/getById"))
public Result getById(@RequestParam("id") Integer id) {
System.out.println("id="+id);
if(id == 0){
throw new BusinessException(Code.BUSINESS_ERR,"請規(guī)范您的操作!");
}
//將可能出現(xiàn)的異常進(jìn)行包裝,轉(zhuǎn)換成自定義異常
try{
int i = 1/0;
}catch (Exception e){
throw new SystemException(Code.SYSTEM_TIMEOUT_ERR,"服務(wù)器訪問超時(shí),請稍后再試!",e);
}
Book book = bookService.getById(id);
Integer code = (book == null? Code.GET_ERR:Code.GET_OK);
String msg = (book == null? "數(shù)據(jù)查詢失敗!":"");
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)繁忙,請稍后再試!":"");
return new Result(code,bookList,msg);
}
此時(shí)查詢:


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

