2022年JAVAWEB开发三大框架整理 .pdf

上传人:Che****ry 文档编号:34883301 上传时间:2022-08-19 格式:PDF 页数:17 大小:489.40KB
返回 下载 相关 举报
2022年JAVAWEB开发三大框架整理 .pdf_第1页
第1页 / 共17页
2022年JAVAWEB开发三大框架整理 .pdf_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《2022年JAVAWEB开发三大框架整理 .pdf》由会员分享,可在线阅读,更多相关《2022年JAVAWEB开发三大框架整理 .pdf(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、中移动杭州研究院Java web开发三大框架整理报告Javaweb 开发三大框架整理目 录1引言 .12 JavaWeb 开发三大框架 .22.1 Struts框架. 22.1.1Struts框架概述 . 22.1.2Struts2 处理流程 . 32.1.3Struts框架的组件分析 . 4名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - 12.2 Hibernate框架.62.2.1Hibernate 工作原理和工作流程 .

2、 62.2.2Hibernate框架的组件分析 . 72.2.3Hibernate核心接口 . 82.2.4Hibernate缓存管理 . 82.2.5Hibernate框架优势 . 92.3 Spring 框架.92.3.1Spring 框架模块 . 102.3.2控制反转( IoC) 和依赖注入( DI).112.3.3面相切面编程( AOP).122.3.4Spring 框架优势 . 123 SSH 框架整合 .123.1 整合理念 .123.2整合方案 .143.2.1Spring 与 Struts 的集成 .143.2.2Spring 与 Hibernate的集成 . 153.2.3

3、 系统分析 .154 小结.161引言随着计算机网络技术的日益普及, 基于Java 的Web技术也得到了广泛的应用。然而,利用 Java 进行Web应用程序的软件架构非常复杂,这在很大程度上限制了Web系统的开发效率, 因此轻量级 J2EE框架应运而生。 优秀的轻量级 J2EE框架不仅保留了传统 J2EE框架良好的可扩展性、可维护性等特点,还具有开发效率高、各层无缝集成等优点。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - 2

4、Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践。所谓的三层开发就是将系统的整个业务应用划分为“表示层业务逻辑层数据访问层”,这样有利于系统的开发、维护、部署和扩展,分层是为了实现“高内聚、 低耦合”。 三层体系将业务规则、 数据访问及合法性校验等工作放在业务逻辑层处理。客户端不直接与数据库交互, 而是通过组件与中间层建立连接,再由中间层与数据库交互。本报告探讨现在主流一种轻量级J2EE架构,即SSH(Struts+Spring +Hibernate)框架,并对各层之间的整合技术进行研究。 首先,分析了 Struts、 Spring和Hibernate三种框架和各自的特

5、点;其次,阐述了它们整合的理念,选取了一种比现有SSH框架更加合理有效的整合方案,使其各层能够无缝集成、 有机整合,最大限度地实现SSH 框架的高内聚低耦合的特点。2 Java Web 开发三大框架2.1 Struts 框架2.1.1Struts 框架概述Struts是一个基于 MVC( Model-View -Controller)模式的应用架构开源框架,采用Servlet和JSP 技术实现,它减弱了业务逻辑接口和数据接口之间的耦合,为开发人员节约了时间。 其中Struts的控制文件 struts-config. xml、 Action 和ActionServlet 实现 MVC 的控制器,

6、JavaBean 或者EJB 完成MVC 的模型部分, JSP 页面承担MVC的视图组件,而且所有的控制逻辑都是由struts-config.xml 配置文件来完成。 Struts把Servlet、JSP 、自定义标签和信息资源 (messageresources) 整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC 模式,极大的节省了时间。在使用 Struts框架应该遵守以下原则:尽量使用 Struts 标签,避免嵌入Java代码;避免在视图层处理对数据库的访问。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -

7、 - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - 32.1.2Struts2 处理流程当用户端的 Http请求到达时, Struts2 处理流程如图 2-1所示图2-1 Struts2处理流程一个客户端请求在 Struts2 框架中的处理大概分为以下几个步骤:客户端提交一个( Http Servlet Request )请求;请求被提交到一系列 (主要是 3 层)的过滤器(Filter) ,如 Action ContextCleanUp、Filter Dispatcher等。注意:这里是有顺序的,先 Action ContextC

8、leanUp ,再其他过滤器( Other Filters、SiteMesh 等) ,最后到 FilterDispatcher;Filter Dispatcher是控制器的核心,就是MVC 的 Struts 2 实现中控制层(Controller)的核心;Filter Dispatcher询问 Action Mapper是否需要调用某个Action 来处理这个(Http Servlet Request )请求,如果 Action Mapper 决定需要调用某个Action,Filter Dispatcher则把请求的处理交给Action Proxy;Action Proxy 通过 Config

9、uration Manager (struts.xml) 询问框架的配置文件,找到需要调用的 Action 类;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - 4Action Proxy 创建一个 Action Invocation 实例,同时 Action Invocation 通过代理模式调用 Action。但在调用之前, Action Invocation 会根据配置加载Action 相关的所有 Interceptor(

10、拦截器);一旦 Action 执行完毕,Action Invocation 负责根据 struts.xml 中的配置找到对应的返回结果 result,最后将该 result 通过(Http ServletResponse )请求返回给客户端。2.1.3Struts 框架的组件分析(1) Struts 2 配置文件Struts2 配置文件是用户请求( View)和业务逻辑模块( Model))Action 之间联系的桥梁 , 可以通过修改 Struts2 的配置文件来快速适应业务需求, 它是整个Struts2 的精髓之一。 Struts 2 框架配置文件分为XML文件和属性资源文件两种。web.

11、xml 对 web应用中一些初始信息进行了配置。 web.xml 可以配置过滤器用于同时拦截多个请求的URL 。除此之外 web.xml 还可以用来配 的会话时间、欢迎页、错误页、监听器、控制器等等。struts.xml 文件主要用来配置Action 和 Http 请求的对应关系,以及配置逻辑视图和物理视图资源的对应关系。struts.xml文件中包含了 Action 的定义以及Action 的返回值对应的视图资源、命名空间等信息。此外, 用户也可以定义自己的 XML文件, 然后通过 include 指令将其包含到struts.xml 文件中。另一类配置文件是属性资源文件。资源文件中一般采用固

12、定的Key -Value 形式, 用于定义 Struts2 全局或者局部的资源数据。例如定义国际化、开发模式等信息。(2) Struts 2 控制器Struts2的控制器组建是 Struts 2框架的核心,事实上所有MVC框架都是以控制器组件为核心的。正如前面提到的,Struts2的控制器由两个部分组成:FilterDispatcher和业务控制器 Action。前者由框架提供,负责拦截所有的用户请求。Filter Dispatcher负责根据用户提交的 URL和struts.xml中的配置,来选择合适的 Action,让这个Action来处理用户的请求。 Filter Dispatcher其

13、实是一个过滤器 Filter名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - 5(Servlet规范中的一种 web组件) ,只需要在 web.xml文件中配置即可。 FilterDispatcher充分体现了 J2EE核心设计模式中的前端控制器模式。业务控制器 ActionStruts2框架为用户提供了一个名为Action Support的接口。该接口定义SUCCESS 、ERROR、INPUT、LOGIN 、NONE五个静态

14、的字符串和一个execute方法, 用户在编写自己的 Action时只要实现该接口并重写其中的execute 方法, 将所要实现的业务逻辑在该方法中处理就行了, 当调用 Action时,Struts 2框架会自调用execute 方法来完成所需的业务逻辑处理。 而且用户亦可编辑自己的函数并通过Struts2框架调用实现。实际上 , 在Struts2中起作用的业务逻辑并不是用户自定义的Action , 而是系统生成的 Action代理, 只不过 Action代理以用户定义的 Action为目标。(3) Struts2 拦截器拦截器( Interceptor)是Struts 2中的重要组成部分,

15、Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的。 拦截器是 AOP的一种实现。使用拦截器可以给开发过程带来很多好处:可以将大问题分解成多个小问题以便于处理,使每个Action更专注于处理自己的功能。 Struts2拦截器(Interceptor Stack)就是将拦截器按一定的顺序联结成一条链。图2-2为拦截器功能图。 在访问被拦截的方法或字段时,Struts2 拦截器链中的拦截器就会按其之前定义的顺序被调用。Struts2拦截器的实现原理相对简单,当请求 struts2的action时,Struts 2会查找配

16、置文件,并根据其配置实例化相对的 拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器。图2-2 拦截器功能图(4) Struts2 标签库名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - 6Struts2的标签库也是 Struts2的重要组成部分, Struts2的标签库提供了非常丰富的功能, 这些标签不仅提供了表现层数据处理,而且还提供了基本的流程控制功能,还提供了国际化、 Ajax支持等功能。使用标签,开发者可以

17、最大限度地减少页面代码的书写。(5)Struts2框架优势Struts2框架( MVC 框架)的优势如下:实现了 MVC 模式,层次结构清晰, 使程序员只需关注业务逻辑的实现;丰富的标签库,大大提高了开发的效率;Struts2提供丰富的拦截器实现;通过配置文件,就可以掌握整个系统各个部分之间的关系;异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理。2.2 Hibernate框架Hibernate是数据持久层的一个轻量级框架, 它对 JDBC进行了非常轻量级的对象封装,使得 Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate 可以应用在任何使用 JD

18、BC的场合,既可以在 Java的客户端程序使用,也可以在 Servlet/JSP 的Web 应用中使用,并且 Hibernate是一个开源的 orm(objectrelationsmapping)框架,提供了查询获取数据的方法,用面向对象的思想来操作数据库,节省了我们开发处理数据的时间。目前使用较多且较稳定的版本是Hibernate3 。2.2.1Hibernate工作原理和工作流程图2-3展示了 Hibernate 的工作原理,从该图中很清楚地了解到Hibernate 框架是在物理数据库之上利用一些配置文件如hibernate.cfg.xml 文件、 XMLMapping (映射文件)等来为

19、应用系统提供数据持久化方面的服务,同时达到将应用系统的持久层与不同的物理数据库系统相互隔离开的目的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - 7图2-3 Hibernate的工作原理Hibernate工作流程:读取并解析配置文件;Configuration负责读取并创建映射信息,创建session factory;SessionFactory负责创建 session ;Transaction负责开启事物 Transact

20、ion;Query负责执行持久化操作;Transaction负责提交实物;关闭 session 和session factory。2.2.2Hibernate 框架的组件分析(1) Hibernate核心文件Hibernate核心文件主要包括两种类型文件:Hibernate的配置文件和映射文件。Hibernate的配置文件 hibernate.cfg.xml 可以配置 JDBC的连接属性和列出所有的映射文件,对 C3P0连接池提供了内嵌支持,还可以通过JNDI建立数据源,建立与数据库的连接,同时该文件可以对Hibernate的二级缓存进行管理,可以到动态加载和卸载。映射文件用于向 Hibern

21、ate提供将对象持久化到关系数据库中的相关信息,将持久化类与数据库表之间建立起映射。这意味着映射文档是按照持久化类的定义来创建的,而不是表的定义。这个xml 文件默认名为* .hbm.xml。根据映射文件,Hibernate可以生成足够的信息以产生所有SQL 语句,即插入、更新、删除和查询所需要的 SQL语句。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 17 页 - - - - - - - - - 82.2.3Hibernate 核心接口Hibernate3 共有 5

22、个核心接口和1个核心类,分别是Session 接口、 SessionFactory 接口、 Transaction接口、 Query 接口、 Criteria 接口和 Configuration 类。Session 接口Session 接口是 Hibernate 中使用最广泛的接口, 主要用于对数据的增、 删、改、查等操作。而这个 Session 对象是非线程安全的,不能被多个线程共享。SessionFactory 接口一个SessionFactory 对应一个数据存储源,也就是一个数据库对应一个SessionFactory。SessionFactory 负责创建 Session 对象,并且是

23、线程安全的,可以被多个线程共享。Transaction 接口Transaction 接口是 Hibernate的事务接口,负责处理与事务相关的操作。它是一个可选的应用程序编程接口,开发人员也可以选择自己设计编写底层事务的处理代码。Query 接口Query 接口是 Hibernate 的查询接口,负责执行数据库的各种查询。它提供了结构化的 SQL和面向对象的 HQL两种查询方式。Criteria 接口Criteria 接口和 Query接口非常类似,它允许创建并执行面向对象方式的查询,而且更擅长于执行动态查询。Configuration类Configuration 类负责配置并引导 Hiber

24、nate,创建 SessionFactory 对象。它包含数据库实例的配置信息,通过它可以创建一个 Configuration 类的实例来管理相应的配置文档。2.2.4Hibernate 缓存管理Hibernate 中提供了两级 Cache,第一级别的缓存是 Session 级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -

25、- - - 第 9 页,共 17 页 - - - - - - - - - 9范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。2.2.5Hibernate 框架优势对象 / 关系数据库映射 (ORM)它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想透明持久化 (persistent)带有持久化状态的、 具有业务功能的单线程对象, 此对象生存期很短。这些对象可能是普通的 JavaBeans/POJO ,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Se

26、ssion 相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态, 这样就可被应用程序的任何层自由使用。(例如,用作跟表示层打交道的数据传输对象。)事务Transaction(org. hibernate.Transaction)应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。某些情况下,一个Session 之内可能包含多个 Transaction对象。尽管是否使用该对象是可选的,但无论是使用底层的API还是使用 Transaction对象,事务边界的开启与关闭是必不可少的。它没有侵入性,即所

27、谓的轻量级框架移植性会很好缓存机制,提供一级缓存和二级缓存简洁的 HQL 编程2.3 Spring 框架Spring 是一个基于 J2EE 平台的分层的应用程序框架, 为企业级应用提供了一个轻量级的解决方案, 这个方案包括声明式事务管理、 通过RMI 或WebService远程访问业务逻辑、 mail 支持工具以及对于数据持久层的各种配置的支持。Spring 还提供了一个 MVC 应用框架, Spring 还可以通过集成AOP 透明地嵌入名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第

28、 10 页,共 17 页 - - - - - - - - - 10软件,同时 Spring 包含一个优秀的异常处理体系,这个异常体系可以自动从属性异常体系进行映射。 Spring 框架的核心技术是控制反转(IoC)和面向切面编程(AOP) 。2.3.1Spring 框架模块Spring 框架是一个分层架构,由7个定义良好的模块组成。 Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理bean 的方式,如图 2-4所示。图 2-4 Spring 框架模块组成Spring框架的每个模块 (或组件) 都可以单独存在, 或者与其他一个或多个模块联合实现。每个模块的功能如下:核心容器核

29、心容器提供 Spring框架的基本功能。核心容器主要组件是Bean Factory ,它是工厂模式的实现。 Bean Factory使用控制反转( IOC ) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。Spring 上下文Spring 上下文是一个配置文件,向Spring 框架提供上下文信息。 Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。SpringAOP通过配置管理特性, SpringAOP 模块直接将面向方面的编程功能集成到了Spring框架中。所以,可以很容易地使Spring框架管理的任何对象支持 AOP。SpringAOP

30、 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用SpringAOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 17 页 - - - - - - - - - 11中。Spring DAOJDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理, 并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接

31、) 。SpringDAO 的面向JDBC 的异常遵从通用的 DAO 异常层次结构。Spring ORMSpring框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate和iBatis SQL Map。所有这些都遵从 Spring的通用事务和DAO异常层次结构。2.3.2控制反转( IoC) 和依赖注入( DI)控制反转即依赖注入是 Spring 应用的核心。当应用了 IoC技术后,控制权就由对象本身转向容器, 也就是由容器根据配置文件去创建实例并负责控制各个实例之间的依赖关系。也就是说,一个类不需要去查找或实例化它们所依赖的类。对象间的依赖关系

32、在对象创建时由负责协调项目中各个对象的外部容器来提供并管理的。也就是强调了对象间的某种依赖关系式由容器在运行期间注入调用者的,控制程序间的关系的实现交给了外部的容器来完成。这样,当调用者需要被调用者对象时, 调用者不需要知道具体的实现细节,它只需要从容器中拿出一个对象并使用就可以了。依赖注入存在着 2种实现方式,分别是设值注入和构造方法注入。设值注入即 Set注入( setterinjection)指IOC容器使用 setter方法来注入被依赖的实例。通过调用无参结构或无参static工厂方法实例化 bean后,调用该 bean 的setter,即可实现基于 setter的依赖注入。构造注入(

33、 constructorinjection)指在接受注入的类中定义一个构造方法,并在参数中定义需要注入的元素。为了让 Business 接受Data Base的注入,需要为它定义一个构造方法,来接受DataBase 的注入。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 17 页 - - - - - - - - - 122.3.3面相切面编程( AOP)AOP 将应用程序分成两大部分, 即核心业务逻辑和通用逻辑。 使用 AOP 后,应用对象只需关注它们需要关注的核心业务

34、逻辑即可,而无需关注通用逻辑, 如大中型系统都要涉及的事务管理、安全管理、日志管理等。AOP的出现解决了面向对象编程的局限性。AOP利用了一种称为“横切”的技术,将已封装好的对象剖开, 找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块, 这个模块可以称为 “切面” 。切面将与那些业务无关,却被业务模块调用的逻辑提取并封装起来,减少了系统中的重复代码, 降低了模块间的耦合度,同时提高了系统的可维护性。Spring通常可以单纯使用 aspectJ进行aop,也可以 spring和aspectJ联合开发进行aop 。spring和aspectJ联合开发进行 aop有两种方式,一是单

35、纯的使用注解,二是在配置文件中进行定义。前者较为灵活强大,后者更利于管理模块化管理。2.3.4Spring 框架优势Spring框架的优势可以总结为以下几点:能有效地组织中间层对象。 可以有效地将现有框架例如Struts和Hibernate框架组织起来;实现了真正意义上的面相接口编程,可实现组件之间的高度解耦;使用 Spring 构建的应用程序易于进行单元测试;Springs所秉承的设计思想就是让使用Spring 创建的那些应用都尽可能少地依赖于它的 APIs。在Spring应用中的大多数业务对象都不依赖于Spring;提高了代码的可重用性,它尽可能避免在程序中使用硬编码;简化了底层数据库的访

36、问方式。3 SSH框架整合3.1 整合理念一个典型的 Web应用系统,按职责一般分为三层, 即表示层, 业务逻辑层和名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 17 页 - - - - - - - - - 13数据持久层,每一层次都有其独特的职责, 不能把各自的功能与其他层次相混合。表示层位于web 应用的最前端, 它可以将一个数据视图呈现给用户,也可以接收用户表单在用户界面上的操作;业务逻辑层完成项目各种业务逻辑的实现,表示层通过业务层中提供的方法来完成一系列的展

37、示工作,而业务层的业务逻辑方法需要通过与持久层的交互来实现;数据持久层将访问数据库的各种操作进行封装,提供给业务层使用。在持久化层的实现中,常常采用工厂模式和DAO模式来降低应用的业务逻辑和数据库的访问逻辑之间的关联。采用Struts、 Spring 和Hibernate 框架技术可以分别实现这三层, 即利用 Struts框架作为系统整体基础架构,负责MVC 的分离,在 Struts 架构的 Model 部分,利用Spring 支持业务逻辑, 用Hibernate 支持数据持久层, 具体整合架构如图 3-1所示。图3-1 Struts+ Spring+ Hibernate 整合结构Struts

38、 用于表示层,直接面向用户,响应用户的请求,为显示提供一个模型和一个控制器,并委派调用业务逻辑和其他上层处理等功能。Spring 在事务管理和依赖注入方面的独特能力,实现处理应用程序的业务名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 17 页 - - - - - - - - - 14逻辑和业务校验,以及提供与其他层进行相互作用的接口等。Hibernate 是ORM 的实现,利用它建立 Java 对象模型的持久化对象,进而以面向对象的方式来方便地操作关系数据库这样Str

39、uts、 Spring 和Hibernate 就能够很好地封装各个层次的程序, 如在处理前台表示层时就不会把事务逻辑和持久化逻辑掺杂进来,从而最大限度地实现各层的高内聚低耦合目标。3.2整合方案Struts、 Spring 和Hibernate 的整合,有很多种不同的方案选取, 若要实现SSH框架的有机整合以及整个结构的高内聚、低耦合,就需要做出最优的选择。 在这里很多项目的开发人员更愿意使用Spring去整合 Struts框架和 Hibernate框架。3.2.1Spring 与 Struts 的集成就当前来看, Spring 和Struts 整合的方式主要有三种,分别如下所述:使用WebA

40、pplication Context这种方式是在 Struts 的Action 类中获取 Spring 应用上下 WebApplicationContext的实例化对象,通过此对象调用Bean 来实现。继承Spring 的Action Support这种方式实际上是对第一种方式的简化,当Struts的Action 类继承了 Spring的Action Support 后,直接可以使用 WebApplication Context 对象,从而简化对Spring应用上下文的操作。将Struts 的Action 托管给 Spring 的IoC 容器这种方式将 Struts 的Action 以Bean

41、 的形式托管给 Spring,通过Spring IoC 容器来管理各个 Action。由于前两种方式存在各种弊端,如Struts 框架对 Spring 的依赖性强,若 Spring 更新了版本,就必须要重写相关代码。而使用Spring 的IoC容器来管理 Action,组件依赖注入的工作由 IoC 容器自动完成, 实现了 Spring 和Struts 的有机整合,因此本文选择第三种整合方式。在3种框架整合的轻量级 J2EE 架构中, 一般采用 Spring的IoC 容器来管理StrutsAction。采用这种方法能够充分的利用Spring 依赖注入的优势,而不需要显示的获取 Spring的Ap

42、plication Context实例。Struts2与Spring集成时要用到 Spring名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 17 页 - - - - - - - - - 15的插件包,这个包是随着Struts2 一起发布的。当创建一个新对象时, Spring插件先使用 Struts2 配置文件中的 class 属性与Spring配置文件中的 id属性进行关联,如果能找到相应对应的关系则由Spring负责创建对象,否则仍由 Struts2框架自身负责创建

43、对象,创建后再由Spring进行装配。3.2.2Spring 与 Hibernate 的集成Spring 对Hibernate 提供了良好的支持,如对Hibernate 异常的支持、对Hibernate 事务的支持以及对 Hibernate 基础实施的支持等,利用Spring 提供的local SessionFactoryBean和HibernateTransactionManager两个组件类能很方便地实现Spring和Hibernate 的有机整合。在系统实现中 , 使用了 HibernateTemplate 提供持久层访问模板。使用HibernateTemplate 无需实现特定接口,它

44、只需要提供一个 SessionFactory 的引用, 就可以执行持久化操作。 SessionFactory对象可以通过构造参数传入,或者是通过设置方式传入。在Web 应用中, 通常启动时会自动加载 ApplicationContext,SessionFactory 和DAO 对象都处在 Spring 上下文管理下,因此无需在代码中显示地设置 , 可采用依赖注入解耦 SessionFactory 和DAO。3.2.3 系统分析在SSH的整合框架中,吸收了 Struts框架在表示层方面的优点 , 并且由 Struts来实现页面的请求与页面的转发,Spring框架在业务层中夜发挥了巨大的作用,由S

45、pring容器对业务逻辑进行处理 ; 同时, Hibernate来实现与数据库的交互 , 整个框架非常清晰 , 有利于开发人员的分工合作, 使开发人员将注意力集中在业务逻辑的实现上 , 而不需要浪费太多的经历在页面的实现以及数据库的连接上, 极大地缩短了系统的开发周期。 同时使得应用逻辑与实现的代码相分离;应用逻辑没有写在代码中 , 而是采用了配置文件的形式来定义应用逻辑. 这样, 应用需求发生更改时, 不需要对代码进行重新编译。而且该平台该完整的实现了MVC模式, 实现了逻辑与显示的分离。最后整个项目的实现都是用了开源的框架, 不仅降低了系统开发的费用 , 并且, 开源还能够保证框架功能的完

46、善。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 17 页 - - - - - - - - - 164 小结采用ssh框架开发的最大优势是,开发者只需要专注于完成业务的逻辑,至于操作数据库, 和连接数据库等基础功能, 框架已经实现。 而开发过程中真正有价值的地方在业务逻辑上, 框架就是把精力集中用到开发逻辑上,而不是花在项目本身的建设上, 这样就会大大减少了项目的成本,极大地缩短了系统的开发周期。至于怎么提供访问控制,数据库连接,事物管理,日志分析,等等系统级功能,程

47、序开发者只需选择完成效率最高的框架就可以实现这些功能除此之外, Spring 和Struts 以及Hibernate 的集成做的很好,实现了敏捷开发,加快了项目的进程, 同时也避免了不成熟技术造成的项目风险。而且使用 SSH框架设计的程序比较好维护,扩张,思路也很清晰。然而对于简单的应用, 采用ASP 或者PHP 的开发效率比采用 J2EE 框架的开发效率要高。对于这些简单的应用,可能采用这种分层的结构,要比一般采用JSP +Servlet 的系统开发效率要低。而且Struts 和Hibernate 不支持分布式部署。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 17 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com