MVC设计模式

本文介绍了MVC设计模式的基本概念和工作原理,详细解析了控制器、视图和模型的角色。同时,对比了MVC与三层架构的区别,并探讨了JSP开发模型,包括Model1及其优化后的缺点,以及基于MVC的三层架构在实际代码中的分离和分层管理实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一节 MVC模式简介
1.1 MVC概念
首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种设计模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),即为MVC。它是一种软件设计的典范,最早为Trygve Reenskaug提出,为施乐帕罗奥多研究中心(Xerox PARC)的Smalltalk语言发明的一种软件设计模式。

1.2 MVC模式详解
虽然MVC并不是Java当中独有的,但是现在几乎所有的B/S的架构都采用了MVC框架模式。

控制器Controller:控制器即是控制请求的处理逻辑,对请求进行处理,负责请 求转发和重定向;
视图View:视图即是用户看到并与之交互的界面,比如HTML(静态资源),JSP(动态资源)等等。
模型Model:模型代表着一种企业规范,就是业务流程/状态的处理以及业务规则的规定。业务流程的处理过程对其他层来说是不透明的,模型接受的请求,并返回最终的处理结果。业务模型的设计可以说是MVC的核心。
1.3 MVC高级框架应用
MVC模式被广泛用于Java的各种框架中,比如Struts2、spring MVC等等都用到了这种思想。

Struts2是基于MVC的轻量级的web应用框架。基于MVC,说明基于Struts2开发的Web应用自然就能实现MVC,也说明Struts2着力于在MVC的各个部分为我们的开发提供相应帮助。

1.4 MVC和三层架构的区别
同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。

在三层架构中没有定义Controller的概念。这是最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是由业务逻辑与访问数据组成的。而MVC里,则是以实体类构成的。

MVC和三层架构的区别:
MVC:
M 即Model(模型层),主要负责处理业务逻辑以及数据库的交互

V 即View(视图层),主要负责显示数据和提交数据

C 即Controller(控制层),主要是用作辅助捕获请求并控制请求转发

三层:
UI界面层

BLL业务逻辑层

DAL数据访问层

区别:

  1. 三层是基于业务逻辑来分的,而mvc是基于页面来分的
  2. MVC模式是一种复合设计模式,一种解决方案
    三层是种软件架构,通过接口实现编程
  3. 三层模式是体系结构模式,MVC是设计模式
  4. 三层模式又可归于部署模式,MVC可归于表示模式
    第二节 JSP开发模型
    2.1 JavaWeb经历两个时期
    2.1.1 JSP Model1
    JSP Model1是JavaWeb早期的模型,它适合小型Web项目,开发成本低!Model1第一代时期,服务器端只有JSP页面,所有的操作都在JSP页面中,连访问数据库的API也在JSP页面中完成。也就是说,所有的东西都耦合在一起,对后期的维护和扩展极为不利。
    在这里插入图片描述
    JSP Model1优化后有所改进,把业务逻辑和数据访问的内容放到了JavaBean(狭义JavaBean:实体类,广义JavaBean:实体类,dao,service,工具类)中,而JSP页面负责显示以及请求调度的工作。虽然第二代比第一代好了些,但还让JSP做了过多的工作,JSP中把视图工作和请求调度(控制器)的工作耦合在一起了。

2.2 基于MVC的三层架构的实现
虽然MVC把程序分成三部分,每个部分负责不同的功能,但是这只是逻辑的分离,实际代码并没有真正分离,特别是Model(包括业务、数据访问和实体类、工具类等)部分的代码,为了增强代码的维护性和降低代码耦合性,需要把代码分层管理,于是就有了三层架构:

分别是:web层(表示|界面层)、service层(业务逻辑层)、dao层(数据访问层)
在这里插入图片描述
web层对应MVC中的Servlet和JSP

其他层都属于MVC中的Model
在这里插入图片描述
案例演示:
web层
com.web.servlet
jsp页面放在 WebContent 或 WEB-INF

Service层
    com.service  放服务层接口
    com.service.impl  放服务层实现
    
Dao  层
    com.dao   方法 dao接口
    com.dao.impl  放dao实现
    

实体类  
    com.domain   | com.beans  | com.entity | com.pojo

工具类 
    com.commons  | com.utils
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值