BS中的三层架构和MVC设计模型
⼀.B/S系统中的三层架构
1.引⼦:
我们的开发架构⼀般都是基于两种形式,⼀种是 C/S 架构,也就是客户端/服务器,另⼀种是 B/S 架构,也就 是浏览器服务器。在JavaEE 开发中,⼏乎全都是基于 B/S架构的开发。那么在 B/S架构中,系统标准的三层架构 包括:表现层、业务层、持久层。三层架构在我们的实际开发中使⽤的⾮常多。
2.表现层:
表现层: 也就是我们常说的web层。它负责接收客户端请求,向客户端响应结果,通常客户端使⽤http协议请求 web 层,web 需要接收http 请求,完成 http 响应。 表现层包括展⽰层和控制层:控制层负责接收请求,展⽰层负责结果的展⽰。 表现层依赖业务层,接收到客户端请求⼀般会调⽤业务层进⾏业务处理,并将处理结果响应给客户端。
3.业务层:
业务层: 也就是我们常说的 service 层。它负责业务逻辑处理,和我们开发项⽬的需求息息相关。web 层
依赖业 务层,但是业务层不依赖web 层。 业务层在业务处理时可能会依赖持久层,如果要对数据持久化需要保证事务⼀致性。(也就是我们说的, 事务应该放到业务层来控制)
4.持久层:
持久层: 也就是我们是常说的 dao 层。负责数据持久化,包括数据层即数据库和数据访问层,数据库是对数据进 ⾏持久化的载体,数据访问层是业务层和持久层交互的接⼝,业务层需要通过数据访问层将数据持久化到数据库中。通俗的讲,持久层就是和数据库交互,对数据库表进⾏曾删改查的。
mvc的controller5.三层架构图解(与相应框架的对应):
当⽤户访问⼀个⽹站时:
⽤户需要经历的过程有:在浏览器输⼊ url,然后浏览器向服务器发起⼀个 http 请求,服务器端拿到这个http请求之后会根据相关的条件到数据库查询相关数据,然后把数据以特定的格式,⽹站是 html 格式,返回给浏览器,浏览器再根据特定数据渲染出相应页⾯。那么对⽤户来说:
(1). 浏览器就是⽤户界⾯层,它主要是与⽤户交互的页⾯,根据⽤户的输⼊与事件,处理并显⽰返回的特定数据。
(2). 连接表⽰层与数据访问层的就是业务逻辑层,这包括后端程序中模型设计、验证、业务规则、各种计算等。
(3). 服务器端必须要⼀个强⼤的数据库来存储所有⽤户交互产⽣的数据,⽽对这些数据的处理,包括增、删、改、查就属于数据访问层。
⼆.MVC设计模型
1.概念:
MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写, 是⼀种⽤于设计创建 Web 应⽤程序表现层的模式。MVC 中每个部分各司其职。
(1). Model(模型):通常指的就是我们的数据模型(Javabean)。作⽤⼀般情况下⽤于封装数据。
(2). View(视图):通常指的就是我们的 jsp 或者 html。作⽤⼀般就是展⽰数据的。 通常视图是依据模型数据创建的。
(3) Controller(控制器):是应⽤程序中处理⽤户交互的部分(Servlet)。作⽤⼀般就是处理程序逻辑的。
例如:我们要保存⼀个⽤户的信息,该⽤户信息中包含了姓名,性别,年龄等等。 这时候表单输⼊要求年龄必须是 1~100 之间的整数。姓名和性别不能为空。并且把数据填充 到模型之中。 此时除了 js 的校验之外,服务器端也应该有数据准确性的校验,那么数据的准确性校验就是控制器的该做的。当校验失败后,由控制器负责把错误页⾯展⽰给使⽤者。如果校验成功,也是控制器负责把数据填充到模型(javabean中),并且调⽤业务层实现完整的业务需求,最后返回响应到视图层由浏览器做渲染,最后在浏览器页⾯上响应出来。
2.与三层架构模型之间的关系:
表现层的设计⼀般都使⽤ MVC 模型。MVC 是表现层的设计模型,和其他层没有关系。
3.MVC框架的⼯作流程?
(1).⽤户通过View页⾯向服务端提出请求,可以是表单请求、超链接请求、AJAX请求等。
(2). 服务端Controller控制器接收到请求后对请求进⾏解析,到相应的Model对⽤户数据进⾏封装然后移交到业务层和持久层对与数据库进⾏交互
(3) 业务层和持久层处理后,将处理结果再交给表现层的Controller
(4).Controller在接到处理结果后,根据处理结果到要作为向客户端发回的响应View页⾯。页⾯经渲染(数据填充)后,再发送给浏览器
三.使⽤架构和框架的优势
1、开发⼈员可以只关注整个结构中的其中某⼀层;
2、可以很容易的⽤新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖,实现⾼内聚低耦合;
4、有利于标准化;
5、利于各层逻辑的复⽤。
6、结构更加的明确
7、在后期维护的时候,极⼤地降低了维护成本和维护时间
以上总结是学习完⿊马程序员的视频总结的如有理解上的缺陷请联系我,302664347。谢谢

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。