【MVC 开发模式和三层架构介绍】

【MVC 开发模式和三层架构介绍】

一、 JSP 演变历史

  1. 早期只有 Servlet ,只能使用 Response 对象输出标签数据,非常麻烦
  2. 后来出现了 JSP ,简化了 Servlet 的开发,但是如果过度使用 JSP ,在 JSP 中既写入大量的 Java 代码,又有 HTML 标签,造成难以维护,难以分工协作
  3. 再后来,Java 的 Web 开发,借鉴了 MVC 开发模式,使得程序的设计更加合理

二、 MVC

1. MVC 概述

  1. M :Model :模型
  2. V :View :视图
  3. C :Controller :控制器

运行过程:浏览器向服务器请求资源先经过控制器控制器去调用模型,调用模型去进行一些业务的操作,操作完成后,模型把数据返回给控制器,之后控制器将数据传递给视图去展示数据,之后给浏览器客户端做出响应

2. MVC 各个部分的作用

  • 控制器:
    1. 获取客户端的输入
    2. 调用模型
    3. 将数据交给视图展示
  • 模型:
    • 完成具体的业务逻辑操作,如:查询数据库、封装对象
  • 视图:
    • 展示数据

3. 实际开发中的角色

  • 在实际开发中:
    • Servlet 充当控制器
    • JavaBean 充当模型
    • JSP 充当视图

4. 优点

  • 耦合性低,方便维护,可以利于分工协作
  • 重用性高
  • 生命周期成本低
  • 部署快

5. 缺点

  • 使得项目的架构变得复杂,对开发人员要求高
  • 没有明确的定义
  • 不适合小型,中等规模的应用程序
  • 增加系统结构和实现的复杂性
  • 视图与控制器间的过于紧密的连接
  • 视图对于模型数据的低效率访问
  • 一般高级的界面工具或构造器不支持模式

三、 三层架构

1. 三层架构概述

三层架构:软件设计架构

  1. 界面层(表面层):用户看的到的界面,用户可以通过界面上的组件和服务器进行交互
  2. 业务逻辑层:处理业务逻辑
  3. 数据访问层:操作数据存储文件

2. Web 服务器中三层架构的运行过程

发送请求
进行响应
操作数据库
数据返回
浏览器
Web 数据库
数据库
包含
包含
包含
Web 数据库
界面层/表示层/Web 层
业务逻辑层/service 层
数据访问层/dao 层 Data Access Object 层
调用
数据返回
访问
封装返回
界面层/表示层/Web 层
业务逻辑层/service 层
数据访问层/dao 层 Data Access Object 层

在 Web 服务器中三层架构的运行过程:由浏览器访问界面层界面层调用对应的业务逻辑层业务逻辑层再去访问数据访问层数据访问层操作数据库,数据库将数据返回给数据访问层数据访问层将数据封装返回给业务逻辑层业务逻辑层将数据提供给界面层界面层将数据显示到最终的浏览器中

3. 三层架构与 MVC 开发模式联系下的运行过程

  • 在 MVC 开发模式中,浏览器向服务器请求资源先经过控制器,而控制器在界面层中,以 Servlet 实现类充当控制器,接收用户请求,获取用户提交的参数信息,将数据封装
  • 然后 Servlet 就去调用业务逻辑层,之后业务逻辑层将数据返回给 Servlet
  • Servlet 将数据存储起来转发到一个 JSP 页面,JSP 页面充当视图的功能,由 JSP 页面最终给浏览器做出响应

4. 业务逻辑层不可省略的原因

为什么不可以直接使用界面层调用数据访问层,略过不写业务逻辑层,简化代码量?

  • 数据访问层中定义了对于数据库最基本的增删改查操作,都是一个个单一的方法,不可能一个方法完成一件具体的功能
  • 业务逻辑层则可以进行简单方法的组合,实现复杂操作(业务逻辑操作)
  • 界面层则是接收用户参数,封装数据,调用业务逻辑层完成处理,转发 JSP 页面完成显示

5. 三层架构下包的命名

  • 界面层:com.公司名.项目名.web
  • 业务逻辑层:com.公司名.项目名.service
  • 数据访问层:com.公司名.项目名.dao

6. 三层架构对应的框架

  • 界面层:SpringMVC 框架
  • 业务逻辑层:Spring 框架(它也涉及到界面层和数据访问层)
  • 数据访问层:Mybatis 框架(持久层框架)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值