静态资源处理
Tomcat
中对于静态资源的访问是交给DefaultServlet
处理的,其pattern
为/
,其表示当其他所有servlet
中不能匹配到的,到此进行匹配处理。而如果我们给SpringMVC
的核心调度器使用这个pattern
则会导致静态资源访问的问题,下面我们就解决即给核心调度器使用/
又能访问静态资源的方式。
依赖DefaultServlet
的方式。
配置
在配置文件当中写入mvc:default-servlet-handler, 框架会自动创建DefaultServletHttpRequestHandler对象,其将接收到不能匹配到任何处理器的请求转发给Tomcat的DefaultServlet
进行处理。
<mvc:default-servlet-handler/>
解决冲突
<mvc:default-servlet-handler>
和 @RequestMapping
有冲突,需要添加注解驱动来解决冲突问题。
mvc:resource 方式
default-servlet-handlder
方式还是Tomcat
的DefaultServlet
, 因此使用<mvc:resource>
的方式则会使用框架创建出来的ResourceRequestHanlder
来处理静态资源的访问。
<!--
/images/** 表示images后面可以是任意字符 : images/log.jpg, images/user/logo.jsp
其可以创建多个,针对不同的webapps下面的目录。
-->
<mvc:resource mapping="/images/**" location="/images/"/>
<mvc:resource mapping="/html/**" location="/html/"/>
<mvc:resource mapping="/js/**" location="/js/"/>
配置所有
避免配置多个静态资源目录,因此可以在webapps
下面创建一个static
目录,下面放置静态文件就可以了。
<mvc:resource mapping="/static/**" location="/static/" />
解决冲突
<mvc:resource>
和 @RequestMapping
有冲突,需要添加注解驱动来解决冲突问题。