👉参考文章:mvc简介,mvc与三层架构的区别
一.MVC是什么?
Model-View-Controller(MVC)是一种软件架构模式,是软件设计模式的体现 ,用于组织代码并分离关注点,广泛应用于用户界面的开发中。该模式将相关程序逻辑划分为三个相互关联的组成部分:模型(Model)、视图(View)和控制器(Controller) 。MVC 模式最初用于桌面图形用户界面(Graph User Interface,GUI),但后来因设计 Web 应用程序而变得流行。许多流行的编程语言都有 MVC 框架,这些框架促进了 MVC 模式的实现。常见的 MVC 框架有 Spring、Django 和 Ruby on Rails。
二.背景
下面以JSP,SEVLET和DAO(Data Access Object(数据访问对象))举例来具体介绍MVC。
起初的web程序是用处理动态网页的Servlet,jsp和处理静态网页的html,xml等文件组成的。
我们都知道JSP(Java Server Pages)是一种动态网页技术标准,由Sun Microsystems公司主导创建。它部署于网络服务器上,能够响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。尽管JSP页面看起来像是普通的Web页面,但实际上它们是由系统编译成一个Servlet,而Servlet再响应用户请求。JSP页面的动态内容是通过Servlet输出流中输出HTML静态页面来实现的,每个JSP页面大体上是相同的,只是页面中显示的内容和页面布局不同。因此,可以说JSP的本质是一个简化的Servlet设计,它允许开发者通过一种类似于HTML的标记语言来编写动态网页内容,而不需要编写复杂的Java代码。这种设计使得JSP成为Web开发中一种非常受欢迎的技术,因为它提供了易于使用的标记语言和强大的动态内容生成能力。
因此,JSP最终还是要转化成SERVLET,所以说JSP在本质上就是SERVLET,但是两者的创建方式不一样。
Servlet完全是JAVA程序代码构成,擅长于流程控制和事务处理,通过Servlet来生成动态网页很不美观。
JSP由HTML代码和JSP标签构成,可以方便地编写动态网页。
然而,它们都可以包含java代码,就意味着,都可以处理请求和响应请求,连接jdbc调用数据库的数据,这样一来,大家就瞎用,容易混乱,为了让结构更清晰,同一一个规范,我们让它们分工明确,就设计出了MVC架构。
这样,在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页。
控制器的功能:
控制器C控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
由于控制各种请求和响应的我们就交给SERVLET去做,所以SEVLET就可以看成是Controller。
视图的功能:
视图V视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
由于JSP可以包含html,所以可以很好地将获得的数据展现出来,所以JSP可以看成是View。
模型的功能:
MVC是表现层的架构,MVC的Model实际上是ViewModel,即供View进行展示的数据。
模型M模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
这里jdbc连接数据库,用DAO来访问数据库数据,将访问到的数据放进要显示的页面这一过程对应的是MVC中的模型。
三.三层架构是什么
参考文章:三层架构简介
三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。
表示层
表示层,又称界面层,是与用户交互的界面。位于最外层/最上层,离用户最近,用于接收用户输入的数据和显示处理后用户需要的数据。
【接受请求,封装数据,调用业务逻辑层,响应数据(servlet,jsp)】
业务逻辑层
业务逻辑层,又称服务层,是表示层和数据访问层之间的桥梁。位于中间层,用来处理业务逻辑,具体包含:验证、计算、业务规则等等。
数据访问层
数据访问层,是对数据库访问的层。位于最里层/最下层,主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。
层与层的关系
表示层依赖于业务逻辑层
业务逻辑层依赖于数据访问层
总结:总的来说,mvc存在于三层架构的表示层中,无论是mvc还是三层架构,目的都是使得结构更加清晰,分工更加明确。MVC中的控制器,视图,模型之间是相互协作关系;三层架构中的业务层,逻辑层和数据访问层之间是相互依赖关系,设计符合高内聚,低耦合的思想。