天天看點

java web 不用架構 靜态資源配置_JavaWEB項目靜态資源通路問題

今天碰到一個問題,SSM項目WEB-INF目錄下的靜态資源例如.css .js .font等檔案無法通路。百度了一下,需要配置SpringMvc對通路靜态資源的支援。

如果将DispatcherServlet請求映射配置為"/",則Spring MVC将捕獲Web容器所有的請求,包括靜态資源的請求,Spring MVC會将它們當成一個普通請求處理,是以找不到對應處理器将導緻錯誤。這可能是個曆史性的問題。由于早期的Spring MVC不能很好地處理靜态資源,是以在web.xml中配置DispatcherServlet的請求映射,往往使用 *.do 、 *.xhtml等方式。這就決定了請求URL必須是一個帶字尾的URL,而無法采用真正的REST風格的URL。

如何讓Spring架構能夠捕獲所有URL的請求,同時又将靜态資源的請求轉由Web容器處理,是可将DispatcherServlet的請求映射配置為"/"的前提。由于REST是Spring3.0最重要的功能之一,是以Spring團隊很看重靜态資源處理這項任務,給出了堪稱經典的兩種解決方案。

方法一:采用

在springMVC-servlet.xml中配置後,會在Spring MVC上下文中定義一個org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它會像一個檢查員,對進入DispatcherServlet的URL進行篩查,如果發現是靜态資源的請求,就将該請求轉由Web應用伺服器預設的Servlet處理,如果不是靜态資源的請求,才由DispatcherServlet繼續處理。

一般Web應用伺服器預設的Servlet名稱是"default",是以DefaultServletHttpRequestHandler可以找到它。如果你所有的Web應用伺服器的預設Servlet名稱不是"default",則需要通過default-servlet-name屬性顯示指定:

采用這種方式的靜态資源最好都放在webapp目錄下,也就是WEB-INF的同級目錄。更友善尋址,路徑不會很長。./就代表了webapp目錄。

方法2.采用

暫時還未看懂,看懂了再來更新。。