mvc模式是什么,mvc模式详细介绍
今天我们来了解一下MVC的框架模式是什么样的,在项目中的我们有哪些地方运用到了这些框架设计模块:
MVC模式是目前WEB项目主要的项目架构模式,是一种非常优秀的三层架构模式,其三层是指视图层View,控制层Controller和模型层Model,它们分别完成不同的功能
View 层:视图层,用户提供用户的操作页面,是数据的展现层,也是用户接触的界面层
Controller层:控制层,接收视图层的请求数据并作出相应,控制页面跳转和交互逻辑的层面
Model层:模型层,包含处理业务逻辑的的服务部分(Service)和操作持久层的DAO,以及和数据库对应的实体类模型(pojo)。
mvc模式下开发的项目往往具备这样的几个组成部分
1 视图部分,对应MVC的VIEW层,其实就是一些页面,放在项目专门存放页面的位置即可,不同的项目位置稍有差异,一般该层的技术包含HTML CSS JS jQuery 等一些前端技术和框架以及一些 JSP FreeMaker Thymeleaf等模板引擎技术
2 controller包,对应MVC的Controller层,用于专门存放控制层代码,一般该层次技术包含Servlet或者对于Servlet封装之后的框架技术. SpringMVC框架主要就是对于该层次的处理
3 service 包,属于Model层的一部分,专门用于存放模型层计算业务逻辑的代码,在MyBatis-Plus中,也提供了一些对于该层次的基础的业务逻辑的封装
4 dao或者mapper包,也是属于Model层的一部分,专门用于存放操作持久层数据,实现CURD功能的代码,一般该层次的技术包含JDBC以及或者对于JDBC封装的框架技术,包含Hibernate ,MyBatis, MyBatisPlus, JDBCTemplate, JPA等等
5 pojo或者entity包,也是属于Model层的一部分,专门用于存放和数据库表格对应的实体类包,专门用于封装和传递数据,该层次一般设计的技术或者插件有Lombok,序列化等等
6 其他工具或者配置信息等包
MVC模式 VS 三层架构
和 MVC 模式类似,三层架构同样将系统划分成了 3 层:
表示层(UI):用来实现与用户的交互,接收用户请求,并将请求交给业务逻辑层(BLL)和数据访问层(DAL)进行处理,最后将处理结果返回给用户。
业务逻辑层(BLL):起到承上启下的作用,接收表示层传递来的请求,并针对业务对数据进行处理,以实现业务目标。
数据访问层(DAL):用于实现与数据库的交互和访问,例如从数据库中获取数据、保存或修改数据库中的数据等。
虽然三层架构和 MVC 模式一样,都是将应用划分成了 3 层,但它们的划分方式是不同的。
下图展示了三层架构的划分方式,我们可以很清楚地分辨出它与 MVC 模式的不同。
图3:三层架构
从上图可以看出,三层架构是由表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三个层次构成的,而 MVC 则是由视图(View)层、控制(Controller)层以及模型(Model)层,且它们之间并不是一一对应的。
三层架构和 MVC 模式中各层对应关系如下:
三层架构中的表示层(UI)包含 HTML、JSP 等前台页面以及后台的 Servlet,即它相当于 MVC 模式中的 View 层 + Controller 层。
三层架构中的业务逻辑层(BLL),则只包含了 Service 接口及其实现类(Servicelmpl)的代码,即它相当于 MVC 模式中 Model 层的一部分,并不包含 Dao 和实体类。
三层架构中的数据访问层(DAL),则只包含了 Dao 接口及其实现类(DaoImpl)的代码,即它相当于 MVC 模式中 Model 层的一部分,并不包含 Service 和实体类。
三层架构将应用中的各个模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)等三层,各层之间采用接口相互访问,并通过实体类作为数据传递的载体。不同的实体类一般对应于数据库中不同的数据表,且实体类的属性与数据库表的字段名一一对应 。
从上面的划分方式来看,三层架构和 MVC 模式确实是不一样的,但从它们的核心来看,两者又是一样的,它们的核心都是“分层、解耦”。
MVC 的工作流程
1.用户发送请求至前端控制器DispatcherServlet
2.DispatcherServlet收到请求调用处理器映射器HandlerMapping。
3.处理器映射器根据请求url找到具体的处理器,生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet。
4.DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执行HandlerAdapter处理一系列的操作,如:参数封装,数据格式转换,数据验证等操作
5.执行处理器Handler(Controller,也叫页面控制器)。
6.Handler执行完成返回ModelAndView
7.HandlerAdapter将Handler执行结果ModelAndView返回到DispatcherServlet
8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器 9.ViewReslover解析后返回具体View
10.DispatcherServlet对View进行渲染视图(即将模型数据model填充至视图中)。
11.DispatcherServlet响应用户。
SpringMVC三大组件
DispatcherServlet前端控制器
HandlerMapping处理器映射器
HandlerAdapter处理器适配器
本阶段学习目标
熟悉SpringMVC执行流程
可以搭建SpringMVC项目配置三大组件
熟练进行前后端数据传递和页面跳转控制
能够独立整合SSM项目
能够在SpringMVC项目下实现文件上传下载
熟练使用SpringMVC拦截器
能够使用SpringMVC的异常处理机制
熟练使用所有SpringMVC的常见注解
MVC 的优点
MVC 模式具有以下优点:
降低代码耦合性:在 MVC 模式中,三层之间相互独立,各司其职。一旦某一层的需求发生了变化,我们就只需要更改相应层中的代码即可,而不会对其他层中的代码造成影响。
有利于分工合作:在 MVC 模式中,将应用系统划分成了三个不同的层次,可以更好地实现开发分工。例如,网页设计人员专注于视图(View)层的开发,而那些对业务熟悉的开发人员对 Model 层进行开发,其他对业务不熟悉的开发人员则可以对 Controller 层进行开发。
有利于组件的重用:在 MVC 中,多个视图(View)可以共享同一个模型(Model),大大提高了系统中代码的可重用性。
MVC 的不足
MVC 模式存在以下不足之处:
增加了系统结构和实现的复杂性:对于简单的应用,如果也严格遵循 MVC 模式,按照模型、视图与控制器对系统进行划分,无疑会增加系统结构的复杂性,并可能产生过多的更新操作,降低运行效率。
视图与控制器间的联系过于紧密:虽然视图与控制器是相互分离的,但它们之间联系却是十分紧密的。视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了它们的独立重用。
视图对模型数据的低效率访问:视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
本文地址:百科问答频道 https://www.neebe.cn/wenda/931320.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!