MVC设计模式与JavaWeb的三层架构

Posted 齊 天 大 聖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC设计模式与JavaWeb的三层架构相关的知识,希望对你有一定的参考价值。

引言:
MVC是一种设计思想,是无色无味看不见摸不着的。它是设计师脑子里的东西,而web的三层架构则是落地实现,也就是划分各部分的包(controller、service、dao),然后进行代码的编写。它是实打实的代码

MVC设计模式与JavaWeb的三层架构

MVC设计模式

基本概念

       MVC设计模式,它是施乐帕克研究中心在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,提供了一种按功能对软件进行模块划分的方法。MVC设计模式将软件程序分为3个核心模块:模型(Model)、视图(View)和控制器(Controller),这3个模块的作用如下所示。

M:模型

模型(Model)负责管理应用程序的业务数据、定义访问控制以及修改这些数据的业务规则。当模型的状态发生改变时,它会通知视图发生改变,并为视图提供查询模型状态的方法。(业务模型,处理业务)

V:视图

视图(View)负责与用户进行交互,它从模型中获取数据向用户展示,同时也能将用户请求传递给控制器进行处理。当模型的状态发生改变时,视图会对用户界面进行同步更新,从而保持与模型数据的一致性。(视图,界面展示)

C:控制器

控制器(Controller)是负责应用程序中处理用户交互的部分,它负责从视图中读取数据,控制用户输入,并向模型发送数据。(控制器,调用模型和视图)

mvc关系图

mvc模式好处

1、职责单一
2、有利于分工协作
3、有利于组件重用

JavaWeb的三层架构

三层架构

View(表现层):

本层由一系列的页面及视图组件组成,负责收集用户请求,并显示处理后的结果。

Service(业务逻辑)层:

本层由一系列的业务逻辑对象组成,这些业务逻辑对象实现了系统所需要的业务逻辑方法。

DAO(Data Access Object,数据访问对象)层:

本层由一系列 DAO 组件组成,这些DAO实现了对数据库的创建、查询、更新和删除等操作。

三层架构图示

JavaWeb包的命名与三层架构

view层所在包一般命名如下

com.xxx.web
com.xxx.servlet
com.xxx.controller

Service层所在包一般命名如下

com.xxx.service(Service接口包)
com.xxx.service.impl(Service接口实现类)

Dao层所在包一般命名如下

com.xxx.dao(Dao接口)
com.xxx.dao.impl(Dao接口实现类)

如果Dao层使用了mybatis,一般命名为

com.xxx.mapper

补充
实体bean对象

com.xxx.pojo
com.xxx.entity
com.xxx.domain
com.xxx.bean

测试包

com.xxx.text
com.xxx.junit

工具类

com.xxx.utils

一些常用的公共方法

com.xxx.common

过滤器

com.xxx.filter

配置类

com.xxx.config

二者的对应关系

二者对应关系图

补充

       三大框架(ssm三大框架)其实是对三层架构的简化,springMVC简化表现层、mybatis简化数据访问层、spring简化业务逻辑层的开发。

java里分的三层到底是哪三层?

小弟初学,概念弄不明白
有人说MVC就是视图层V就是jsp或者html构成的表示层,控制层C就是由servlet充当的控制层,其余的后面的DAO为第三层。
还有人把servlet和filter都放在web层包里,归到了web层里,业务层归为一层,还有持久层也分为一层,这样分为三层
到底哪个才更合理?

  三层通常是指MVC设计模式,即Modle(模型)层,View(视图)层,Controller(控制器)层。模型层通常是放实体类如学生类,老师类等。视图层通常是指展示效果的一些类。控制器指控制程序流程逻辑的类。

  MVC是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑放到一个部件里面,在重构界面时,不需要重新编写业务逻辑。实现视图和逻辑的分离。
参考技术A servlet和filter都放在web层包里,归到了web层里,业务层归为一层,还有持久层也分为一层,这样分为三层

推荐书目:(可以看看这个带光盘的)
精通JBuilder 2005 中文版 高清PDF+随书光盘
http://bbs.topsage.com/dispbbs_121_172861_1.html

Java 编程初步 傻瓜书
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159167
数据结与算法 Java语言版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160250
JSF JavaServer Faces in Action Manning
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160229
Wrox Professional Java JDK 6 Edition
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=163451
Java 2 宝典
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159154
侯捷java编程思想 PDF中文版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=163902
Learning Java (第三版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146869
Beginning Java Programming for Dummies 第二版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=163923
Java 2 核心编程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146174
Java How to Program (第六版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146371
Java All-In-One案头参考傻瓜书 (第二版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=152871
21天自学 Java 6 (2007年5月更新出版) PDF
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159315
Java咖啡馆
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151447
Thinking in Java(第四版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=152053
深入学习JFC SWING - Java基础类组件集
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=152049
J2EE全实例教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158057
Java信息系统设计与开发实例(第二版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151993
Java优化编程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151994
Java信息系统设计与开发实例(第二版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151993
Tricks of the Java Programming
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159305
Wrox Professional Java Native Interfaces with SWT JFace
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159290
Java Swing 第二版 PDF文字版 O'Relliy出版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159158
O'Reilly - Java Database Programming with JDBC
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159292
JDBC与Java数据库程序设计
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151448
Learning JQurey (2007年7月最新出版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159652
J2EE设计开发编程指南
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159288
Java Web Services简明教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159159
O'Reilly Java and XML (第二版PDF)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146231
O'Reilly Java and XML (第三版PDF)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=167584
Java技术XML高级编程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=147800
Expert One-on-One J2EE Design and Development
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160652
Expert One-on-One J2EE Development without EJB
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160653
JBoss - A Developer's Notebook
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146179
The Java Programming Language (第四版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=147095
Spring in Action (第二版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146170
Professional Java Development with the Spring Framework
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159303
Core Java Server Faces 第二版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=145549
精通Enterprise JavaBeans
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146018
Enterprise JavaBeans EJB 第四版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159166
J2EE应用与BEA WebLogic Server (第二版PDF)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146227
O'Reilly Java Web Services
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146377
Ant权威指南
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=148383
Ajax和Java框架高级编程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=148371
Java Web Services简明教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159159
Cross-Platform Web Services Using C# and Java
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160472
O'Reilly Ajax on Java
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160600
O'Reilly Java and XSLT
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=149585
O'Reilly Java and XML Binding
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=149583
O'Reilly Java and SOAP
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=149581
Design Patterns Java Companion
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=163920
J2EE Java黑客大曝光 开发安全的Java应用程序
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151446
J2ME API 速查手册
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158248
精通J2ME无线编程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=152047
J2ME开发大全
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151987
Java网页开发的艺术
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151991
Java编程高手
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151990
Java 5.0 Tiger程序高手秘笈
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151989
Java2网络协议技术内幕(附源码)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151988
Using Enterprise JavaBeans 2
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=166051
Java技术实用教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158244
企业级Java安全性(构建安全的J2EE应用)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=152048
Java语言集成开发环境Eclipse中文教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158237
NetBeans IDE 5.5 企业版高级开发教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159653
Using Enterprise JavaBeans 2
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=166051
Borland JBuilder Developer's Guide
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=166294
Eclipse精要与高级开发技术
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151986
Java 6 3D游戏开发
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160251
参考技术B 我不知道有多少层 我只能一个一个跟你说下

视图层是用来给用户显示信息以及获得用户提交的信息的
控制层是根据用户的操作来调用不同的业务层(也可能是DAO层)处理用户请求的
业务层是用来进行封装的(重新封装从数据库里提出来的数据 或者是重新封装从视图层提来的数据 业务层准确说就是为了让视图和DAO层都能获得想要数据的中转站 任何对数据的操作都将在业务层来完成)

DAO层 负责提供给视图层显示的信息 以及 处理从视图层提交过来的信息(数据都经过业务层 一般是由业务层调用DAO层来实现方法 而控制层是调用业务层来获得他所需要的)

我的表述能力不是很好 不过应该是这么个意思 分层的根据是每层所做的操作类别 剩下的东西 像VO 或者是 PO等我就不详细说明了 不明白 补充问题
参考技术C 我看你吧MVC和3层架构搞混了,MVC是一种软件设计模式,3层架构是指展示层,业务逻辑层,持久层 参考技术D Model(模型层)表示应用程序核心(比如数据库记录列表)。
View(视图层)显示数据(数据库记录)。
Controller(控制器层)处理输入(写入数据库记录)。

以上是关于MVC设计模式与JavaWeb的三层架构的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Javaweb经典三层架构和MVC框架模式

Javaweb的MVC模式和三层架构(框架了解)

MVC模式与三层架构的区别

浅析MVC模式与三层架构的区别

mvc设计模式与三层架构

asp.net中的三层架构是啥意思?mvc设计模式是啥?它们之间有关系吗?