环境:
- IDEA 2020.2
- MySQL 5.7.19
- Tomcat 9
- Maven 3.6
SSM概要
SSM即为SpringMVC+Spring+Mybatis的简称
web分层设计
在企业级Web项目开发中,标准的三层架构包括:表现层、业务层、数据访问层(持
久层)。三层架构中,每一层各司其职,其中:
- 表现层:即UI层,负责接收客户端请求,并向客户端返回结果。
- 业务层:即Service 层或BLL(Business logic level)。它负责业务逻辑处理,和
开发项目的需求息息相关。 - 数据访问层(持久层):也就是 Dao/Mapper 层。主要负责数据持久化,业务层需
要通过数据访问层将数据持久化到数据库中。
一个通用的三层架构模型如下图所示:
在三层架构中,常用的框架工具如下图所示:
springMvc其实底层就是封装得servlet,我们平时主要写的只有业务层的代码,数据访问层这些在前期配置后写完后面就一劳永逸了,加之有mybatis-plus让访问层开发更简单。
MVC模型
MVC 是一种软件架构模式,是当前的流行的 Web 应用架构技术,被广泛应用于企
业级 Web 应用的开发中。
它把 Web 应用划分成三部分,它们分别完成不同的功能以实现 Web 应用:
- 模型(Model)
- 控制器(Controller)
- 视图(View)
软件设计思想演变,一开始由Trygve Reenskaug教授提出,主要思想有:
- 重写任何系统的能力
- 模块化、可插入的透明子系统的存在
- 每个系统的细分
- 系统的可伸缩性
1979 年 Trygve 教授进一步提炼思想,提出了 MVC 模式。1988 年,在《A cookbook
for Using the Model-View-Controller User Interface Paradigm in Smalltalk-80》一书中正
式提出 MVC 模式。
MVC 中三部分的定义如下:
- 视图(View):视图是应用程序中显示用户界面(UI)的组件,随着应用程序的复
杂性和规模性,界面的处理也变得复杂,一个应用可能有很多不同的视图。MVC 对视图
的处理仅仅限于视图上数据的采集和处理,不包括业务流程的处理。 - 控制器(Controller):控制器是处理用户交互的组件,它与模型协作,并且最终
选择一个要呈现的视图来显示用户界面。理论上,在 MVC 应用程序中,控制器不做任
何数据的处理,只负责处理并且响应用户输入和交互。 - 模型(Model):模型就是业务流程/状态的处理及业务规则的制定。模型接受视图
请求的数据,并返回最终的处理结果,业务模型的设计是 MVC 最主要的核心。
MVC web程序的工作流程如下图:
优点:
- 将应用程序分为模型、视图和控制器,在管理复杂性方面更加的简单。
对于那些由大型开发者和设计者所支持的 Web 应用程序来说,它运作得很好,
能够对应用程序的行为提供更高层次的控制。 - 可以为模型在运行时建立和使用多个视图,从而使所有关联的视图和
控制器做到同步更新。 - 视图和控制器的可接插性,允许更换视图和控制器对象,可以根据需
求动态地打开或关闭,甚至在运行期间进行对象更换。 - 模型的可移植性。模型独立于视图,所以可以把模型独立地移植到新
的平台工作,只需要对控制器和视图进行修改。
SpringMVC
Java早期的MVC模型主要使用Servlet组件,使用流程:
- 用户的请求首先到达Servlet
- Servlet作为控制器接收请求,然后调度 Java Bean,来读写数据库的数据
- 最后将结果放到 jsp中展现给用户。
缺陷:Servlet 组件功能有限,而且与 jsp 的耦合度过高,使得基于Servlet 组件的 MVC 架构开发不便。
springMvc处理流程图:
springmvc核心组件
- DispatcherServlet:前端控制器,不需要程序员开发,但是需要在 WEB.xml
配置。 用户请求到达前端控制器,首先被 DispatcherServlet 拦截,它是
整个流程控制的中心,由它调用其它组件处理用户的请求。 DispatcherServlet
的存在降低了组件之间的耦合度。 - HandlerMapping:处理器映射器,不需要程序员开发。 HandlerMapping 负
责根据用户请求找到 Handler 即处理器。SpringMVC 提供了不同的映射器
实现不同的映射方式,例如:配置文件方式,注解方式等。 - Handler(即 Controller):处理器(控制器),需要程序员开发。它就是在
开发中要编写的具体业务控制器。实际运行中,由 DispatcherServlet 把
用户请求转发给某个 Handler,再由 Handler 对具体的用户请求进行处理。 - HandlAdapter:处理器适配器,不需要程序员开发。通过 HandlerAdapter
对处理器进行执行,按照特定规则(HandlerAdapter 要求的规则)去执行
Handler(Controller)。 - View Resolver:视图解析器,不需要程序员开发,需要配置。View Resolver
负责将处理结果生成 View 视图。它首先把逻辑视图名解析成物理视图名,
即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染及处 理,通过
页面展示给用户。 - View:视图(页面),需要程序员开发。SpringMVC 框架提供了很多的对
View 视图类型的支持,包括: jstlView、freemarkerView、pdfView 等。
一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给
用户,需要由程序员根据业务需求开发具体的页面。