【MVC 开发模式和三层架构介绍】
一、 JSP 演变历史
- 早期只有 Servlet ,只能使用 Response 对象输出标签数据,非常麻烦
- 后来出现了 JSP ,简化了 Servlet 的开发,但是如果过度使用 JSP ,在 JSP 中既写入大量的 Java 代码,又有 HTML 标签,造成难以维护,难以分工协作
- 再后来,Java 的 Web 开发,借鉴了 MVC 开发模式,使得程序的设计更加合理
二、 MVC
1. MVC 概述
- M :Model :模型
- V :View :视图
- C :Controller :控制器
运行过程:浏览器向服务器请求资源先经过控制器,控制器去调用模型,调用模型去进行一些业务的操作,操作完成后,模型把数据返回给控制器,之后控制器将数据传递给视图去展示数据,之后给浏览器客户端做出响应
2. MVC 各个部分的作用
- 控制器:
- 获取客户端的输入
- 调用模型
- 将数据交给视图展示
- 模型:
- 完成具体的业务逻辑操作,如:查询数据库、封装对象
- 视图:
- 展示数据
3. 实际开发中的角色
- 在实际开发中:
- Servlet 充当控制器
- JavaBean 充当模型
- JSP 充当视图
4. 优点
- 耦合性低,方便维护,可以利于分工协作
- 重用性高
- 生命周期成本低
- 部署快
5. 缺点
- 使得项目的架构变得复杂,对开发人员要求高
- 没有明确的定义
- 不适合小型,中等规模的应用程序
- 增加系统结构和实现的复杂性
- 视图与控制器间的过于紧密的连接
- 视图对于模型数据的低效率访问
- 一般高级的界面工具或构造器不支持模式
三、 三层架构
1. 三层架构概述
三层架构:软件设计架构
- 界面层(表面层):用户看的到的界面,用户可以通过界面上的组件和服务器进行交互
- 业务逻辑层:处理业务逻辑
- 数据访问层:操作数据存储文件
2. Web 服务器中三层架构的运行过程
在 Web 服务器中三层架构的运行过程:由浏览器访问界面层,界面层调用对应的业务逻辑层,业务逻辑层再去访问数据访问层,数据访问层操作数据库,数据库将数据返回给数据访问层,数据访问层将数据封装返回给业务逻辑层,业务逻辑层将数据提供给界面层,界面层将数据显示到最终的浏览器中
3. 三层架构与 MVC 开发模式联系下的运行过程
- 在 MVC 开发模式中,浏览器向服务器请求资源先经过控制器,而控制器在界面层中,以 Servlet 实现类充当控制器,接收用户请求,获取用户提交的参数信息,将数据封装
- 然后 Servlet 就去调用业务逻辑层,之后业务逻辑层将数据返回给 Servlet
- Servlet 将数据存储起来转发到一个 JSP 页面,JSP 页面充当视图的功能,由 JSP 页面最终给浏览器做出响应
4. 业务逻辑层不可省略的原因
为什么不可以直接使用界面层调用数据访问层,略过不写业务逻辑层,简化代码量?
- 数据访问层中定义了对于数据库最基本的增删改查操作,都是一个个单一的方法,不可能一个方法完成一件具体的功能
- 业务逻辑层则可以进行简单方法的组合,实现复杂操作(业务逻辑操作)
- 界面层则是接收用户参数,封装数据,调用业务逻辑层完成处理,转发 JSP 页面完成显示
5. 三层架构下包的命名
- 界面层:
com.公司名.项目名.web
- 业务逻辑层:
com.公司名.项目名.service
- 数据访问层:
com.公司名.项目名.dao
6. 三层架构对应的框架
- 界面层:SpringMVC 框架
- 业务逻辑层:Spring 框架(它也涉及到界面层和数据访问层)
- 数据访问层:Mybatis 框架(持久层框架)