轉發 spring 過濾靜態資源的2種方法

瓜瓜東西發表於2018-07-31
轉發自 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等等,都可以繼續新增配置,也比較方便

  

相關文章