Spring MVC
Spring MVC是Spring Framework提供的Web组件,全称是Spring Web MVC,是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能。
Spring MVC功能
MVC:Controller(控制层)、Modedl(模型层)、View(视图层)
流程:Controller接收客户端请求,调用相关业务层组件产出Model,获取业务数据并返回给Controller,Controller再结合View完成业务数据的视图层渲染,并将结果响应给客户端。
Spring MVC对这套MVC流程进行封装,帮助开发者屏蔽底层代码,并且开放出相关接口供开发者调用,让MVC开发变得更加简单方便。
Spring MVC实现原理
核心组件
- DispatcherServlet:前置控制器,负责调度其他组件的执行,可以降低不同组件之间的耦合性,是整个Spring MVC的核心模块。前端请求映射到具体Handler。
- Handler:处理器,完成具体的业务逻辑,相当于Servlet。
- HandlerMapping:DispatcherServlet是通过HandlerMapping将请求映射到不同的Handler。
- Hanglerinterceptor:处理器拦截器,是一个接口,如果我们需要进行一些拦截处理,可以通过实现该接口完成。
- HandlerExecutionChain:处理器执行链,包括两部分内容:Handler和HandlerInterceptor(系统会有一个默认的HandlerInterceptor,如果需要额外拦截处理,可以通过田间拦截器进行设置)。
- HandlerAdapter:处理器适配器,Handler执行业务方法之前,需要进行一系列的操作包括表单的数据验证、数据类型的转换、将表单数据封装到POJO等,这一系列操作都是由HandlerAdapter完成,DispatcherServlet是通过HandlerAdapter执行不同的Handler。
- ModelAndView:封装了模型数据和视图信息,作为Handler的处理结果,返回给DispatcherServlet。
- ViewResolver:视图解析器,DispatcherServlet通过它将逻辑视图解析为物理视图,最终将渲染的结果响应给客户端。
工作流程
- 客户端请求被DispatcherServlet接受。
- 根据HandlerMapping映射到具体的Handler。
- 生成Handler和HandlerInterceptor。
- Handler和HandlerInterceptor以handlerExecutionChain的形式一并返回给DispatcherServlet。
- DispatcherServlet通过HandlerAdpater调用Handler的方法完成业务逻辑处理。
- 返回一个ModelAndView对象给DispatcherServlet。
- DispatcherServlet将获取的ModelAndView对象传给ViewResolver视图解析器,将逻辑视图解析问物理视图。
- ViewResolver返回一个View对象给DispatcherServlet。
- DispatcherServlet根据View进行视图渲染(将模型数据填充到视图中)。
- DispatcherServlet将渲染之后的视图响应给客户端。
Spring MVC具体使用
- 创建一个Maven工程,pom.xml中添加依赖