MVC开发模式
# 115.MVC开发模式
本节是一节理论知识,随着后续的实践深入理解。
# JSP的演变历史
我们先说下MVC出现之前的,JSP演变历史:
- 早期只有Servlet,只能使用response输出标签数据,非常麻烦
- 后来有JSP,简化了Servlet的开发,如果过度使用JSP(因为JSP不用重启,即能写Java又能写HTML),在JSP中即写大量的Java代码,又写HTML代码,可读性差,造成难于维护,难于分工协作。还记得笔者遇到一个项目里,一个JSP有几千行的故事吗 (っ °Д °;)っ
- 再后来,Java的web开发,借鉴mvc开发模式,将代码有序的组织起来,而不是过度使用JSP,使得程序的设计更加合理性
- MVC是一种开发思路,架构模式。而不是设计模式,设计模式通常是解决一些细小的问题。
# MVC
MVC将程序分为3个模块,也就是M,V和C:
- M:Model,模型。通常是JavaBean,完成具体的业务操作,如:查询数据库,封装对象
- V:View,视图。通常是JSP,只负责展示数据,不写Java代码,怎么展示数据?替换Java代码的两个技术:EL表达式和JSTL标签
- C:Controller,控制器,通常是Servlet。获取用户的输入→调用模型→将数据交给视图进行展示
有了MVC后,项目是这样运行的:
- 浏览器发送一个HTTP请求,首先会到控制器Servlet
- 控制权Servlet获取客户端的数据,然后分发请求给具体的模型来处理数据,例如查询数据库,封装对象
- 模型执行具体的业务逻辑,然后返回数据给控制器
- 控制器将数据交给视图JSP,JSP转换为具体的HTML后返回给浏览器
示意图:
MVC模式的优点:
- 各司其职,耦合性低,方便维护,可以利于分工协作
- 重用性高
MVC模式的缺点:使得项目架构变得复杂了一点,对开发人员要求高
# 三层架构
架构层面的概念,它将一个项目分为3个层次:
- 界面层(表示层):用户看的界面。用户可以通过界面上的组件和服务器进行交互,然后界面层将数据交给业务逻辑层。
- 业务逻辑层:处理业务逻辑的,是重中之重,需要用到操作数据库的地方则调用数据访问层
- 数据访问层:操作数据,存储文件等
示意图:
一个请求是这样被处理的:请求发到服务器,服务器处理请求,看情况是否需要操作数据库,处理完请求后返回给浏览器;按照分层来分析:
- 一个请求首先是发给Servlet
- Servlet去调用业务逻辑层的功能
- 业务逻辑层则调用数据访问层
- 数据访问层返回数据给业务逻辑层
- 业务逻辑层处理完数据,返回结果给界面层
虽然我们也可以直接在Servlet层里就直接操作数据库,业务逻辑层有什么用?且听我慢慢道来:
- 数据访问层只定义了最基本的CRUD操作,例如查询一条数据(find方法),更新一条数据(update方法)
- 业务逻辑层可以组合DAO层的一些操作,形成一些常用的功能,例如先查询后更新,假设命名为功能A;然后还有一个功能B是先查询后删除;
- 这样做可以使得DAO层的功能非常简单,利于维护和复用
一般来说,我们会将不同层的代码分成不同的包来存储,例如数据访问层在dao包下,业务逻辑层在service包性爱,界面层在web包下。
后续我们会学习SSM三大框架,SpringMVC用来开发界面层,Spring框架开发业务层,Mybatis开发数据层
上次更新: 2024/6/18 08:41:26