springmvc jsp無法訪問靜態同目錄的css js文件

最近在玩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給攔截解析


發佈了36 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章