老項目改springMVC后,jsp中的靜態資源都訪問不到404
jsp能得到,但是jsp里引入的js、css都訪問不到,不通過controller直接輸入地址沒問題
參考下文章發現:
原jsp中js、css的路徑是這樣寫的:
改成如下就好了:
轉:
springMVC請求返回視圖中引入的靜態資源路徑不正確
springMVC搭建的web項目,通過controller返回的jsp視圖,
jsp頁面中引入的js、css靜態文件,報錯404
發現路徑都帶着controller的requestMapping的路徑。
controller如下:
請求地址如下:
http://localhost:8088/test/test?id=1
靜態文件位置及路徑:
原因:jsp頁面中路徑不以“/”開頭,會當做相對路徑處理。
通過controller訪問返回的jsp視圖,是由你的服務器(tomcat)解析。
所以其(jsp)相對路徑就會是服務器的路徑。而不是其所在靜態資源位置的相對路徑。
解決辦法:
1:改為絕對路徑。
<script src="/js/jquery.min.js"></script>
2:頁面頂部獲取request.getContextPath() 獲取站點根路徑
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
然后再引用靜態資源前面加上<$=path %>如下
<link rel="stylesheet" type="text/css" href="<%=path %>/css/magnific-popup.css">