如果在web.xml中,中央调度器(DispatcherServlet)的映射路径为/,将导致静态资源无法正常访问,但是解决方式也是有的。
解决方式一:
因为Tomcat提供了一个默认的Servlet,用来处理请求。(以下是Tomcat自带web.xml中配置的默认Servlet)
所以可以将静态资源映射到Tomcat默认的Servlet上
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
解决方式二:
在springmvc.xml下添加mvc标签(此配置会将对静态资源的访问请求通过HandlerMapping映射到
默认Servlet请求处理器DefaultServletHttpRequestHandler对象。
而该处理器调用了Tomcat的DefaultServlet来处理静态资源的访问请求)
要使用mvc标签,必须引入mvc约束
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
<mvc:default-servlet-handler/>
解决方式三:
也是使用mvc标签(location配置的静态资源路径,mapping配置的是对该资源的请求)
该配置会把对该静态资源的访问请求经HandlerMapping直接映射到静态资源处理器对象ResourceHttpRequestHandler
<mvc:resources location="/images/" mapping="/images/**"/>
<mvc:resources location="/js/" mapping="/js/**"/>
<mvc:resources location="/css/" mapping="/css/**"/>