首先,向读者介绍一下mvc架构,mvc是一种源于桌面程序的架构模式,它的基本思想是把程序界面和业务逻辑分开,这样便于软件的后期维护,同时也方便开发时期分工及管理,mvc有很多有点所以现在已经被广泛的应用与web开发中。

下面介绍一下自己了解mvc架构的经历,和其中的一些误区,以便于读者可以更好的理解什么是mvc。mvc字面意思很简单就是模型(M),视图(V),控制器(C)视图的作用是将程序运行的结果呈现给用户,模型的作用则是实现用户的业务逻辑,主要就是接收用户的参数,完成一些运算,以及访问数据库。mvc是一种思想,是一种横向的分层,javaEE中的mvc比php更加成熟,结构更加合理,加上Java的特点(优越的跨平台性)可以利用mvc构建出很强大的集群系统。

下面说一下javaEE的mvc,再次强调一下mvc是一种横向分层的思想,有了这样额思想你可以构建出各种系统,只要基于这种思想就可以了,可以有不同的实现,javaEE中视图层一般用jsp,当然你也可以采用html+ajax技术实现一个高可交互性的异步通讯的web应用;模型层是用javabean为主体,实现java的业务逻辑;控制器则是用servlet实现,这样整体上来说javaEE为不同的角色提供了不同的标准,使得程序员开发更加简单。

下面说说三层经常听到的三层架构模式,首先再次重申一下三层架构和mvc是两个概念,初学者很容易把他们当作一个概念,认为mvc就是三层架构,三层架构就是mvc,这样认为会让你把很多概念混淆,对理解系统也会有一些困难。三层架构分为表示层,逻辑层,持久层;其中表示层是属于web方面的开发,对应与mvc的视图和控制器,当然javaEE中的过滤器也是属于表示层的,虽然它和标识没有什么关系,但他的实现技术是一种横切技术,将request的请求作为一个过滤,过滤以后传到控制器,控制器根据需要调用业务逻辑和视图层显示给用户,所以讲过滤器分到表示层,主要是因为他是属于web技术,而且是在控制层以上。逻辑层和持久层是为了程序的可移植性我们把mvc中的模型层分为专门用于计算的逻辑层和专门访问数据的持久层(包括访问数据库、访问xml、以及访问其他可以永久保存数据的文件等),业务逻辑层主要是javabean实现;而持久层最常见的就是dao,封装了数据库的所有操作。其实三层架构从结构来说是纵向的分层,上层依赖于下层,而下层不依赖于上层,即单项依赖。

总结一下,mvc是系统横向的分层模型,而三层架构是纵向的分层,mvc是一种思想,实现了mvc应该使用户不可以直接访问jsp(视图),即使不需要调用业务逻辑实现功能也应该让用户的所有操作都经过控制器,由控制器跳转到视图。三层架构是纵向的分层,将整个系统封层3层,3层从上到下有单项的依赖,其中逻辑层是核心,实现了系统的主要功能,其他的两层主要是为了实现系统额扩展,如系统需要更换显示界面则只需要更改视图就可以了,如需要更改数据库,则只需要更改持久层就可以,不用改变程序的核心代码(逻辑层)。这种架构主要适用于大型项目的架构,设计人员可以根据项目的规模灵活的设计项目的架构,比如可以采用最简单的jsp直接访问数据库的架构模式、jsp+javabean(sun的model1)、mvc+1(即横向按mvc模式架构,纵向只分一层——servlet直接访问数据库)、mvc+2(即横向按mvc模式架构,纵向只分两层——servlet调用逻辑层访问数据库)、mvc+3(即横向按mvc模式架构,纵向只分三层——servlet调用业务逻辑,业务逻辑访问数据库);当然不同的架构适用不同规模的项目,具体还要视项目情况而定。

谈谈JavaEE的mvc模式及典型的三层架构的更多相关文章

  1. 架构和模式的区别:三层架构和MVC在应用开发中的位置

    架构是系统层面的,可以是多层架构,也可以是事件驱动架构,也可以是微服务架构. 模式是GUI应用的一种职责分离设计. 三层架构(包含多层架构)和 MVC模式(包含MVP, MVVM) 没什么关系,它们不 ...

  2. MVC框架模式和Javaweb经典三层架构

    一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(Vie ...

  3. 谈谈MVC模式

    谈谈MVC模式   作者: 阮一峰 1. 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论. MVC模式 ...

  4. MVC模式

                             1.MVC的概念 1.1什么是MVC? MVC是一种架构型模式,它本身不引入新的功能,只是指导我们把web应用结构做的更加合理,实现逻辑与页面相分离. ...

  5. 学习模型-视图-控制器MVC模式

    1.MVC简介 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分 ...

  6. SSH和三层架构的MVC模式的对应关系

    1.MVC(Model-View-Controller)设计模式: 首先让我们了解下MVC(Model-View-Controller)的概念: MVC全名是Model View Controller ...

  7. 从MVC和三层架构说到SSH整合开发

    相信很多人都认同JavaWeb开发是遵从MVC开发模式的,遵从三层架构进行开发的,是的,大家都这么认同.但是相信大家都会有过这样一个疑问,if(MVC三层模式==三层架构思想)out.println( ...

  8. 三层架构和MVC

    注:本文章内所有内容都来自互联网,本人主要是起了一个收集的作用 http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html 又看到有人在问三 ...

  9. Web项目的三层架构和MVC架构异同

    http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html 又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了.因为它们都在逻辑 ...

随机推荐

  1. ODBC总结

    引用头文件:sql.h.sqlext.h.sqltypes.h 添加库文件:odbc32.lib   odbccp32.lib 1.定义环境变量: SQLHENV henv =nullptr://环境 ...

  2. Akka边学边写(4)-- MiniRPG

    前面几篇文章用Akka写了HelloWorld和EchoServer,为了更进一步学习Akka,本文将会实现一个非常小的RPG游戏server:MiniRPG. 游戏逻辑 由于是迷你RPG,所以逻辑非 ...

  3. 全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL

    全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL http://blog.s135.com/startssl/ 购买权威机构的证书一年大概得七八千元,其实这是不值得的,所以一直 ...

  4. Mysql学习总结(14)——Mysql主从复制配置

    mysql主从复制 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:   1.1.版本一致   1.2.初始化表,并在后台启动mysql   1.3. ...

  5. (转)alter database open resetlogs 的意义

    转自:http://blog.sina.com.cn/s/blog_63216bda0100zblr.html Oracle文档中提到,一旦用备份的控制文件进行数据库恢复,就需要使用resetlogs ...

  6. 【 2017 Multi-University Training Contest - Team 9 && hdu 6162】Ch’s gift

    [链接]h在这里写链接 [题意] 给你一棵树,每个节点上都有一个权值. 然后给你m个询问,每个询问(x,y,a,b); 表示询问x->y这条路径上权值在[a,b]范围内的节点的权值和. [题解] ...

  7. java韩顺平老师视频有需要可以留言

    java韩顺平老师视频有需要可以留言

  8. 配置IP地址及HOSTNAME脚本

    #!/bin/bash #修改IP及HOSTNAME ETHCONF=/etc/sysconfig/network-scripts/ifcfg-eth0 HOSTS=/etc/hosts NETWOR ...

  9. nodejs+express4.0+mongodb安装方法 for Linux, Mac

    废话不多说 1:下载nodejs包 下载地址例如以下:http://www.nodejs.org/download/ 下载source code版本号须要解压后到其文件夹运行./configure,然 ...

  10. Java反射学习总结二(用反射调用对象的私有属性和方法)

    大家都知道正常的调用是不可以访问对象的private修饰的属性和方法的,这也是Java的封装性原则. 但是有没有方法可以强制去访问对象的private修饰的属性和方法呢?那就是用反射!(这个可能在面试 ...