下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第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}")
publicResultgetById(@PathVariableIntegerid){
if(id==0){
thrownewBusinessException(Code.BUSINESS_ERR,"請(qǐng)規(guī)范您的操作!");
Bookbook=bookService.getById(id);
Integercode=(book==nullCode.GET_ERR:Code.GET_OK);
Stringmsg=(book==null"數(shù)據(jù)查詢(xún)失敗!":"");
returnnewResult(code,book,msg);
@GetMapping(value=("/{name}"))
publicResultgetByName(@PathVariableStringname){
//解決中文亂碼
byte[]bytes=name.getBytes(StandardCharsets.ISO_8859_1);
StringName=newString(bytes,StandardCharsets.UTF_8);
ListBookbookList=bookService.getByName(Name);
Integercode=(bookList==nullCode.GET_ERR:Code.GET_OK);
Stringmsg=(bookList==null"系統(tǒng)繁忙,請(qǐng)稍后再試!":"");
returnnewResult(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"))
publicResultgetById(@RequestParam("id")Integerid){
System.out.println("id="+id);
if(id==0){
thrownewBusinessException(Code.BUSINESS_ERR,"請(qǐng)規(guī)范您的操作!");
//將可能出現(xiàn)的異常進(jìn)行包裝,轉(zhuǎn)換成自定義異常
try{
inti=1/0;
}catch(Exceptione){
thrownewSystemException(Code.SYSTEM_TIMEOUT_ERR,"服務(wù)器訪問(wèn)超時(shí),請(qǐng)稍后再試!",e);
Bookbook=bookService.getById(id);
Integercode=(book==nullCode.GET_ERR:Code.GET_OK);
Stringmsg=(book==null"數(shù)據(jù)查詢(xún)失?。?:"");
returnnewResult(code,book,msg);
@GetMapping(value=("/getByName"))
publicResultgetByName(@RequestParam("name")Stringname){
//解決中文亂碼要注意用SpringBoot時(shí)不需要進(jìn)行中文亂碼處理
byte[]bytes=name.getBytes(StandardCharsets.ISO_8859_1);
StringName=newString(bytes,StandardCharsets.UTF_8);
ListBookbookList=bookService.getByName(Name);
Integercode=(bookList==nullCode.GET_ERR:Code.GET_OK);
Stringmsg=(bookList==null"系統(tǒng)繁忙,請(qǐng)稍后再試!":"");
returnnewResult(code,bookList,msg);
此時(shí)查詢(xún):
要注意參數(shù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公場(chǎng)地租賃押金管理細(xì)則協(xié)議2025年
- 2024年中考道德與法治(上海)第二次模擬考試(含答案)
- 2025年海南省公需課學(xué)習(xí)-重點(diǎn)排污單位自動(dòng)監(jiān)測(cè)數(shù)據(jù)標(biāo)記規(guī)則第344期
- 冰點(diǎn)文庫(kù)撈鐵牛課件
- 2025年中考沈陽(yáng)歷史試卷及答案
- 2025年共同條例考核試卷及答案
- 景區(qū)輪船維修合同范本
- 2025年高熱度智商測(cè)試題及答案
- 2025年行政管理常識(shí)題庫(kù)及答案
- 礦山承包協(xié)議合同范本
- 男性性教育課件
- 藝術(shù)鑒賞教程課件
- 三級(jí)醫(yī)院臨床科室醫(yī)療質(zhì)量管理考核標(biāo)準(zhǔn)
- 2025 年高職酒店管理(人力資源管理)試題及答案
- 危重患者的容量管理
- 2025秋四年級(jí)上冊(cè)勞動(dòng)技術(shù)期末測(cè)試卷(人教版)及答案(三套)
- 2025年應(yīng)急物資準(zhǔn)備安全培訓(xùn)試卷及答案:物資管理人員應(yīng)急物資使用測(cè)試
- 電商售后客服主管述職報(bào)告
- 2025昆明市呈貢區(qū)城市投資集團(tuán)有限公司及下屬子公司第一批招聘(12人)筆試考試參考試題及答案解析
- 受控文件管理流程
- 2025年黑龍江省哈爾濱市中考數(shù)學(xué)真題含解析
評(píng)論
0/150
提交評(píng)論