轉發自 https://www.cnblogs.com/freeweb/p/5175188.html
spring 過濾靜態資源的2種方法
SpringMVC如果過濾器過濾範圍配置了/或者/*,那麼框架會過濾所有請求,包括自己寫的請求和靜態資源請求,這樣靜態資源就不能正常載入,包括js檔案、css檔案、圖片資源訪問的時候都會出現404頁面,下面就來配置不過濾靜態資源的方法
第一種方法是最原生的,因為開始Spring核心過濾器過濾的路徑是專案下所有路徑,這個時候要改成過濾指定字尾即可,比如*.do,*.html等字尾,這樣自己編寫controller的時候全部主動設定請求為特定字尾,這樣靜態資源和編寫的請求就可以區分開了
<!-- 訪問靜態資源 -->
36 <mvc:resources location="/image" mapping="/**"/>
第二種方法是如果我們打算編寫沒有字尾的請求,比如/hello這種,上面方法是有限制的,所以這個時候SpringMVC還是過濾/*這樣的全部請求,我們在web.xml中配置靜態資源優先過濾,這個時候伺服器首先載入web.xml提前攔截靜態資源請求,然後SpringMVC過濾器就攔截不到這些請求了,所以tomcat就可以正常使用靜態資源了,在web.xml中新增如下配置,前後均可:
複製程式碼
1 <servlet-mapping>
2 <servlet-name>default</servlet-name>
3 <url-pattern>*.jpg</url-pattern>
4 </servlet-mapping>
5 <servlet-mapping>
6 <servlet-name>default</servlet-name>
7 <url-pattern>*.js</url-pattern>
8 </servlet-mapping>
9 <servlet-mapping>
10 <servlet-name>default</servlet-name>
11 <url-pattern>*.css</url-pattern>
12 </servlet-mapping>
複製程式碼
如果有更多的資源需要過濾,比如.png,.gif等等,都可以繼續新增配置,也比較方便