目录
1-Spring MVC基础概念:
1.1-什么是SpringMVC?
SpringMVC(Spring Web MVC)属于Spring基本架构组成部分之一。它属于SpringFrameWork的后续产品,同时,已经融合在Spring Web Flow里面。这意味着,完成配置文件之后,就可以实现Spring MVC与Spring整合。[1]
1.2-Spring MVC工作原理简述:
1.2.1-工作流程:
1-用户发送请求至前端控制器DispatcherServlet。
2-DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3-处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4-DispatcherServlet调用HandlerAdapter处理器适配器。
5-HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6-Controller执行完成返回ModelAndView。
7-HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8-DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9-ViewReslover解析后返回具体View。
10-DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11-DispatcherServlet响应用户。[2]
小记:
核心架构的具体流程步骤如下:
1-首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;
2-DispatcherServlet——>HandlerMapping, HandlerMapping 将会把请求映射为HandlerExecutionChain 对象(包含一个Handler 处理器(页面控制器)对象、多个HandlerInterceptor 拦截器)对象,通过这种策略模式,很容易添加新的映射策略;
3-DispatcherServlet——>HandlerAdapter,HandlerAdapter 将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;
4-HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter 将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView 对象(包含模型数据、逻辑视图名);
5-ModelAndView的逻辑视图名——> ViewResolver, ViewResolver 将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;
6-View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;
7-返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。[2]
1.3-对比Straus2 MVC:
Spring MVC是类似于 Struts2 的一个 MVC 框架。但是上手难度却比 Struts2 简单多了。而且由于 Struts2 所暴露出来的安全问题,SpringMVC 已经成为了大多数企业优先选择的框架。[1]
2-MVC设计模式:
2.1-组件名称:
M-Model 模型(完成业务逻辑:有javaBean构成,service+dao+entity)
V-View 视图(做界面的展示 jsp,html……)
C-Controller 控制器(接收请求—>调用模型—>根据结果派发页面)[2]
2.2-MVC模式原理:
2.3-Spring MVC设计架构:
传统的模型层被拆分为了业务层(Service)和数据访问层(DAO,Data Access Object)。 在 Service 下可以通过 Spring 的声明式事务操作数据访问层,而在业务层上还允许我们访问 NoSQL ,这样就能够满足异军突起的 NoSQL 的使用了,它可以大大提高互联网系统的性能。[3]
特点:
结构松散,几乎可以在 Spring MVC 中使用各类视图;
松耦合,各个模块分离;
与 Spring 无缝集成. [3]
3-MVC,SSM与三层架构的构成及相互关系
小记:
三层架构由用户界面层/表示层(User Interface),业务逻辑层(Business Logic Layer)和数据访问层(Data Acess Layer)构成。
其中每一层的作用为:
1-用户界面层:负责与用户进行交互。
2-业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理。
3-数据访问层:主要是对非原始数据(数据库或者文本文件等存放数据的形式)的操作层,也就是说是对数据库,而不是对数据的操作,具体为业务逻辑层或用户界面层提供数据服务。[4]
3.1-MVC框架和三层架构的关系
小记:
MVC与三层架构并不是一一对应的,MVC只是三层架构基础上设计的具体框架。
3.1.1-依从三层架构标准的MVC框架实现
MVC 是在三层架构的基础上设计的一种框架型架构。三层架构是一种宏观的概念,而 MVC 就是一种比较具体的三层架构的框架实现。从三层架构的角度来讲,实际应用中,实现它只需在 MVC 的基础上把不同类别的代码文件进行分类就可以了。[4]
3.1.2-MVC与各个角色对应关系
一般认为View 层和 Controller 层都属于三层架构的用户界面层,而Model属于业务逻辑层和数据访问层. [4]
3.2-SSM框架和三层架构的关系
小记:
SSM主要由Spring,SpringMVC 和 Mybatis三个构成。它们在三层架构中所处的位置是不同的,即它们在三层架构中的功能各不相同,各司其职。[4]
3.2.1-SpringMVC:
作为View层的实现者,完成用户的请求接收功能。SpringMVC的Controller作为整个应用的控制器,完成用户请求的转发及对用户的响应。[4]
3.2.2-MyBatis:
作为 Dao层的实现者,完成对数据库的增、删、改、查功能。[4]
3.2.3-Spring:
以整个应用大管家的身份出现。整个应用中所有的Bean的生命周期行为,均由Spring来管理。即整个应用中所有对象的创建、初始化、销毁,及对象间关联关系的维护,均由Spring进行管理。[4]
推荐阅读:
1, 3, 5有具体实例代码。
[1] SpringMVC详解(一)------入门实例 - YSOcean - 博客园
[2] SpringMVC工作原理 - 霸气小青年 - 博客园