1. 概述
为什么会出现MVC开发模式呢?这得从JSP的演变说起:
1.1 JSP演变历史
- 早期只有servlet,只能使用response输出标签数据,非常麻烦
- 后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,有写html表,造成难于维护,难于分工协作
- 再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理性
也就是说,MVC出现的初衷便是解耦
2. MVC概述
2.1 MVC组成
-
M:Model,模型。JavaBean
完成具体的业务操作,如:查询数据库,封装对象 -
V:View,视图。JSP
展示数据
-
C:Controller,控制器。Servlet
- 获取用户的输入
- 调用模型
- 将数据交给视图进行展示
2.2 MVC开发模式详解
浏览器向服务器请求资源,服务器第一步会先经过控制器(负责分工),然后控制器获取客户端输入后调用model(dao和service的嵌合体,例如数据操作,登陆注册逻辑等),进行业务操作,model发挥数据给控制器,接着控制器将数据给视图(展示数据)展示,于是服务器就可以给浏览器做出对应的响应了
其中c在Javaweb中由servlet完成,也就是说在我们写的servlet中只做c做的三件事:获取客户端数据,调用模型,将数据交给视图展示
而m在javaweb中由JavaBean完成
而V使用的是jsp
为了在jsp中只展示数据不涉及Java代码,引入了el表达式与jstl标签
2.3 MVC优缺点
优点:
1. 耦合性低,方便维护,可以利于分工协作
2. 重用性高
缺点:
1. 使得项目架构变得复杂,对开发人员要求高
MVC示意图:
3. 三层架构
三层架构:
是一种软件设计架构
3.1 分层:
- 表现层:用户看的得界面。用户可以通过界面上的组件和服务器进行交互
- 业务逻辑层:处理业务逻辑
- 数据访问层:操作数据存储文件
3.2 具体分析:
表现层也称web层,对应springmvc框架
业务逻辑逻辑层也称service层,对应spring框架
数据访问层也称dao(数据访问对象)层,对应mybatis框架在三层架构中会表现层从逐层往下访问,再将数据逐层返回
v和c都在web层,
业务逻辑层和dao层在MVC设计模式中对应的都是m在以前没有model层的时候,直接web层访问dao层,引入model(业务逻辑层)目的是由业务逻辑层完成复杂操作,dao层只完成简单的crud操作封装,降低耦合度
业务逻辑层会结合dao层中的简单方法,在业务逻辑层实现复杂功能
示意图: