• 模型-视图-控制器MVC模式学习报告


     

    一、 MVC模式简介

      MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而得到更好

    的开发和维护效率。在MVC模式中,应用程序被划分成了模型(Model)、视图(View)和控制器(Controller)三个部分。其中,模型部分

    包含了应用程序的业务逻辑和业务数据;视图部分封装了应用程序的输出形式,也就是通常所说的页面或者是界面;而控制器部分负责协调

    模型和视图,根据用户请求来选择要调用哪个模型来处理业务,以及最终由哪个视图为用户做出应答。MVC模式的这三个部分的职责非常明确

    ,而且相互分离,因此每个部分都可以独立的改变而不影响其他部分,从而大大提高了应用的灵活性和重用性。

    二、Java Web应用程序的主要组件

    1.Servlet组件

    Servlet运行于Web容器中,如Tomcat,它可以被Web容器动态加载,接收浏览器请求,调用其他组件处理请求,然后把处理结果返回。

    当浏览器访问某个Servlet时,Web容器将会创建一个ServletRequest对象和ServletResponse对象,并且把用户的请求信息封装在

    ServletRequest对象中。然后把这两个对象作为参数传输给Servlet的特定方法中。在该方法中处理请求,把处理结果封装在

    ServletResponse对象中,返回给Web容器。最后Web容器把结果返回到浏览器去解析、显示。

    2.JSP组件

    JSP是一种动态网页技术。它把HTML页面中加入Java脚本,以及JSP标签构成JSP文件。当浏览器请求某个JSP页面时,Tomcat会把JSP页面翻译

    为Java文件。然后将它编译为class文件,接着执行它,把生成的HTML页面返回到客户端显示。

    3.JavaBean组件

    JavaBean组件是一种符合特定规范的Java对象。在JavaBean组件中定义一系列的属性,并且每个属性都提供setter和getter方法,这样就可

    以使用该组件存储一些中间数据。例如ServletRequest的请求信息、从数据库中查询出来的信息等。

    4.EJB组件

    Enterprise Java Bean(EJB)组件是服务器端的Java组件。该组件基于标准分布式对象技术、CORBA和RMI等技术,用于实现企业级应用的额

    业务逻辑。

    5.XML语言

    XML(Extensible Markup Language)是一种用来创建自定义标记的标记语言。

    6.Web服务器和应用服务器

    Web服务器用来处理HTTP请求,并返回HTTP数据。它主要用来和浏览器进行交互,给用户提供服务。应用服务器可以被Web服务器调用,进行

    业务逻辑的处理。它返回的数据被Web服务器组织为HTML格式,然后返回到浏览器去解析。

    三、Java Web解决方案(开发方法)

    JSP+JAVABEAN开发模式:

        特点:该模式将业务逻辑与页面表现进行分离,在一定程度上增加了程序的可调试性和维护性。

        缺点:页面将控制与显示集于一身。

        结论:简单,适合小型项目的快速构建与运行。

    JSP+Servlet+JavaBean开发模式:

        特点:JSP作为视图,来表现页面;Servlet作为控制器,控制程序的流程并调用业务进行处理;JavaBean封装了业务逻辑。遵循了MVC设

    计模式。

        缺点:没有统一的开发框架导致开发周期长。

    Struts开发方案:

        特点:成熟的MVC开发框架。

        构成:控制器:ActionServlet 组件:Struts框架的中央控制器。

                      RequestProcessor 组件:每个子模块都具有的请求处理器。

                      Action 组件:业务代理,它将调用模型进行一项具体的业务逻辑处理。

        视图:主要由JSP页面构成

                            还包括HTML文档;标准标签库(JSTL)和Struts标签库;

                            JavaScript脚本和CSS样式;

                            多媒体文件;

                            消息资源文件;

                            ActionForm类。

        模式:通常在Structs中使用其他模型组建来实现业务逻辑。

                           如:JavaBean技术、EJB技术、Hibernates设计模式。

        结论:对于一些大型的项目,Struts框架会提高开发效率,并对后期的维护有很大好处。

    Spring开发方案:

        特点:拥有IOC和AOP两种先进的技术为基础,完美的简化了企业级开发的复杂度,

                 是一个理想的Web程序框架。

        构成:核心模块:实现了IOC模式,包含BeanFactory类负责对JavaBean的配置与管理。

                 上下文模块:继承BeanFactory类,

                                    添加了事件处理、国际化、资源装载、透明装载以及数据校验等功能,

                                    提供了框架式的Bean访问方式和很多企业级功能。

                                    如:JNDI访问、支持EJB、远程调用、继承模板框架、E-mail和定时任务调度等。

                  AOP模块:提供了用标准Java语言编写的AOP框架,

                                   使应用程序抛开EJB的复杂性,但拥有传统EJB的关键功能。

                  DAO模块:提供了JDBC的抽象层,并且提供了对声明式事物和编程式事务的支持。

                  Web模块:建立在上下文模块基础之上,提供了Servlet监听器的Context和Web应用的上下文。

                                   对现有的Web框架如:JSF、Tapestry、Struts等提供了集成。

                  O/R映射模块:提供了对现有ORM框架的支持如Hibernate。

                  Spring MVC框架:建立在核心模块之上,嫩够适应于多种多视图、模板技术、国际化和验证服务,

                                               实现控制逻辑和业务逻辑清晰的分离。

    Struts+HIbernate开发方案:

        特点:利用Struts的MVC设计模式,与Hibernate持久化对象组成的开发方案。

    Struts+Spring+Hibernate开发方案:

        特点:Struts负责表示层,

                  Spring负责逻辑层的业务,

                  Hibernate持久层中数据库的操作,组成的开发方案。

    四、常用的Java Web的MVC框架

    1、框架不是一开始就有的。在java web开发的世界里,最开始就只有一个可用的servlet API,你要开发web应用,就只能靠它了;

    就单单这个简陋的API,开发起来,实在是捉襟见肘。于是在一个个前赴后继的'先烈'往这个坑里跳的同时,一部分人实在看不下去了,于是

    便有了所谓的框架。其实这个时候的所谓框架就是个框框,帮你解决了一部分的工作,可是还是很难用,更别谈什么解耦、扩展,吧啦吧啦

    滴;

    2、MVC最开始对于Web开发者而言还不一定混的很熟,它也就是一个设计模式而已。突然某一天,某个大神发现这个东西用在Web开发上真是

    物尽其用啊,很好地解耦了web请求过程中的数据、业务逻辑和信息展示,而且很好地提供了各个部分的扩展性。概括起来,就是说它妙不妙

    ,谁用谁知道啊!这个时候,MVC与Web开发的关系迅速进入蜜月期,作为一个web开发者,聊天的时候,你都不好意思说不知道MVC。于是,

    各种web开发的MVC框架雨后春笋般的,往外冒...这个时期,struts是java世界中最被广大web开发者接受的大众情人了。

    3、差不多与此同时,javaEE的世界还有另一个大众情人,那就是EJB了。不过她仗着大家对她的宠爱,越来越啰嗦、拖沓,养成了不少的坏

    毛病。此时一个牛X哄哄的家伙看不爽了,捧出了另一个新人-spring。这个家伙的横空出世,让java世界的小伙伴们惊呆了,他是那样的清

    纯、优雅,令人着迷。于是,过不了一些时间,spring逐渐超越了EJB,成了java世界当之无愧的No.1大众情人了。毫无疑问,它对web开发

    者展现了她独有的,性感的一面-spring MVC。

    4、spring尽管光环无比闪耀,spring MVC拥有对web开发者独有的吸引力,但她为了扩大自己的魅力,同时与struts等老的大众情人交好,

    提供友好的扩展。毕竟每个web开发者对于web MVC框架都有自己的心头好,每个web MVC框架也拥有自己的粉丝。此时,在Web MVC框架的领

    地基本是百花争放,百家争鸣了。

    5、没有不老的神话,也没有绝对的大众情人。在spring大行其道的今天,她为了吸引更多的粉丝,给自己的套上了一件又一件华丽的外衣,

    以期满足所有web开发屌丝对女神的所有幻想。这样,之前的一些粉丝,觉得spring失去了其最初的纯粹,连带spring MVC也慢慢地不是那么

    有吸引力了。这个时候,一些最开始的粉丝,开始转移目标,以spring为原型或者依托,捧红了像play framework、JFinal等一些小清新了

    (1)Spring框架

    Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不

    仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益。

    ◆目的:解决企业应用开发的复杂性

    ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能

    ◆范围:任何Java应用Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。

    Spring的初衷:

    1、J2EE开始应该更加简单。

    2、使用接口而不是使用类,是更好的编程习惯。Spring将使用接口的复杂度几乎降低到了零。

    3、为JavaBean提供了一个更好的应用配置框架。

    4、更多地强调面向对象的设计,而不是现行的技术如J2EE。

    5、尽量减少不必要的异常捕捉。

    6、使应用程序更加容易测试。

    Spring的目标:

    1、可以令人方便愉快的使用Spring。

    2、应用程序代码并不依赖于Spring APIs。

    3、Spring不和现有的解决方案竞争,而是致力于将它们融合在一起。

    Spring的基本组成:

    1、最完善的轻量级核心框架。

    2、通用的事务管理抽象层。

    3、JDBC抽象层。

    4、集成了Toplink, Hibernate, JDO, and iBATIS SQL Maps。

    5、AOP功能。

    6、灵活的MVC Web应用框架。

    优点:

    ◆J2EE应该更加容易使用。

    ◆面向对象的设计比任何实现技术(比如J2EE)都重要。

    ◆面向接口编程,而不是针对类编程。Spring将使用接口的复杂度降低到零。(面向接口编程有哪些复杂度?)

    ◆代码应该易于测试。Spring框架会帮助你,使代码的测试更加简单。

    ◆JavaBean提供了应用程序配置的最好方法。

    ◆在Java中,已检查异常(Checked exception)被过度使用。框架不应该迫使你捕获不能恢复的异常。

    (2)Struts 2

    Struts 2是Struts的下一代产品。是在 struts 和WebWork的技术基础上进行了合并,全新的Struts 2框架。其全新的Struts 2的体系结构与

    Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够

    与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。因为Struts 2和Struts 1有着太大的变化,但是相对于WebWork,

    Struts 2只有很小的变化。Struts技术的发展概况  经过六年多的发展,Struts1已经成为了一个高度成熟的框架,不管是稳定性还是可靠

    性都得到了广泛的证明。市场占有率超过20%,拥有丰富的开发人群,几乎已经成为了事实上的工业标准。但是随着时间的流逝,技术的进步

    ,Struts1的局限性也越来越多地暴露出来,并且制约了Struts1的继续发展。  对于Struts1框架而言,由于与JSP/Servlet耦合非常紧密

    ,因而导致了一些严重的问题。首先,Struts1支持的表现层技术单一。由于Struts1出现的年代比较早,那个时候没有FreeMarker、

    Velocity等技术,因此它不可能与这些视图层的模版技术进行整合。其次,Struts1与Servlet API的严重耦合,使应用难于测试。最后,

    Struts1代码严重依赖于Struts1 API,属于侵入性框架。  从目前的技术层面上看,出现了许多与Struts1竞争的视图层框架,比如JSF、

    Tapestry和Spring MVC等。这些框架由于出现的年代比较近,应用了最新的设计理念,同时也从Struts1中吸取了经验,克服了很多不足。这

    些框架的出现也促进了Struts的发展。目前,Struts已经分化成了两个框架:第一个是在传统的Struts1的基础上,融合了另外的一个优秀的

    Web框架WebWork的Struts2。Struts2虽然是在Struts1的基础上发展起来的,但是实质上是以WebWork为核心的。Struts2为传统的Struts1注

    入了WebWork的先进的设计理念,统一了Struts1和WebWork两个框架。Struts1分化出来的另外一个框架是Shale。这个框架远远超出了

    Struts1原有的设计思想,与原有的Struts1关联很少,使用了全新的设计思想。Shale更像一个新的框架而不是Struts1的升级。 本文下面的

    内容将主要讨论Struts2。Struts2体系结构  Struts2的体系与Struts1体系的差别非常大,因为Struts2使用了WebWork的设计核心,而不

    是Struts1的设计核心。Struts2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与Servlet API分离。

    (3)IBATIS

    IBATIS[1]一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。是一个基于SQL映射支持

    BATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。

    一站式

    iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。

    相对Hibernate和ApacheOJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。

    ibatis框架

    iBATIS 提供了三种语言实现的版本,包括:Java、.NET以及Ruby。右图是iBATIS的架构图:

    主流

    所谓“半自动”,可能理解上有点生涩。纵观主流的 ORM,无论 Hibernate 还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO到数据库表的全套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过 Hibernate或者OJB 提供的方法完成持久层操作。程序员甚至不需要对 SQL 的熟练掌握,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的 SQL 并调用 JDBC 接口加以执行。

    Java和·NET的持久层框架。它和Hibernate区别就在于自己要写完整sql语句。

    优点:

    1、减少代码量,简单;

    2、性能增强;

    3、Sql语句与程序代码分离;

    4、增强了移植性;

    缺点:

    1、和Hibernate相比,sql需要自己写;

    2、参数数量只能有一个,多个参数时不太方便。

  • 相关阅读:
    解决DataGridView中回车换行的问题
    几条经典的SQL语句
    SQL中把一个表中的数据导出到一个新表中
    [转载]TCP的网络编程中一些典型的问题,以及一些分析和解决方案
    Delphi调用C#web服务参数无法接收的问题
    IIS服务器不支持中文文件名的解决方法
    SQL SERVER2005导入导出工具
    为远程IP服务器取个本地认识的主机名
    Win Form中如何把ENter回车键转换成Tab键
    CheckedListBox 用法
  • 原文地址:https://www.cnblogs.com/3066405538a/p/6754362.html
Copyright © 2020-2023  润新知