SpringMVC中静态资源的处理
在SpringMVC中,关于静态资源处理的问题,遇到了一点问题,在此记录一下。
主要就是关于图片的处理。基本配置如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
由于在路径映射的配置下,“/”已经匹配了所有的资源请求,所有的请求都会流入控制器,若是请求以*.jpg或者*.png结尾,则没有可以处理这样请求的处理器,那么对于这样的请求便没有响应,也就是讲请求不到图片资源。如此,SpringMVC处理图片便有了三种思路
1.default。在web.xml下配置
1 <servlet-mapping> 2 <servlet-name>default</servlet-name> 3 <url-pattern>*.jpg</url-pattern> 4 </servlet-mapping> 5 6 <servlet-mapping> 7 <servlet-name>default</servlet-name> 8 <url-pattern>*.js</url-pattern> 9 </servlet-mapping> 10 <servlet-mapping> 11 <servlet-name>default</servlet-name> 12 <url-pattern>*.css</url-pattern> 13 </servlet-mapping> 14 <servlet-mapping> 15 <servlet-name>default</servlet-name> 16 <url-pattern>*.png</url-pattern> 17 </servlet-mapping>
这样的意思就是使用tomcat默认的静态资源处理器,当请求流入MVC中,没有处理,则会继续匹配下一个处理器,于是就流入到了default中,default是tomcat的默认的servlet,各个服务器都不尽相同。由于执行顺序,所以将default写在dispatcher前面,则请求就会直接处理,效率也最高。
2.在3.0.4版本中,MVC提供了一种新的方式,在MVC的配置文件中,<mvc:resources mapping="" location="" />使用这样的配置,必须要提供<mvc:annotation-driven />。
3.<mvc:default-servlet-handler />
在2、3两种方式内,都是将静态资源的请求交给mvc处理,故而影响性能。不建议使用
浙公网安备 33010602011771号