介绍下MVC
MVC是一种架构型的模式,本身并不引入新的功能。它帮助我们将开发的结构组织的更加合理,使得业务处理逻辑、视图展示逻辑流程控制逻辑分离开来。有三个核心组件: Model 模型 提供要展示的数据和业务逻辑处理,View 视图 展示来自模型的数据, Controller 控制器:接收用户请求,根据请求委派给模型进行处理,将模型处理后的数据交给View处理,进行数据的展示。扮演调度员的角色。
Spring MVC的核心入口是DispatcherServlet, DispatcherServlet本质上是一个Servlet。servlet有三个生命周期方法。
- init() 在服务器加载servlet时执行,并且只执行一次。
- destory()在服务器销毁servlet时执行,释放资源。
- service()当客户端向服务端发送消息时,服务器将请求转发到servlet的service方法。
当服务器加载DispatcherServlet时,会调用DispatcherServlet的init方法, 创建SpringMVC自己的上下文,同时会获取根上下文(Spring上下文), 并将该上下文和根上下文关联起来。此外还会进行一些初始化工作, 处理器映射器、处理器适配器、处理器异常解析器等。
SpringMVC的执行流程
- 用户请求到前端控制器DispatcherServlet
- DispatcherServlet根据请求找到对应的HandlerMapping处理器映射器。
- HandlerMapping根据url找到handler并生成HandlerExecutionChain处理器执行器链(包括处理器对象和处理器拦截器)
- DispatcherServlet根据Handler找到对应HandlerAdapter处理器适配器并执行。 HandlerAdapter包括一系列的操作:参数封装、数据格式转换等操作。
- 执行Handler(controller, 也叫页面控制器)
- handler执行后生成ModelAndVIew并返回给给HandlerAdapter。
- handlerAdapter将handler的返回结果返回给DispatcherServlet。
- ViewReslover处理ModelAndVIew并生成View。
- DispatcherServlet对View进行渲染。(将model 数据填充到View中)。