一、概述:
DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring
MVC的第一步;【充当调度者的角色,通过它将其他几个流程合理安排分工,使得项目运行下去】;
DispatcherServlet其实就是servlet,也是继承了httpservlet基类,所以想要使前端控制生效,不仅要在controller层添加注解@Controller和@RequestMapping,最后一点就是需要你在web.xml配置文件下声明配置才能生效,
附上SpringMVC处理流程图帮助理解:
二、DispatcherServlet控制流程:
1.文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;
2.通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个HandlerInterceptor拦截器);
3.通过handlerAdapter支持多种类型的处理器(handlerExceptionChain中的处理器);
4.通过ViewResolver解析逻辑视图名到具体视图实现;
5.本地化解析;
6.渲染具体的视图等;
7.如果执行过程中遇到异常将交给handlerExceptionResolver来解析;
三、详细配置:
在web.xml配置如下:
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- 配置springmvc配置文件的位置 -->
<param-name>contextConfigLocation</param-name> <!--配置文件名 -->
<param-value>classpath:springmvc-servlet.xml</param-value> <!--配置文件名路径 -->
</init-param>
<!-- Servlet默认第1次访问创建,配置load-on-startup则会在tomcat启动时提前创建 -->
<load-on-startup>1</load-on-startup> <!--启动级别为1 -->
</servlet>
<!-- servlet映射声明 -->
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern> <!-- 监听当前域的所有后缀为.do的请求-->
</servlet-mapping>