1、默认资源处理
DispatcherServlet前端控制器默认情况下不会处理静态资源,静态资源都是由tomcat服务器进行处理。tomcat的配置文件中有针对所有静态资源的处理配置。
tomcat的web.xml配置文件中存在一个DefaultServlet类
<!-- 处理图片、css、js等等 -->
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 处理JSP页面的请求 -->
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<!-- The mappings for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
-
JspServlet的类是用来处理JSP页面的,并且每个JSP的最后都会转为Servlet。
-
DefaultServlet类是用来处理图片、html、css、js等静态资源的。
默认情况下DispatcherServlet前端控制器当收到请求这些时都会交给Tomcat服务器处理,然后再由Tomcat进行分发处理。
2、MVC处理方式一
<mvc:default-servlet-handler/>
只需要在配置文件中加入这句话即可,
-
此时springmvc框架会在容器中自动创建DefaultServletHttpHandler用来处理静态资源。
-
前端控制器DispatcherServlet会对URI进行筛选,如果是静态资源就交给DefaultServletHttpHandler
-
然后DefaultServletHttpHandler再交给Tomcat中的DefaultServlet。
-
本质上说还是需要依赖Tomcat服务器,因此现在这种方式使用的并不多!
-
并且这种方式开发时静态资源只能放在webapp下,无法访问外部磁盘的文件!
但是加入这行代码的同时也带来了新的问题,与RequestMapping注解有冲突,导致无法访问Controller类。还需要开启mvc注解驱动搭配使用
3、MVC处理方式二
使用mvc:resourcesbiao标签进行配置
<mvc:resources mapping="/static/**" location="/static/"/>
这句话的含义是访问Webapp目录下static文件夹下的所有静态资源,loaction的位置也可以是具体的磁盘位置!