首先让我们了解下 MVC(Model-View-Controller)三元组的概念:
Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或 JavaBean 组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据) 和 服务层(行为)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
领域模型
javaBean组件等价于 域模型层 + 业务逻辑层 + 持久层
View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,
由视图负责展示。 也就是说控制器做了个调度员的工作。
1、SpringMVC 组件类有哪些?
在了解Spring MVC各组件之前,我们先来看一下Spring MVC框架结构:
从上图我们可以看到, Spring MVC主要包括:
1. 前端控制器组件(DispatcherServlet)
2. 处理器组件(Controller)
3. 处理器映射器组件(HandlerMapping)
4. 处理器适配器组件(HandlerAdapter)
5. 拦截器组件(HandlerInterceptor)
6. 视图解析器组件(ViewResolver)
7. 视图组件(View)
8. 数据转换组件(DataBinder)
9. 消息转换器组件(HttpMessageConverter)
整个处理过程从一个HTTP请求开始:
1、可发发起HTTP请求
2、DispatcherServlet接收到请求后,根据对应配置文件中配置的处理器映射,找到对应的处理器映射项(HandlerMapping、HandlerExecutionChain),根据配置的映射规则,找到对应的处理器(Handler)和拦截器
3、调用相应处理器处理器适配器
4、转换消息和数据,执行响应拦截器处理方法
5、调用相应处理器(Handler, 即Controller类)中的处理方法,处理该请求,处理器处理结束后会将一个ModelAndView类型的数据传给DispatcherServlet,这其中包含了处理结果的视图和视图中要使用的数据
6、DispatcherServlet根据得到的ModelAndView中的视图对象,找到一个合适的ViewResolver(视图解析器)
7、根据视图解析器的配置,DispatcherServlet将视图要显示的数据传给对应的视图
8、最后给浏览器构造一个HTTP响应。