Struts2 Spring JPA框架的WEB应用的通用整合方法研究论文.docx_第1页
Struts2 Spring JPA框架的WEB应用的通用整合方法研究论文.docx_第2页
Struts2 Spring JPA框架的WEB应用的通用整合方法研究论文.docx_第3页
Struts2 Spring JPA框架的WEB应用的通用整合方法研究论文.docx_第4页
Struts2 Spring JPA框架的WEB应用的通用整合方法研究论文.docx_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Struts2 Spring JPA框架的WEB应用的通用整合方法研究 精灵论文基于 Struts 2+Spring+JPA 框架的 WEB 应用 的通用整合方法研究 宋伟 (北京邮电大学网络技术研究院,北京 100876)摘要:目前,在支持 Web 应用开发的众多技术中,J2EE 开发以其优秀的框架技术得到越来越多的企业级 web 服务开发者的青睐。本文对当前比较流行的三种框架 Struts2 框架,Spring 框架和 JPA 框架的整合方法进行了研究。整合后的系统能够充分发挥三种框架的优势,帮 助开发者快速开发出高质量的 web 服务。 关键词: 计算机软件;Struts 2;Spring;JPA;web 应用;框架整合 中图分类号:TP31 An General Approach to Implememt Web Service Integrated with Struts 2+Spring+JPA Frameworks Song Wei (State Key Laboratory of Networking and Switching Technology, Beijing University of Posts and Telecommunications, Beijing 100876) Abstract: Nowadays, J2EE gain more and more attention among various web developmemt technologies, because it has excellent frameworks. This paper proposes an general approach to integrate three most popular frameworks, that are Struts2 framework, Spring framework and JPA framework into web service application. The integrated web system shares the advantages of the above threee frameworks, as a result, this integration method do much benefits to help web developers to implement rapid and high-quality web services. Key words: Computer Software; Structs 2; Spring; JPA; Web Application; Framework Integration 0 引言 对于企业级的 web 服务开发来讲,需求的变更和项目期限的严格是软件开发人员面临 的两大难题。首先,大型的企业 web 服务需要由大量的模块组成,模块的数量众多,模块 之间的关系错综复杂。如果开发阶段对应用的层次没有进行合理划分和高效的组织,那么当 需求发生变更的时候,会出现牵一发而动全身的尴尬场景。其次,在软件开发日益工程化的 今天,除了保证高质量的软件开发外,敏捷的开发过程也是成功的关键,组件化的开发可以 节省编码时间。因此,需要抽取已经成熟的,稳定的代码,将这部分优秀的代码做成框架, 使开发人员不必进行重复的工作,就可以写出有用基本功能的 web 服务,然后可以集中精 力完成核心业务逻辑。而这一切的实现都要依赖对于现有框架的整合,因此本文将主要研究 如何整合目前比较流行的三种框架:Struts2,Spring 和 JPA。本文第一部分首先对 struts 框 架,Spring 框架和 JPA 框架做了简要的介绍,分析了各种框架的主要优势和使用特性。在 第二部分中,总括性地讲解了使用三种框架搭建的 web 应用的系统架构,主要包括数据库 持久化层和实体类层,数据访问对象层,业务逻辑层,控制层,表现层五层,同时对每层的 主要职能进行了详细阐述。本文在第三部分中提出了基于三种框架的通用整合方法,包括对 作者简介:宋伟(1985-05),男,移动互联网. E-mail: 配置文件的理解和编写等。在这种通过整合方法的支持下,web 服务开发者的开发速度会得到提升,同时框架的高质量而稳定的代码也保证了 web 应用的质量,降低了维护的成本。 1 Struts2+Spring+Hibernate 框架简介 1.1 Struts 框架 Struts2 是一种 MVC 的框架,主要实现了视图和控制器的分离,其核心是 web work2.0. 为了能够能够实现视图和控制器的分离,它使用大量的能够截获用户请求的拦截器。当用户 发送 HTTP 请求的时候,核心控制器根据用户的请求找到对应的 Action,然后将用户的参数 传递给 Action 中对应的处理函数,并按照执行该函数,进行业务逻辑处理。当业务逻辑处 理完成后,系统会根据配置文件中指定的结果返回给请求的发出者,返回的结果不仅限于 JSP,也可以是其他的视图,比如文件,图像等。 1.2 Spring 框架 Spring 是一个轻量级 J2EE 框架,实质上是一个 Bean 工场,能够很好地完成对 Javabeans 的管理,使得开发更加便捷,组织更加合理有效。其最重要的功能是控制反转和面向切面的 编程。前者可以使对象摆脱对依赖的查询,框架会主动将对象所关联的依赖注入给对象。后 者则有利于实现业务分离,它将核心业务代码从和常规业务代码分离开来,让开发者更加关 注于业务的实现。 1.3 JPA 框架 JPA 是一个支持对象关系映射数据持久化的 J2EE 框架。它的全称是 Java Persistence API,它可以将运行时的对象和数据库中的数据进行关联,只需要对实体对象进行修改就可 以将更新持久化到数据库中。JPA 框架对使用 JDBC 进行的 CRUD 操作进行进一步的封装, 开发者可以无需编写繁琐的 SQL 代码就能够完成对数据库的操作。 对于开发者来讲,数据库的增删改查操作是透明的,只需要编写 JAVA 类就可以在数据 库中生成对应的表,并且如果对实体类进行修改,在 web 服务器应用重新部署的时候,修 改可以被更新到数据库中,这样就将增删改查等数据库操作局限在 JAVA 类的编写中,提高 了开发的效率。 2 整合 Struts+Spring+JPA 的 web 系统架构设计 系统总共可以划分为 5 层,分别是位于最底层的数据库持久化层和实体类层,第二层的 数据对象访问层,第三层的业务逻辑层,第四层的请求控制层,以及和用户直接交互的表现 层。层间的具体实现是透明的,也就是说,每一层的操作都被包封在本层,上层的服务使用 本层提供的服务接口,本层的实现需要调用下一层的服务接口。 由于不同层的服务不能看到彼此的具体实现,层间的耦合度低,因此可以并行地开发各 个层的功能,提升开发效率。同时,层内聚合度高,出现的异常通常局限在一个很小的范围 内,更容易排查错误。这种架构可以大大节省开发和维护的成本(如图 1 所示) JSP 页面 表现层 Struts Action 层请求控制层 Business Logic 业务逻辑层 Spring DAO 层数据访问对象 VO 层 实体类 JPA Mysql 数据库 图 1 Struts+Spring+JPA 的 web 系统架构设计 a) 系统的最底层是 vo 层和数据库层,这两层主要负责数据的持久化。VO 层中对应一系 列的 Java 实体类,这些实体类使用 JPA 框架提供的方法进行注释。 比较常用的注释包括:将 Java 类持久化到数据库的对应表的Entity 注释,支持 SQL 语句增删改查的NamedQuery 注释,将 Java 实体类属性对应成数据库中指定列的 Column 注释,指定数据库表的一对多关系,多对一关系,多对多关系和一对关系的 1OneToMany, ManyToOne, ManyToMany, OneToOne 注释等。 b) 系统的第二层是数据访问对象层,这一层主要负责对实体对象的增删改查操作,不涉及 任何业务逻辑。数据访问对象层使用第一层提供的接口来实现本层的服务,同时向第三 层提供服务接口。 DAO 层对应一系列的 Java 类,这里的类和 VO 层的每一个类一一对应,也就是说,对 于 VO 层的每一个类,DAO 层都有一个唯一个同名的类。这些类都继承自一个公共的 父类 GenericDAO 类。对单个对象的通用数据操作都放在父类当中。对于单一对象的操 作通常有:向数据库中添加一个对象,删除一个对象,修改一个对象,根据对象的 id 查找对象等。 子类除了通过继承的方式获得父类的通用方法外,还可以实现非共用的方法。比如,除 了可以使用父类的根据对象的唯一 id 来查找对象的方法外,还可以实现根据对象的名 字,或者对象入库的时间等属性来查找对象的方法,这些方法的返回结果通常不是唯一 的一个对象,而是满足查询参数的一组对象。 c) 系统的第三层是业务逻辑处理层,这一层主要负责业务逻辑处理。业务逻辑层使用第二 层提供的接口来实现本层的服务,同时向第四层提供服务接口。Business Logic 层对应一系列的 Java 类,这里类和 DAO 层的每一个类一一对应。也就 是说,对于 DAO 层的每一个类,Business Logic 层都有一个同名的类对应,用来完成和该 DAO 层相关的逻辑处理。 d) 系统的第四层是请求控制层,这一层主要负责用户请求的转发,处理和返回。请求控制 用户发送层使用第三层提供的接口来实现本层的服务,同时向第五层开放服务接口。 的 HTTP 请求经过拦截器拦截之后,系统会将请求转发给相应 Action 类中的 指定函数来处理,根据函数的处理结果,系统会返回给用户结果视图,它可以是网页文件, 也可以是其他类型的文档。上述的请求和 Action 中函数之间的对应关系是由配置文件指定 的,需要在运行系统之前做相应的配置。 e) 系统的第五层是表现层,这一层主要负责网页的显示,以及用户和系统的交互。Struts2框架使用 OGNL 表示语言完成了 JSP 页面的显示数据和 Action 层的数据的一一对应。 对于在 Action 中定义的属性,只要编写了 setter 和 getter 函数,就相当于将这个属性暴 露给了前台网页页面,那么 struts2 框架就会将数据自动绑定到对应的页面标签上。反 过来,Action 也可以通过这个已经暴露的属性自动获得提交自前台页面的该属性的值。 Struts2 提供了强大的页面标签,比如, , 和等, 能够快捷地实现后台属性和前台各种控件的数据交互和数据绑定。 3 框架整合的配置方案 在一个标准 web 服务器架构中,必须在 webapp/webContent 目录下放置一个 web.xml 配置文件,通过对这个文件进行配置,可以将想要支持的框架添加到这个 web 服务器应用 当中。本文的目的是将 struts 框架,spring 框架和 JPA 框架分别整合到一个 web 服务器应用 中,因此需要将关于上述三个框架的配置代码都添加到 web.xml 配置文件中。 下面是基于 Struts2,Spring 和 JPA 的 web 服务系统的基本目录结构。 3.1 配置 web.xml3.1.1 增加 stucts 功能 当 web 服务器应用启动之后,系统会自动加载 web.xml 配置文件并对其进行解析,再 按顺序依次加载各种框架的支持。对于 struts 框架来说就是加载核心控制器 FileDispatcher 类。当用户发送 http 请求到服务器指定模式的 url 时,核心控制器 FileDispatcher 类就会拦截 用户的 HTTP 请求,并转发给相应的 Action 进行进一步的业务逻辑处理。因此,需要在 web.xml 文件中配置过滤器,也就是标签,同时过滤器对应的类指定为 FileDispatcher 2类,也就是标签。配置实例如下: struts2 org.apache.struts2.dispatcher.FilterDispatcher 用户想 web 服务器应用发送 http 请求,只有符合指定 URL 模式的请求才会被系统拦截。 因此需要在 web.xml 配置文件中配置过滤器映射,也就是标签。配置实例如 下: struts2 /* 3.1.2 增加 Spring 功能 当 web 服务器应用启动之后,系统会自动加载 web.xml 配置文件并对其进行解析,再 按顺序依次加载各种框架的支持。对于 Spring 框架来说,就是加载上下文加载监听器 2ContextLoaderListener。配置实例如下: org.springframework.web.context.ContextLoaderListener Spring 框架对系统各层的 Bean 进行统一管理,这些 Bean 被统一配置在一个配置文件中, 我们需要在 Spring 框架的配置文件中指定存放 Bean 配置的文件路径。需要对上下文参数进 行配置,也就是标签。将 Bean 所在的配置文件路径填到属性 3 中。配置实例如下: contextConfigLocation classpath:context.xml 3.1.3 增加 JPA 功能 当 web 服务器应用启动之后,系统会自动加载 web.xml 配置文件并对其进行解析,再 按顺序依次加载各种框架的支持。对于 JPA 框架来说就是加载 OpenEntityManagerInView 2Filter 类。配置实例如下: jpaFilter org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter 3.2 配置 struts.xml Struts 框架会自动加载并解析 struts.xml 配置文件。struts.xml 配置文件中指定了系统支 持的所有的 Action,这些 Action 用来处理来自用户的 HTTP 请求。对 Action 层进行配置主 要指配置继承自 struts-default 的包,也就是标签。其中,标签所描述的内 容就是系统所支持的 Action,它的 name 属性指定了处理函数的名称,这个名称是对于请求 用户来讲的;它的 method 属性指定了处理的方法,这个名称是对于 Action 来说的。用户只能够访问 name 属性指定的名字,Action 只能含有 method 指定的方法,而配置文件完成了 两者之间的一一对应。标签指定了和 Action 对应的处理的类型,可以是页面输入, 4也可以是结果返回,还可以是页面的重定向,或者是返回文件等。 配置实例如下: WEB-INF/pages/test.jsp WEB-INF/pages/test.jsp 3.3 配置 application.xml 3.3.1 请求控制层的 Bean 配置 Spring 框架统一管理各个层的 Bean,对于 Action 层的所有 Bean,需要指定和 Bean 对 应的 Action 类的路径。配置一个 bean 使用标签,标签的 id 属性可以唯一访问该 Bean, 5 标签的 class 属性指定了和 Bean 关联的 Action 的类的路径。配置实例如下: 3.3.2 业务逻辑层的 Bean 配置 Spring 框架统一管理各个层的 Bean,对于逻辑处理层的所有 Bean,需要指定和 Bean 对应的业务逻辑处理类的路径。配置一个 bean 使用标签,标签的 id 属性可以唯一访 问5该 bean,标签的 class 属性指定了和 Bean 关联的业务逻辑处理类的路径。配置实例如下: 3.3.3 数据访问层的 Bean 配置 Spring 框架统一管理各个层的 Bean,对于数据访问对象层的所有 Bean,需要指定和 Bean 对应的数据访问对象类的路径。配置一个 bean 使用标签,标签的 id 属性可以唯一访 问该 bean,标签的 class 属性指定了和 Bean 关联的数据访问对象类的路径。除了需要配置 5数据访问对象类之外,还需要配置数据访问对象所能使用的数据源。配置实例如下: 在数据源的参数中还需要指定数据库的类型,数据库驱动的类型,数据库的地址,能够合法访问数据源的用户名,访问密码等,这些参数可以提取出来放在一个叫做 perties 的配置文件中。然后需要在 application.xml 中指定 perties 配置文件的路径,以便从 中获取参数来完成对各种 bean 的配置。配置实例如下: classpath:perties 3.4 其他配置文件 Spring 框架会自动加载 perties 配置文件,该文件包含了数据库连接的相关参数。 数据库驱动,数据库地址,数据库的访问用户名和用户密码,这些属性会被数据访问层的配 6置文件使用到。配置实例如下: jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:/localhost:3306/test jdbc.username=root jdbc.password=000 hibernate.database=MYSQL 4 结论 使用上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论