1.<servlet><servlet-name>servlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>servlet</servlet-name><url-pattern>*.地址</url-pattern></servlet-mapping>
当我们请求后台时,先到tomcat,然后再到DisPatcherServlet,Tomcat中有一个默认的Servlet
<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> 表示静态资源和未映射的请求都由这个default处理
</servlet-mapping>
这个DefaultServlet的描述是这样的
The default servlet for all web applications, that serves static
resources. It processes all requests that are not mapped to other
servlets with servlet mappings (defined either here or in your own
web.xml file).(所有web应用程序的默认servlet,服务静态
资源。它处理所有未映射到其他服务器的请求
带有servlet映射的servlet(在这里或您自己的应用程序中定义
网站.xml文件)) 意思是如果我们没在自己的Servlet中配置请求,所有的请求都由tomcat来处理,tomcat不会拦截静态资源
2.<servlet><servlet-name>servlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>servlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
当我们配置Url为/时,所有请求tomcat中的DefaultServlet不会对发送过来的请求进行处理,交给我们自己配置的Servlet进行处理,但是这样会导致一个问题出现,静态资源会被拦截,我们无法访问静态资源,为什么会出现这种情况呢?因为Tomcat中DefaultServlet对静态资源进行了配置
/**
* Process a GET request for the specified resource.
*
* @param request The servlet request we are processing
* @param response The servlet response we are creating
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet-specified error occurs
*/@OverrideprotectedvoiddoGet(HttpServletRequest request,
HttpServletResponse response)throws IOException, ServletException {// Serve the requested resource, including the data contentserveResource(request, response,true, fileEncoding);//由于 serveResource方法源码过长,我就不粘贴了}
而我们自己的Servlet没有对静态资源进行配置,所以我们访问不到,我们只需要在springmvc的配置文件中加入
<!--配置静态资源不拦截--><mvc:default-servlet-handler/><!--配置注解驱动--><mvc:annotation-driven/>