九、 靜態資源對映
當在 dispatcherservlet 的中配置攔截 「/」 時,除了*.jsp 不會攔截以外,其 他所有的請求都會經過前端控制器進行匹配,此時靜態資源,例如 .css、.js、*.jpg…… 就 會被前端控制器攔截,導致不能訪問,出現 404 問題。
訪問web目錄下untitled.png失敗。因為使用dispatcherservlet,配置urlparterrn為/只會過濾jsp,那其他的會攔截,然後找controller去呼叫請求處理。因為沒有寫,所以報錯404.
1 通過 defaultservlet 處理靜態資源
tomcat軟體自己帶有乙個web.xml,裡面有乙個defaultservlet,如果配置了對映.css,.jpg,.png等,那麼當請求這些資源的時候會由defaultservlet處理,直接放行!
tomcat自有的web.xml
重新啟動tomcat,訪問web目錄下的untitled.png,訪問成功!
這樣做可以訪問到web直接子節點,這些靜態檔案。嘗試訪問web子目錄的web-inf/下的靜態檔案,會經過預設的servlet放行,但是因為web-inf目錄訪問受限,仍會報錯404
2 通過 springmvc 的靜態資源對映器處理靜態資源
在 spring3.0.4 以後的 springmvc 模組提供了靜態資源對映器元件。通過 mvc:resources 標籤配置靜態資源對映器 。請求會先到dispatcherservlet,發現url是靜態資源配置了的路徑,會直接去位置中找訪問的資源。
修改 springmvc 配置檔案
<
mvc:resources
="/image/**"
location
="/web-inf/image/"
/>
訪問結果
可以訪問到任意目錄下的靜態檔案。使用的是springmvc不是tomcat的。
3 通過處理靜態資源
在 springmvc 的配置檔案中配置後,會在 spring mvc 上 下文中定義乙個 org.springframework.web.servlet.resource.defaultservlethttprequesthandler, 它會像乙個檢查員,對進入 dispatcherservlet 的 url 進行篩查,如果發現是靜態資源的請求,就將該請求轉由 web 應用伺服器預設的 servlet 處理,如果不是靜態資源的請求,才由 dispatcherservlet 繼續處理。
修改 springmvc 配置檔案
<
mvc:default-servlet-handler
/>
傳送3個請求,1,2是走的預設的defaultservlet,放行靜態資源,如果是web-inf目錄,則訪問受限。
3走的是springmvc的servlet,根據url選擇控制器。返回ok頁面。
所以,使用時我會選擇使用在springmvc配置檔案中配置靜態資源對映器,去訪問靜態資源。
spring mvc 學習筆記
今天主要學習spring mvc 框架的內容,以及相關的配置,如果有 不對,希望大家可以給指正,小弟在這裡先謝謝大家!spring在servlet初始化的時候通常有2種載入配置檔案的方式,一種是spring中在servlelt中配置檔案的方式,另外就是web.xml配置乙個 進行配置檔案的載入。第一...
SpringMVC 學習筆記
一 什麼是springmvc springmvc是spring框架的乙個模組,springmvc和spring無需通過中間整合層進行開發。springmvc是乙個基於mvc的web框架。spring web mvc和struts2都屬於表現層的框架,它是spring框架的一部分,我們可以從sprin...
Spring MVC 學習筆記
springmvc中各個部件簡介 相對於同為 mvc的 struts 來說,它是乙個輕量級的框架,但它能實現的內容有很多,例如 所有的請求都通過springmvc統一的入口dispatcherservlet,可以用其進行資源和許可權的管理 過濾器,filter 可以檢查使用者請求 日誌記錄 對非標準...