SpringMVC @GetMapping注解路徑?jīng)_突問題解決
在SpringMVC的入門學(xué)習(xí)中,我發(fā)現(xiàn)@GetMapping注解的使用要注意路徑?jīng)_突問題,在網(wǎng)上都沒找到類似我這樣的情況,所以我在這里將問題分享出來,希望遇到我這樣的問題的可以有個(gè)參考,但是為什么這樣就不行我還沒搞懂,希望知道的人可以在評(píng)論區(qū)或者私信告訴我。問題如下:我的controller層有兩個(gè)查詢操作,一個(gè)是按id查詢,一個(gè)是按name模糊查詢,一開始我的程序是
@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ù)查詢失??!":""); 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è)試
可以看到無論是想用id查詢還是用name查詢都無法查詢成功,說明程序無法識(shí)別哪個(gè)是按id查詢哪個(gè)是按name查詢這時(shí)候就想到如果在每個(gè)@GetMapping中指定具體路徑呢?下面來嘗試一下
@GetMapping("/getById/{id}") @GetMapping(value = ("/getByName/{name}"))
運(yùn)行結(jié)果:
可以看到通過id查詢可以查詢成功,但是通過name查詢時(shí)候無論是在路徑中添加參數(shù)還是自定義參數(shù)都無法查詢成功,這里我也搞不明白,希望知道原理的大佬可以告訴我,十分感謝!
最終我找到的解決方案是指定參數(shù)名稱(不知道這樣說對(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ù)器訪問超時(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ù)查詢失??!":""); 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í)查詢:
要注意參數(shù)位置,此時(shí)可以看到兩者都查詢成功,至此問題解決,要是有大佬知道用
@GetMapping("/getById/{id}") @GetMapping(value = ("/getByName/{name}"))
這種方法怎么做還請(qǐng)告訴我一下。
到此這篇關(guān)于SpringMVC @GetMapping注解路徑?jīng)_突問題解決的文章就介紹到這了,更多相關(guān)SpringMVC @GetMapping路徑?jīng)_突內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(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錯(cuò)誤的問題
- SpringMVC注解@RequestParam方法原理解析
- springMVC @RestControllerAdvice注解使用方式
相關(guān)文章
SpringBoot的@Value給靜態(tài)變量注入application.properties屬性值
這篇文章主要介紹了SpringBoot的@Value給靜態(tài)變量注入application.properties屬性值,Spring是一個(gè)開源的框架,主要是用來簡(jiǎn)化開發(fā)流程,通過IOC,依賴注入(DI)和面向接口實(shí)現(xiàn)松耦合,需要的朋友可以參考下2023-05-05帶你走進(jìn)Maven的大門-最全Maven配置及集成idea工具總結(jié)
Maven項(xiàng)目對(duì)象模型(POM),是一個(gè)項(xiàng)目管理工具可以通過一小段描述信息來管理項(xiàng)目的構(gòu)建,報(bào)告和文檔的軟件.那我們想要在IDEA中使用Maven得進(jìn)行一些配置,接下來我們具體看一下是如何配置使用的,需要的朋友可以參考下2021-06-06Java URL自定義私有網(wǎng)絡(luò)協(xié)議
URI與URL的區(qū)別 一.先來序言一段 二.協(xié)議的自定義的理解 三.自定義協(xié)議與URL的關(guān)系 四.URL自定義私有協(xié)議實(shí)戰(zhàn) 五.后話,自定義mineType解析器2016-04-04SpringBoot項(xiàng)目中配置application.yml中server.port不生效的問題
這篇文章主要介紹了SpringBoot項(xiàng)目中配置application.yml中server.port不生效的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12windows10 JDK安裝及配置環(huán)境變量與Eclipse安裝教程
這篇文章主要介紹了windows10 JDK安裝及配置環(huán)境變量與Eclipse安裝,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10java中為什么要謹(jǐn)慎使用Arrays.asList、ArrayList的subList
這篇文章主要介紹了java中為什么要謹(jǐn)慎使用Arrays.asList、ArrayList的subList,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02