欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決springmvc使用@PathVariable路徑匹配問題

 更新時(shí)間:2021年02月24日 09:26:13   作者:文文文文文哥  
這篇文章主要介紹了解決springmvc使用@PathVariable路徑匹配問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

一、問題

今天作畢設(shè)的時(shí)候,在搭建ssm框架的使用使用springmvc的@PathVariable時(shí)出現(xiàn)了一個(gè)路徑匹配的問題,最后花了點(diǎn)時(shí)間解決了。

代碼結(jié)構(gòu):

問題內(nèi)容:

訪問url為:

按照道理說,我應(yīng)該到j(luò)sp的index頁(yè)面去。最后的結(jié)果確實(shí)到了index頁(yè)面,可是由于該頁(yè)面引用了幾個(gè)css和js,報(bào)異常找不到。有使用過spring經(jīng)驗(yàn)的童鞋應(yīng)該知道使用如下代碼解決靜態(tài)資源的訪問。

// 方法一
<mvc:default-servlet-handler/>
// 方法二
<mvc:resources location="/easyui/js/" mapping="/themes/**"/>
<mvc:resources location="/easyui/themes/" mapping="/js/**"/>

可是最后還是訪問不到靜態(tài)資源。

于是我就想是因?yàn)锧PathVariable的原因嗎?于是在下面做了一個(gè)實(shí)驗(yàn)

@RequestMapping("/index")
 public String index() {
  System.out.println("index execute ");
  return "index";
 }

實(shí)驗(yàn)的結(jié)果就是可以正確訪問。看樣子好像確實(shí)是這樣。于是我又再一次訪問上面的地址(http://localhost:8080/ksxt_v1/user/index),并且打開控制臺(tái)來查看,如下:

從上面標(biāo)識(shí)的地方可以看出問題的原因了,當(dāng)請(qǐng)求的URL為http://localhost:8080/ksxt_v1/user/index時(shí),它在請(qǐng)求靜態(tài)資源的時(shí)候也會(huì)把user帶上,我們的靜態(tài)資源肯定不是放在這個(gè)文件夾里面的了。最后的結(jié)局當(dāng)然是找不到了。

二、解決方法

上面的問題產(chǎn)生是因?yàn)槲以谝渺o態(tài)文件使用的是相對(duì)路徑。

解決方法就是將其全部修改為絕對(duì)路徑。

<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/easyui/themes/default/easyui.css" rel="external nofollow" >
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/easyui/themes/icon.css" rel="external nofollow" >
<script type="text/javascript" src="${pageContext.request.contextPath}/easyui/js/jquery.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/easyui/js/jquery.easyui.min.js"></script>

最后完美解決。當(dāng)然應(yīng)該也有其它方式解決,暫時(shí)未想到。

補(bǔ)充:SpringMVC 請(qǐng)求路徑結(jié)尾存在.使用@PathVariable訪問路徑內(nèi)容,路徑參數(shù)獲取不準(zhǔn)確的問題

SpringMVC采用Get方式請(qǐng)求資源時(shí),如果請(qǐng)求路徑的結(jié)尾中帶有小數(shù)點(diǎn)(.)時(shí),同時(shí)使用@PathVariable訪問路徑內(nèi)容時(shí),請(qǐng)求路徑中最后一個(gè)小數(shù)點(diǎn)及其后面的內(nèi)容會(huì)被Spring截?cái)鄟G棄

比如針對(duì)版本的訪問

對(duì)于請(qǐng)求路徑:

http://host:port/program/module/download/apk/3.20.10

后端RequestMapping為

@RequestMapping(value="module/download/apk/{version}",method=RequestMethod.GET)
public void download(HttpSession session,HttpServletResponse response,@PathVariable("version")String version){
  //解析后獲得到的版本值為:3.20
}

又比如針對(duì)文件的訪問

對(duì)于請(qǐng)求路徑:

http://host:port/program/viewFile/module/201612201231445.pdf

后端RequestMapping為

@RequestMapping(value="viewFile/{module}/{filename}",method=RequestMethod.GET)
public void viewFile(HttpSession session,HttpServletResponse response,@PathVariable String module, @PathVariable String filename){
  //解析后獲得到的文件名稱為201612201231445并沒有或追文件后綴
}

在確實(shí)需要使用以小數(shù)點(diǎn)的路徑進(jìn)行請(qǐng)求的話可以選擇如下兩種解決方案:

1、在路徑后加任意小數(shù)點(diǎn)結(jié)尾的字符串

http://host:port/program/module/download/apk/3.20.10.html

http://host:port/program/viewFile/module/201612201231445.pdf.jsp

2、使用Spring正則表達(dá)式(SpEL)

@RequestMapping(value="module/download/apk/{version:.+}",method=RequestMethod.GET)
@RequestMapping(value="viewFile/{module}/{filename:.+}",method=RequestMethod.GET)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Java代碼如何判斷l(xiāng)inux系統(tǒng)windows系統(tǒng)

    Java代碼如何判斷l(xiāng)inux系統(tǒng)windows系統(tǒng)

    這篇文章主要介紹了Java代碼如何判斷l(xiāng)inux系統(tǒng)windows系統(tǒng)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 淺談Java安全之C3P0鏈利用與分析

    淺談Java安全之C3P0鏈利用與分析

    本文主要介紹了淺談Java安全之C3P0鏈利用與分析,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Spring框架如何使用P命名空間進(jìn)行注入

    Spring框架如何使用P命名空間進(jìn)行注入

    這篇文章主要介紹了Spring框架如何使用P命名空間進(jìn)行注入,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java多線程中Callable和Future的解讀

    Java多線程中Callable和Future的解讀

    這篇文章主要介紹了Java多線程中Callable和Future的解讀,Callable接口類似于Runnable,從名字就可以看出來了,但是Runnable不會(huì)返回結(jié)果,并且無法拋出返回結(jié)果的異常,而Callable功能更強(qiáng)大一些,被線程執(zhí)行后,可以返回值,這個(gè)返回值可以被Future拿到,需要的朋友可以參考下
    2023-09-09
  • Java多線程中的互斥鎖解析

    Java多線程中的互斥鎖解析

    這篇文章主要介紹了Java多線程中的互斥鎖解析,Java語言中,引入了對(duì)象互斥鎖的概念,來保證共享數(shù)據(jù)操作的完整性,每個(gè)對(duì)象都對(duì)應(yīng)于一個(gè)可稱為互斥鎖的標(biāo)記,這個(gè)標(biāo)記用來保證在任一時(shí)刻,只能有一個(gè)線程訪問該對(duì)象,需要的朋友可以參考下
    2023-09-09
  • spring boot tomcat jdbc pool的屬性綁定

    spring boot tomcat jdbc pool的屬性綁定

    這篇文章主要介紹了spring boot tomcat jdbc pool的屬性綁定的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2018-01-01
  • Java最簡(jiǎn)潔數(shù)據(jù)結(jié)構(gòu)之冒泡排序快速理解

    Java最簡(jiǎn)潔數(shù)據(jù)結(jié)構(gòu)之冒泡排序快速理解

    冒泡排序是編程中數(shù)據(jù)結(jié)構(gòu)繞不過的一個(gè)基礎(chǔ)點(diǎn),有關(guān)于冒泡排序的文章也有很多,但可能會(huì)比較繚亂未能理解,本章將一子u為簡(jiǎn)潔明了的例圖帶你通關(guān)冒泡排序
    2021-11-11
  • Spring底層核心源碼原理解析

    Spring底層核心源碼原理解析

    這篇文章主要介紹了Spring底層核心源碼原理解析,當(dāng)在某個(gè)方法上加了@Transactional注解后,就表示該方法在調(diào)用時(shí)會(huì)開啟Spring事務(wù),而這個(gè)方法所在的類所對(duì)應(yīng)的Bean對(duì)象會(huì)是該類的代理對(duì)象,需要的朋友可以參考下
    2023-09-09
  • Java實(shí)例講解文件上傳與跨域問題

    Java實(shí)例講解文件上傳與跨域問題

    這篇文章主要介紹了Java文件上傳與跨域問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Java中Jackson快速入門

    Java中Jackson快速入門

    這篇文章主要介紹了Java中Jackson快速入門,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論