mvc模式

从MVC和三层架构说到SSH整合开发-上

相信不少人都认同JavaWeb开发是听从MVC开发模式的,听从三层架构进行开发的,是的,你们都这么认同。可是相信你们都会有过这样一个疑问,if(MVC三层模式==三层架构思想)out.println(“请继续观看……”)html

1.MVC(MODEL-VIEW-CONTROLLER)设计模式:

首先让咱们了解下MVC(Model-View-Controller)的概念:java

     MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑汇集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不须要从新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。程序员

  1. Model(模型):数据模型,提供要展现的数据,所以包含数据和行为,主要提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。主要使用的技术:数据模型:实体类(JavaBean),数据访问:JDBC,Hibernate等,web

  2. View(视图):负责进行模型的展现,通常就是咱们见到的用户界面,好比JSP,Html等spring

  3. Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展现。主要使用的技术:servlet,Struts中的Action类等。数据库

     MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分红三个核心部件:模型、视图、控制器。它们各自处理本身的任务。最典型的MVC就是JSP + servlet + javabean的模式。编程

01

2.三层架构(UI-BLL-DAL)思想介绍:

     三层架构(3-tier architecture) 一般意义上的三层架构就是将整个业务应用划分为:表现层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最多见,也是最重要的一种结构。微软推荐的分层式结构通常分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。设计模式

  1. 表现层(UI):通俗讲就是展示给用户的界面,用于显示数据和接收用户输入的数据,为用户提供一种交互式操做的界面。markdown

  2. 业务逻辑层(BLL):针对具体问题的操做,也能够说是对数据层的操做,对数据业务逻辑处理。对于数据访问层而言,它是调用者;对于表示层而言,它倒是被调用者。也将业务逻辑层称为领域层。架构

  3. 数据访问层(DAL):该层所作事务直接操做数据库,针对数据的增、删、改、查。若是要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。也称为是持久层。数据访问层中包含实体层(Model 实体层)

JavaWeb中典型的三层架构是:Jsp+Struts/Spring+Hibernate的开发模式

3.MVC和三层架构的区别与转化:

  1. MVC与三层架构的概念区别:

MVC是一种设计模式,咱们能够用它来建立在域对象和UI表示层对象之间的区分。它是根据项目的具体需求来决定是否适用于该项目。

三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目。

     三层架构和MVC设计模式侧重点不同,三层是一种笼统的架构思想,没有限制具体的设计;而MVC就比较具体的说明它的设计方法。咱们从接手一个项目开始,首先,咱们须要进行架构设计,通常咱们采用的就是分层式的架构设计,即咱们的三层架构。而后,在肯定了架构之后,咱们再根据项目的具体需求去考虑是否须要应用一些设计模式,好比是否应用咱们的MVC模式,抽象工厂模式等等。

     三层侧重的是总体的一个解耦,而MVC侧重的是web系统的解耦,即侧重jsp和Servlet的一个解耦。

  1. MVC与三层架构的划分层次区别:

三层架构将整个项目划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。

MVC :即Model(模型),View(视图),Controller(控制)。

下图能够说明他们的区别与联系:经过图中能够看到不是一一对应的关系:V是UI,C是BLL,M是DAL的观点是错误的。

02

  1. 二者间的转化:

     在咱们项目中选择了三层架构的基础上在根据具体需求决定是否须要使用MVC,因而咱们常说的MVC中老是伴随着三层架构,也就形成了二者的容易混淆。其实,经过上图咱们能够看到MVC将三成架构中的UI分红了控制层和试图层。将三层架构中的数据访问层和业务逻辑层整合成了模型层。

4. 针对三层架构的MVC模式开发讲解SSH框架:

4.1 SSH介绍:

SSH多个框架(struts2+spring+hibernate)的集成,是目前较流行的一种企业及Web应用程序开源集成框架。

  1. Struts2:

     Struts2是流行和成熟的基于MVC设计模式的Web应用程序框架。 Struts2不仅是Struts1下一个版本,它是一个彻底重写的Struts架构。Struts对Model,View和Controller都提供了对应的组件。可是在ssh开发过程当中主要用Struts做为三层架构中的表现层,也就是MVC中的View和Control层。

Struts2提供了表单提交参数封装成POJO类,提交参数的类型转换,输入校验,文件的上传下载,程序的国际化,Struts2标签,以及对AJAX的支持。

  1. Hibernate:

     Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了很是轻量级的对象封装,使得Java程序员能够为所欲为的使用对象编程思惟来操纵数据库。 Hibernate能够应用在任何使用JDBC的场合,既能够在Java的客户端程序使用,也能够在Servlet/JSP的Web应用中使用,说的简单点:就是功能更增强大的JDBC。

     Hibernate实现了对象到数据库端的封装。就是常说的ORM(Object Relation Mapping),它的出现使得编程更加的面向对象,在传统的编程上,咱们要将对象存储到关系数据库中,须要写不少代码来实现,并且须要考虑跨数据库的平台的问题。有了Hibernate能够方便的实现从对象转换到关系数据库。这就是对象持久化。

  1. Spring:

     主要包含两个重要功能:IOC和AOP,也就是常说的依赖注入和面向切面编程。固然还有Spring的事务功能,不过这一功能是在结合前面二者的功能实现的。

     IOC:依赖注入(控制反转),是一种设计模式。一层含义是控制权的转移:由传统的在程序中控制依赖转移到由容器来控制;第二层是依赖注入:将相互依赖的对象分离,在spring配置文件中描述他们的依赖关系。他们的依赖关系只在使用的时候才创建。简单来讲就是不须要NEW一个对象了。

     AOP这是一种面向切面的编程思想,这种思想使得编程思想上获得了历史性的进步。它将程序的执行过程切割成不一样的面,在面之间能够插入咱们想执行的逻辑。

4.2 SSH的层次划分:

一进行javaWeb开发不少时候咱们按照这样的层次进行划分:

一、在表示层中,首先经过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),而后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理,而后action进行对请求处理并转发给JSP页面。

二、在业务逻辑层中,管理服务组件的Spring IoC容器负责向Struts2提供具体的Action对象,提供业务模型(Model)组件和该组件的协做对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提高系统性能和保证数据的完整性。

三、在数据访问层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果,给业务逻辑层。

按照MVC模式时:Jsp对应着表现层,struts2对应控制层,Spring和Hibernate对应模型层。

分层不是绝对的,每一个人的看法是不同的,仅供参考;

03

从MVC说道ssh整合开发上就介绍到这里,下部分主要是对ssh框架的整合,会介绍怎么使用ssh取开发一个简单的web应用。

来自一条小鲨鱼wpeace(rlovep.com)

相关文章
相关标签/搜索