首先,向读者介绍一下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. CListCtrl 隔行变色

    响应消息 ON_NOTIFY(NM_CUSTOMDRAW, ListCtrl的ID, OnNMCustomdrawList) 实现函数OnNMCustomdrawList void CFinishWe ...

  2. 【Codeforces Round #455 (Div. 2) C】 Python Indentation

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 一个for循环之后. 下一个写代码的地方一是从(x+1,y+1)开始的 然后如果写完了一个simple statement 下次就有 ...

  3. oracle 归档模式和非归档模式

    http://www.cnblogs.com/gaojian/p/3611641.html http://blog.csdn.net/yong5241200/article/details/39451 ...

  4. Cts框架解析(1)-windows下cts配置

    环境搭建 下载 cts工具的下载地址:http://source.android.com/compatibility/downloads.html windows选择Android4.4 R3 Com ...

  5. 【SonicUI】关于字体高亮的问题。。

    m_pSonicString[1]->Format(_T("/c=%x, a='http://hi.csdn.net/', linkh=0xFF00F0, font, font_hei ...

  6. eclipse-12.04无图标,无法固定到侧边栏

    今天下载了adt-bundle,但是eclipse打开以后,侧边栏显示的是一个问好,而且没办法固定到侧边栏,导致每次打开eclipse都要进入到相应目录,很麻烦.我们可以通过如下方法设置eclipse ...

  7. 【Codeforces Round #450 (Div. 2) A】Find Extra One

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟. 看看Y左边或右边的点个数是否<=1 [代码] #include <bits/stdc++.h> using ...

  8. 编程一一C语言问题,指针函数与函数指针

    资料来源于网上: 一.指针函数:指返回值是指针的函数      类型标识符    *函数名(参数表)       int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返 ...

  9. HDU 1166 敌兵布阵 树状数组||线段树

    http://acm.hdu.edu.cn/showproblem.php?pid=1166 题目大意: 给定n个数的区间N<=50000,还有Q个询问(Q<=40000)求区间和. 每个 ...

  10. iOS之StatusBar详解

    随便打开手机上的主流APP,我们不难发现它们的状态栏都是跟导航栏保持一致的背景颜色,如下图的微信和instagram: WECHAT.PNG INS.PNG 那么今天我们就来说一下StatusBar这 ...