三层架构

我们开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也即是浏览器/服务器。在JavaEE开发中,几乎全都是基于B/S架构的开发。那么在B/S架构中,系统标准的三层架构包括:表现层、业务层、持久层。三层架构在我们的实际开发中使用的非常多,现在Java项目中也都是基于三层架构设计的。

表现层:

也就是我们常说的web层。它负责介绍客户端的请求,向客户端响应结果,通常客户端使用http协议请求web层,web需要接收http请求,完成http响应。
表现层包括展示层和控制层:控制层负责接收请求,展示层负责结果的展示。
表现层依赖业务层,接收到客户端请求一般会调用业务层进行业务处理,并将处理结果响应给客户端。
表现层的设计一般都使用MVC模型。(MVC是表现层的设计模型,和其它层没有关系)

业务层:

也就是我们常说的service层。它负责业务逻辑处理,和我们开发项目的需求息息相关。web层依赖业务层,但是业务层不依赖web层。
业务层在业务处理时可能会依赖持久层,如果要对数据持久化需要保证事务一致性。(也就是我们说的,事务应该放到业务层来控制)

持久层:

百度百科中有时候将数据访问层也称为是持久层,也就是我们常说的dao层。负责数据持久化,数据库是对数据进行持久化的载体,业务层需要通过数据访问层将数据持久化到数据库中。通俗来讲,持久层就是和数据库交互,对数据库表进行增删改查的。

c 三层架构 反射 泛型工厂 三层c/s架构_c 三层架构 反射 泛型工厂

MVC

MVC全名是Model View Controller,是模型(Mode)-视图(View)-控制器(Controller)的缩写,是一种用于设计创建Web应用程序表现层的模式。MVC中每个部分各司其职:

Model(模型):
通常指的是我们的数据模型。作用一般情况下用于封装数据。

View(视图):
通常指的是我们的jsp或者html。作用一般是展示数据。
通常视图是依据模型数据创建的。

Controller(控制器):

是应用程序中处理用户交互的部分。作用一般就是处理程序逻辑的。

c 三层架构 反射 泛型工厂 三层c/s架构_架构_02


c 三层架构 反射 泛型工厂 三层c/s架构_c 三层架构 反射 泛型工厂_03


在表现层中使用MVC来设计相当于表现层又包括展示层和控制层,客户端发送请求,controller负责接收请求,然后controller调用业务层,再由业务层调用数据层得到数据后组织出来最终要展示的数据模型(Model),最终由View+Model配合一起工作得到页面反馈给用户。

具体示意如下

c 三层架构 反射 泛型工厂 三层c/s架构_架构_04

异步调用

现在的开发又变为异步调用的形式,也就是上图View发生了变化,前端我们采用HTML、CSS、VUE、ElementUI的形式来构建我们的页面,后端服务器也发生了调整,现在浏览器发请求会采用异步调用的形式调用我们的后端服务器。后端服务器controller调用service,service调用dao,数据处理完后最终会得到一个Model对象,也就是我们要展示的数据。

c 三层架构 反射 泛型工厂 三层c/s架构_c 三层架构 反射 泛型工厂_05


但是Model对象是Java对象无法返回给页面,所以我们需要找到一种能够在页面与我们Java程序间进行信息交换的数据格式(Json)

c 三层架构 反射 泛型工厂 三层c/s架构_java-ee_06


c 三层架构 反射 泛型工厂 三层c/s架构_mvc_07

前端界面拿到数据后,可以从Json数据中抽取出来然后组织成对应的页面反馈给我们的浏览器。

SpringMVC

SpringMVC做两件事:

1、负责controller对应功能的开发

2、将我们操作完的数据转成Json格式交给页面

c 三层架构 反射 泛型工厂 三层c/s架构_c 三层架构 反射 泛型工厂_08

SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用)等。

SSM框架:

表现层:SpringMVC

业务层:Spring

持久层:Mybatis

c 三层架构 反射 泛型工厂 三层c/s架构_java-ee_09