SpringMVC@GetMapping注解路徑?jīng)_突問(wèn)題解決_第1頁(yè)
SpringMVC@GetMapping注解路徑?jīng)_突問(wèn)題解決_第2頁(yè)
SpringMVC@GetMapping注解路徑?jīng)_突問(wèn)題解決_第3頁(yè)
SpringMVC@GetMapping注解路徑?jīng)_突問(wèn)題解決_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論