SpringMVC靜態資源訪問
聊一聊關於靜態資源的訪問問題
首先,我們要對web.xml裡面的DispatcherServlet進行設定
<!-- 中央排程器-->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMVC.xml</param-value>
</init-param>
<!--tomcat 一啟動就可以載入中央排程器,數字只要大於0 即可-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<!--
url-pattern設定為:"/",當你使用了"/",他會替代Tomcat中的default,
導致所有的資源都給DispatcherServlet處理,預設情況下DispatcherServlet
沒有處理靜態資源的能力,沒有控制器物件能處理靜態資源的訪問,所以導致靜態資源
訪問失敗都是404,動態代理可以正常訪問。如果不設定url-pattern設定為:"/",
則不存在靜態資源訪問不到
-->
<url-pattern>/</url-pattern>
</servlet-mapping>
由於設定了url-pattern為:"/",接下來我們還需要設定springmvc的配置檔案,讓靜態資源可以被訪問到。有兩種方式
- 第一種方式
<!--新增該標籤-->
<mvc:default-servlet-handler />
<!--
原理:
給程式記憶體中增加一個處理器物件:DefaultServletHttpRquestHandler。
讓這個物件可以把接收到的請求轉發給Tomcat的default這個servlet。
但是這個標籤與@RequestMapping這個註解有衝突,所以需要加入註解驅動:<mvc:annotation-driven />
-->
<mvc:annotation-driven />
- 第二種方式
<!--
使用框架中的:<mvc:resource mapping="" location=""/>標籤,
標籤加入後框架會自己建立ResourceHttpRequestHandler這個處理器物件。
讓這個物件處理靜態資源的訪問,不依賴於Tomcat伺服器。該標籤與@RequestMapping
註解有衝突,需要加註解驅動:<mvc:annotation-driven />
引數:
location:靜態資源在你的專案中的位置
mapping:訪問靜態資源的URI地址,使用萬用字元 ** ,代表多級任意
引數內的靜態資源皆可以被訪問
-->
<mvc:resources location="/img/" mapping="/img/**"/>
好啦,這就是目前作為一個算不上菜鳥的菜鳥對springmvc靜態資源訪問的掌握程度。歡迎留言