最近在玩springmvc時候,發現一個問題,開始一直沒發現,我想這是很多人都會遇到的問題,
<img src="https://img-blog.csdn.net/20160419191450007?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
不管是用絕對路徑
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="<%=basePath%>/bootstrap/css/bootstrap.min.css">
<!-- 可選的Bootstrap主題文件(一般不用引入) -->
<link rel="stylesheet" href="<%=basePath%>/bootstrap/css/bootstrap-theme.min.css">
<!-- jQuery文件。務必在bootstrap.min.js 之前引入 -->
<script src="<%=basePath%>/jquery/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="<%=basePath%>/bootstrap/js/bootstrap.min.js"></script>
還是相對路徑
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="./bootstrap/css/bootstrap.min.css">
<!-- 可選的Bootstrap主題文件(一般不用引入) -->
<link rel="stylesheet" href="./bootstrap/css/bootstrap-theme.min.css">
<!-- jQuery文件。務必在bootstrap.min.js 之前引入 -->
<script src="./jquery/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="./bootstrap/js/bootstrap.min.js"></script>
都沒辦法加載js css等文件
結果老是報404,找不到這些靜態文件
經過分析發現,是被攔截了,所以我就找到web.xml文件
方式一:
發現我配置成這個了
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 第一種:*.action,訪問以.action結尾 由DispatcherServlet進行解析 第二種:/,所以訪問的地址都由DispatcherServlet進行解析,對於靜態文件的解析需要配置不讓DispatcherServlet進行解析
使用此種方式可以實現 RESTful風格的url 第三種:/*,這樣配置不對,使用這種配置,最終要轉發到一個jsp頁面時, 仍然會由DispatcherServlet解析jsp地址,不能根據jsp頁面找到handler,會報錯。 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
因爲配置成這個 我們的靜態文件,也會隨http請求,加載進來
而我們的DispatcherServlet也進行攔截過濾,會去找到handermapping,映射器找不到適配器來適配,就會報404!
所以我們這裏需要修改
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 第一種:*.action,訪問以.action結尾 由DispatcherServlet進行解析 第二種:/,所以訪問的地址都由DispatcherServlet進行解析,對於靜態文件的解析需要配置不讓DispatcherServlet進行解析
使用此種方式可以實現 RESTful風格的url 第三種:/*,這樣配置不對,使用這種配置,最終要轉發到一個jsp頁面時, 仍然會由DispatcherServlet解析jsp地址,不能根據jsp頁面找到handler,會報錯。 -->
<url-pattern>*.action</url-pattern>
</servlet-mapping>
這樣問題就可以解決了
方式二:
在spring的xml中配置靜態資源訪問路徑
<mvc:resources location="/bootstrap/**" mapping="/bootstrap/**"/>
<mvc:resources location="/jquery/**" mapping="/jquery/**"/>
這樣我們的靜態資源就不會被Dis Servlet給攔截解析