一、問題
今天作畢設的時候,在搭建ssm框架的使用使用springmvc的@PathVariable時出現了一個路徑匹配的問題,最后花了點時間解決了。
代碼結構:
這里寫圖片描述
問題內容:
這里寫圖片描述
訪問url為:
這里寫圖片描述
按照道理說,我應該到jsp的index頁面去。最后的結果確實到了index頁面,可是由于該頁面引用了幾個css和js,報異常找不到。有使用過spring經驗的童鞋應該知道使用如下代碼解決靜態資源的訪問。
// 方法一
<mvc:default-servlet-handler/>
// 方法二
<mvc:resources location="/easyui/js/" mapping="/themes/**"/>
<mvc:resources location="/easyui/themes/" mapping="/js/**"/>
可是最后還是訪問不到靜態資源。
于是我就想是因為@PathVariable的原因嗎?于是在下面做了一個實驗
@RequestMapping("/index")
public String index() {
System.out.println("index execute ");
return "index";
}
實驗的結果就是可以正確訪問。看樣子好像確實是這樣。于是我又再一次訪問上面的地址(http://localhost:8080/ksxt_v1/user/index),并且打開控制臺來查看,如下:
這里寫圖片描述
從上面標識的地方可以看出問題的原因了,當請求的URL為http://localhost:8080/ksxt_v1/user/index時,它在請求靜態資源的時候也會把user帶上,我們的靜態資源肯定不是放在這個文件夾里面的了。最后的結局當然是找不到了。
二、解決方法
上面的問題產生是因為我在引用靜態文件使用的是相對路徑。
這里寫圖片描述
解決方法就是將其全部修改為絕對路徑。
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/easyui/themes/icon.css">
<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>
最后完美解決。當然應該也有其它方式解決,暫時未想到,歡迎留言。