DispatcherServlet:前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。
<!--配置监听器--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--配置servlet--> <servlet> <servlet-name>mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--配置spring配置文件信息--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <!--配置服务器启动即完成加载--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc</servlet-name> <!--拦截除了jsp以外的所有请求--> <url-pattern>/</url-pattern> </servlet-mapping>Spring MVC运行原理图: SpringMVC运行流程:
用户发送请求到前端控制器DispatcherServlet,前端控制器调用HandlerMapping处理器映射器,处理器映射器通过xml配置文件或者注解进行查找需要的url判断是否存在并返回给DispatcherServlet。DispatcherServlet调用HandlerAdapter处理器适配器,经过适配器调用具体的Controller处理对应的业务逻辑,执行返回一个ModelAndView,HandlerAdapter将Controller执行的结果ModelAndView返回给DispatcherServlet。DispatcherServlet将ModelAndView传给视图解析器ViewResolver,解析后返回具体的View,DispatcherServlet根据View进行渲染视图将模型数据填充到视图中,响应给浏览器。SpringMVC核心组件(四大组件):
DispatcherServlet:Servlet分发器,接收请求响应结果,整个SpringMVC的入口,整个流程控制的中心,控制其他组件执行,减少组件之间的耦合性。HandlerMapping:寻找URL所请求的HandlerMethod,找@RequestMapping()。能够完成客户请求到Controller映射。HandlerAdapter:实际调用HandlerMethod的组件。ViewResolver:视图解析器,把逻辑视图转换为需要调用的物理视图。SpringMVC 运行原理时序图:
