什么是SpringMVC
SpringMVC是以请求为驱动,围绕Servlet设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图的一种框架。其中核心类是DispatchServlet。
SpringMVC工作原理
1、客户端发起请求(请求中至少包含URL),前端控制器DispatcherServlet接收到请求。
2、DispatcherServlet的任务是将请求发送给SpringMVC控制器(controller控制器是一个用于处理请求的Spring组件)。DispatcherServlet需要知道应该将请求发送给哪一个控制器,所以DispatcherServlet会查询一个或多个处理器映射(handler mapping)去确定请求应该发送到哪儿。而处理器映射器会根据请求中的URL来确定。
PS:HandlerMapping会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式。很容易添加新的映射策略。
interface HandlerMapping //处理请求的映射
//接口实现类
SimlpeUrlHandlerMapping //通过配置文件,映射Url到Controller
DefaultAnnotationHandlerMapping //通过注解,映射Url到Controller类上
3、解析到对应的Handler后,会有HandlerAdapter适配器处理。
HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器。
4、HandlerAdapter会根据Handler来调用真正的处理器来处理请求。由处理器(Controller)处理具体的业务逻辑。
interface HandlerAdapter //处理请求的映射
AnnotationMethodHandlerAdappter //通过注解,映射Url到具体的Controller方法上。
5、处理器处理完具体的业务逻辑后,通常会返回一个Model和一个View。Model中通常是数据对象,View通常是一个逻辑视图。控制器做的最后一件事就是将模型数据打包,并且标示出用于渲染输出格式的视图名,然后将请求连同模型和视图名发送回DispatcherServlet。
6、DispatcherServlet会使用ViewResolver根据控制器返回的逻辑视图名匹配(查找)真实的视图。
7、DispatcherServlet将返回的model(实际是一个Map数据结构)传给视图。
8、视图根据model渲染输出。
9、DispatcherServlet返回响应给客户端(请求方)。