对JavaEE中mvc模式以及三层架构的理解

来源:互联网 发布:java write 编辑:程序博客网 时间:2024/05/16 17:28

第一次接触MVC模式是在首次学习Servlet/JSP的时候,而了解三层架构是在学习struts2的时候,起初对这些东西了解不是很深,但是随着学习的不断深入,慢慢发现了其中一些核心思想,下面谈谈我的一些理解。(如有错误,望可以指出,蟹蟹!)

MVC模式

MVC按照字面意思就是Model(模型)、View(视图)、Controller(控制器),基本思想就是把程序界面和业务逻辑分离开来,方便开发,测试以及后期为维护,增强各模块间的  独立性,避免牵一发而动全身。

  • Model(模型)用于实现一些数据业务逻辑,主要是接受处理数据以及访问操作数据库
  • View(视图)用于向用户显示一些数据
  • Controller(控制器)用于处理应用与用户的交互,主要是从View(视图)读取数据,控制用户输入,将数据发送到Model(模型)

在Java Web初学阶段,使用Servlet/JSP来开发程序时,MVC的分工大概如下:

  • Model(模型):以javabean为主体,实现数据逻辑和数据库访问操作
  • View(视图):JSP或HTML页面为主体,可配合ajax实现高可交互性的异步通讯
  • Controller(控制器):以Servlet为主体,实现如读取用户表单提交信息等功能,并将数据发送到javabean进行处理

Model(模型)层又可以分为DAO(Data Access Object---数据访问对象)层与业务层,DAO层负责将数据库访问代码封闭,而业务层负责封装业务逻辑,处理数据,实现用

户需求等,最为核心。

三层架构

通常意义上的三层架构就是:

        1.表现层   2.业务逻辑层   3.数据访问层
通过层次,达到“高内聚低耦合”的目的。
  • 表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
  • 业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
  • 数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等
在Java Web项目中通常分为:
  • dao层:数据访问层,操作数据库,对数据进行增删改查
  • service层:业务逻辑层,对数据进行处理
  • web层:表示层,给页面传递数据

表现层

位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。

业务逻辑层

三层中最为核心的一层,起到了承上启下的作用。数据业务逻辑处理,实现用户需求功能都在这一层实现

数据层

  • 数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。
  • 简单的说法就是实现对数据表CRUD(增删改查)操作。
三层架构是自上而下的一种依赖方式,上层与下层无关,上层不需要考虑下层的操作,对下层的改变也不会影响上层。
SSH框架中  Struts位于web层,Spring位于service层,Hibernate位于dao层

MVC与三层架构的区别

http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html

又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了。因为它们都在逻辑上将应用程序划为三块,凑了一个数字3,就有人非要把它们联系到一起了。

  这两个东西我接触有几年了,有一点体会,表达一下:

  三层是三层,MVC是MVC,它们毫无关系的。

三层是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层)。

  三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,为了使程序员更加专注的处理某阶段的业务逻辑。

  比如将数据库操作代码封装到一层中,提供一些方法根据参数直接返回用户需要的相应数据,这样在处理具体的业务逻辑的时候,就不用关心数据的存储问题了。

MVC是在应用程序(BS结构)的视图层划分出来的不同功能的几个模块。

  MVC主要是为了解决应用程序用户界面的样式替换问题,把展示数据的 HTML 页面尽可能的和业务代码分离。MVC把纯净的界面展示逻辑(用户界面)独立到一些文件中(Views),把一些和用户交互的程序逻辑(Controller)单独放在一些文件中,在 Views 和 Controller 中传递数据使用一些专门封装数据的实体对象,这些对象,统称为Models。

  只所以说MVC和三层毫无关系,是因为它们二者使用范围不同:三层可以应用于任何语言、任何技术的应用程序;而MVC只是为了解决BS应用程序视图层各部分的耦合关系。它们互不冲突,可以同时存在,也可根据情况使用其中一种。


http://blog.csdn.net/beijiguangyong/article/details/7029257

三层架构就是MVC!

起初老师总说三层MVC,MVC三层架构……

所以开始的时候脑子就一个概念:三层就是MVC,MVC就是三层架构。而且想想也合理啊,都是“三”。MVC是三个字母,三层架构也是“三”,理所应当的就对应上了。然后就这么一直“错”了很长时间。

三层架构绝不是MVC!!

后来学习了J2EE之后发现老师说的好像不对,MVC和三层架构不是一个东西。三层架构是界面层(UI)业务逻辑层(BLL)和数据访问层(DAL)构成的,而MVC是模型层(M)界面层(View)和控制层(Controller)构成的,而且他们之间也不对应。

如果硬要给他们对应的话,那么三层架构中的UI对应MVC中的view(jsp),都是用于显示以及获取界面的数据;三层架构中的BLL层和DAL层对应MVC中的Model(javabean)层都是用于处理上层传递来的数据以及从数据库获取的数据的;MVC中的Controller(Servlet)最多算是三层架构中的UI的一部分,也就我们常说的是Servlet。

如下图所示:


顿时感到世界明朗了,对分层又深入了解了一步。

其实三层架构和MVC还是一个东西!!!

这几天一直在思考三层架构和MVC到底是个什么关系,老师为什么起初会放在一起说嘞?然后恍然大悟:其实三层架构和MVC是一样的!!!我们所看到的不一样只是表面上的不一样。核心的东西是一致的,那么什么是核心?

答曰:分层,解耦!

如果从解耦的角度来看三层架构和MVC其实他们是一致的,只不过划分的方法不一样罢了,就像上面的图所示。从这一点说他们可以说是一个东西。这就相当于我们看到馒头和面条一样,表面上看他们不一样(注意仅仅是表面)但是他们核心是一致的,都是面……

知识的学习过程就要像老牛反刍一样,需要不断的加深认识,最终才能真正领悟

对事物的认识是从感性到理性的,是一步一步的加深的,每一步的加深也许会推翻以前的自己,也许会更加赞同以前的自己。如果是推翻以前的自己那么代表对这个事物的认识发生了翻天地覆的变化,但是如果赞许以前的自己也并不代表自己的观点没有变化,往往表面上看起来一致的东西其实内核并一定是相同的。就像刚开始的时候认为三层架构和MVC是一个东西到最后同样是认为这两是一个东西,但是理解的层次绝对是不一样的。

至于以后会不会再次推翻自己的观点我不晓得,只能说每次推翻都代表着进步,代表着理解的更深一层,所以我期望着下次的否定自己





原创粉丝点击