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

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

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

一、問題

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

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

問題內(nèi)容:

訪問url為:

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

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

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

于是我就想是因為@PathVariable的原因嗎?于是在下面做了一個實驗

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

實驗的結(jié)果就是可以正確訪問??礃幼雍孟翊_實是這樣。于是我又再一次訪問上面的地址(http://localhost:8080/ksxt_v1/user/index),并且打開控制臺來查看,如下:

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

二、解決方法

上面的問題產(chǎn)生是因為我在引用靜態(tài)文件使用的是相對路徑。

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

<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>

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

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

SpringMVC采用Get方式請求資源時,如果請求路徑的結(jié)尾中帶有小數(shù)點(.)時,同時使用@PathVariable訪問路徑內(nèi)容時,請求路徑中最后一個小數(shù)點及其后面的內(nèi)容會被Spring截斷丟棄

比如針對版本的訪問

對于請求路徑:

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
}

又比如針對文件的訪問

對于請求路徑:

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ù)點的路徑進行請求的話可以選擇如下兩種解決方案:

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

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

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

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

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

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

相關(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)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 淺談Java安全之C3P0鏈利用與分析

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

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

    Spring框架如何使用P命名空間進行注入

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

    Java多線程中Callable和Future的解讀

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

    Java多線程中的互斥鎖解析

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

    spring boot tomcat jdbc pool的屬性綁定

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

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

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

    Spring底層核心源碼原理解析

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

    Java實例講解文件上傳與跨域問題

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

    Java中Jackson快速入門

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

最新評論