springmvc訪問靜態資源的方式
方案一:激活Tomcat的defaultServlet來處理靜態文件
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
要配置多個,每種文件配置一個
要寫在DispatcherServlet的前面, 讓defaultServlet先攔截請求,這樣請求就不會進入Spring了,我想性能是最好的吧。
方案二: 在spring3.0.4以後版本提供了mvc:resources,用以明確靜態資源,使用方法:
<!-- 對靜態資源文件的訪問 -->
<mvc:resources mapping="/images/**" location="/images/"/>
使用這種方式訪問靜態資源一定要啟動註解驅動:<mvc:annotation-driven />
方案三:使用<mvc:default-servlet-handler/>
這種方式與第一種方案有點類似,讓靜態資源的訪問避開DispatcherServlet,而使用DispatcherServlet攔截請求;
在springMVC-servlet.xml中配置<mvc:default-servlet-handler />後,會在Spring MVC上下文中定義一個org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它會像一個檢查員,對進入DispatcherServlet的URL進行篩查,如果發現是靜態資源的請求,就將該請求轉由Web應用伺服器默認的Servlet處理,如果不是靜態資源的請求,才由DispatcherServlet繼續處理。
一般Web應用伺服器默認的Servlet名稱是"default",因此DefaultServletHttpRequestHandler可以找到它。如果你所有的Web應用伺服器的默認Servlet名稱不是"default",則需要通過default-servlet-name屬性顯示指定:
<mvc:default-servlet-handler default-servlet-name="所使用的Web伺服器默認使用的Servlet名稱" />


TAG:程序員小新人學習 |