一.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 层。负责数据持久化,包括数据层即数据库和数据访问层,数据库是对数据进 行持久化的载体,数据访问层是业务层和持久层交互的接口,业务层需要通过数据访问层将数据持久化到数据库中。通俗的讲,持久层就是和数据库交互,对数据库表进行曾删改查的。

5.三层架构图解(与相应框架的对应):

当用户访问一个网站时:
用户需要经历的过程有:在浏览器输入 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。谢谢

B/S中的三层架构和MVC设计模型相关推荐

  1. .从三层架构到MVC,MVP

    从三层架构到MVC,MVP http://www.cnblogs.com/daizhj/archive/2009/04/30/1447035.html 一. MVC是谁提出的 模型-视图-控制器(MV ...

  2. 浅析三层架构与MVC模式的区别

    浅析三层架构与MVC模式的区别 三层架构介绍: (点击链接即可见三层架构) MVC模式介绍: MVC全名是Model ViewController,是模型(model)-视图(view)-控制器(co ...

  3. 三层架构和MVC模式

    1.三层架构 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了" ...

  4. Django——WEB三层架构与MVC

    而我发此文的目的有二:一者,让初学者能够听到一家之言,是为解惑:二者,更希望抛砖引玉,得到专家的批判. 许多学生经常问我,MVC到底和WEB三层架构有啥关系? 开始时,我也只能给他们一些模糊的回答.时 ...

  5. 三层架构与MVC的区别

    我们平时总是将混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. MVC是一个设 ...

  6. 【软件架构】三层架构和MVC的比较

    MVC是一种设计模式,我们可以用它来创建在域对象和UI表示层对象之间的区分. 同样是架构级别的,相同的地方在于二者都有一个表现层,但是他们不同的地方在于其他的两个层. 三层架构中没有定义Control ...

  7. 三层架构与Mvc设计模式

    三层架构 表现层 也就是我们通常所说的Web层,它负责接收客服端的请求, 表现层包括展示层和控制层,控制层负责接收请求,展示层负责结果的展示 表现层依赖业务层,接收到客户端的请求一般会调用业务层进行业 ...

  8. 三层架构与MVC详细讲解

    一:MVC (开发模式) C : controller 控制层 V:视图成(html,jsp,vue) M:模型层(分两种:第一种service,dao业务模型,第二种entity实体类模型) 二:第 ...

  9. JavaWeb三层架构的理解/三层架构的优缺点/三层架构与MVC的区别

    1.三层架构 我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也就是浏览器服务器.在JavaEE开发中,几乎全都是基于B/S架构的开发.那么在B/S架构 ...

最新文章

  1. java双重检查锁单例真的线程安全吗?
  2. acer清理工具 clear下载_放下偏见,这些国内大厂出品的工具资源,免费又良心!...
  3. Matlab与C/C++混合编程接口及应用
  4. python中对列表和循环使用的小练习
  5. django第三天(路由基础和路由分配)
  6. python循环10次1001python循环10次_Python循环题怎么做?
  7. 【今日CV 计算机视觉论文速览 第111期】Fri, 3 May 2019
  8. php jwt怎么保存再客户端,php – 如何将JWT添加到授权标头?
  9. DB2数据库SQL语法大全推荐word版
  10. parfor —— matlab 下的并行循环
  11. 烟台大学计算机技术面试,2019烟台大学研究生复试面试注意哪些
  12. SPI机制入门、SPI机制原理
  13. ctfmon是什么启动项_电脑启动项没有ctfmon怎么办_win7启动项没有ctfmon的处理方法...
  14. 仿9GAG制作过程(三)
  15. codeforces Round#158 Div.2 D
  16. 微软官方工具_微软官方小工具,每天让你眼前一新
  17. 百度搜索结果页url参数详解
  18. java毕业设计能源控制系统mybatis+源码+调试部署+系统+数据库+lw
  19. 如何批量将图片转换成jpg格式?
  20. 深度探索C++对象模型笔记

热门文章

  1. 京东校园招聘2019.04.13 第一题 01序列拉齐
  2. 用Custom Element来实现UI组件
  3. org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
  4. kubelet cgroup driver与docker cgroup drive不一致解决方案
  5. JAVA面向对象三大特征之一多态
  6. 添加 右键显示隐藏文件+扩展名
  7. Android9.0新特性
  8. 无敌哥-创新设计思维
  9. 最新版谷歌浏览器的锚点小问题 用jquery做出ctrl+f的搜索效果
  10. TIOBE 2月编程语言排行榜出炉:Python遥遥领先C语言