SpringMVC如果過濾器過濾范圍配置了/或者/*,那么框架會過濾所有請求,包括自己寫的請求和靜態資源請求,這樣靜態資源就不能正常加載,包括js文件、css文件、圖片資源訪問的時候都會出現404頁面,下面就來配置不過濾靜態資源的方法
第一種方法是最原生的,因為開始Spring核心過濾器過濾的路徑是項目下所有路徑,這個時候要改成過濾指定后綴即可,比如*.do,*.html等后綴,這樣自己編寫controller的時候全部主動設置請求為特定后綴,這樣靜態資源和編寫的請求就可以區分開了
第二種方法是如果我們打算編寫沒有后綴的請求,比如/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等等,都可以繼續添加配置,也比較方便
上面就是最簡單的兩種方法,效率肯定是最高的,他們過濾的對象不一樣,一個是只過濾動態url,一個是先過濾靜態資源