JavaWEB——MVC和三层架构

MVC

  • Model View Controller ———— 模型视图控制器
  • 概念:经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器
  • 作用:目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。
View视图
  1. 负责页面的显示——Html、Css、Jsp、Js等前端技术实现
  2. 与用户的交互(提供用户操作)——鼠标点击填写表单等
Model模型
  1. 负责各个功能的实现(增删改查)——JavaBean实现

JavaBean分为两种

  1. 封装业务逻辑的javabean————Dao层:LoginDao.java
  2. 封装数据的javabean————pojo层:student.java
  • JavaBean是一个可重复使用的组件,通过编写一个组件来实现某个通用功能
  • 一次编写,任何地方执行,任何地方重用
Controller控制器
  1. 负责将视图与模型一一对应起来——Servlet实现
  2. 相当于一个分发器:接受请求,跳转(转发或重定向)到Model进行处理,处理完经过Controller到View展示
MVC过程

客户端用户——(进行人机交互【输入或点击】)——>Contorller控制层——(携带指令和数据跳转【请求转发或重定向】)——>Model模型【进行业务逻辑判断、在数据库中数据的存取】——(根据业务逻辑选择不同的视图)——>View视图层——(人机交互:将结果反馈给用户)——回到起始点客户端用户【形成闭环】

三层架构

  • 三层架构就是为了符合“高内聚,低耦合”思想
  • 概念:分为表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)和实体类库(Model)
  • 各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。
UI表示层【User Interface layer】——WEB层
  • 与用户交互的界面
  • 作用:接收用户输入的数据和显示处理后用户需要的数据
BLL业务逻辑层【Business Logic Layer】——Service层
  • 类似于桥梁——将UI表示层和DAL数据访问层联系起来
  • 作用:实现业务逻辑(eg:调用数据库之前,处理判断数据)
DAL数据访问层【Data access layer】——DAO层
  • 与数据库打交道
  • 作用:存放增删改查等基本操作(SQL语句)
  • 被BLL层调用
Model实体类库——POJO层(entity)
  • 每张数据表对应一个实体,数据表中的每个字段对应实体中的属性
  • 贯穿于三层,在三层之间传递数据
  • 每一层(UI—>BLL—>DAL)之间的数据传递(单向)是靠变量或实体作为参数来传递的,这样就构造了三层之间的联系,完成了功能的实现。
三层架构过程

用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户

  • 对应生活中的例子
    服务员————>厨师————>采购员
    表示层UI————>业务逻辑层BLL————>数据访问层DAL
  • 过程:顾客和服务员(UI层)说:我要一个炒茄子,服务员就把请求往上递交,传递给厨师(BLL层),厨师需要茄子,就把请求往上递交,传递给采购员(DAL层),采购员从仓库里取来茄子传回给厨师,厨师响应cookEggplant()方法,做好炒茄子后,又传回给服务员,服务员把茄子呈现给顾客。
  • 任何一层发生问题都不会影响另外一层
  • (1)服务员(UI层)请假——另找服务员
  • (2)厨师(BLL层)辞职——招聘另一个厨师
  • (3)采购员(DAL)辞职——招聘另一个采购员;
优点
    1. 结构清晰、耦合度低
    1. 可维护性高,可扩展性高
    1. 利于开发任务同步进行;容易适应需求变化
缺点
    1. 降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
    1. 有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码
    1. 增加了代码量,增加了工作量

MVC和三层架构的关系

  • MVC是三层架构中的UI层
  • MVC把三层架构中的UI层再度进行了分化,分成了控制器C、视图V、实体M三个部分
  • 控制器完成页面逻辑,通过实体来与界面层完成通话,而C层直接与三层中的BLL进行对话。

如果硬要给他们对应的话,那么

  • 三层架构中的UI对应MVC中的view(jsp)————都是用于显示以及获取界面的数据
  • 三层架构中的BLL层和DAL层对应MVC中的Model(javabean)层————都是用于处理上层传递来的数据以及从数据库获取的数据的
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值