【VC++开源代码栏目提醒】:网学会员为需要VC++开源代码的朋友们搜集整理了基于J2EE的OA系统开发框架的研究与实现 - 硕士论文相关资料,希望对各位网友有所帮助!
中山大学 硕士学位
论文基于J2EE的OA系统开发框架的研究与实现 级别:硕士 专业:应用数学 指导教师:伍小明 20060602重点地对J2EE三种主流开发框架的原理和特点进行分析。
接着,建立0A系统的多层应用模型,分别设计模型的持久层、表现层与业务层架构:持久层架构基于DAO模式,模式以改进的Hibernate对象关系映射技术以及SQL模块实现;表现层架构基于Struts,为了对Web用户访问进行集中的控制,整合会话、Action和会话共享数据管理的功能;业务层架构采用改进的Spring技术对业务逻辑类进行有效的组织。
最后,在此架构的基础上,通过建立数据模型,实现了oA系统的二次开发框架。
框架包含以下模块:以SASO机制为核心的自循环工作流模块,具有三级操作菜单的客户端模块,以及即插即用的附件上传模块。
关键词:框架,OA,自循环工作流,J2EE中山大学硕士学位
论文 基于J2EE的oA系统开发框架的研究与实现 Research on J2EE-based Development Framework of OA System and its Realization Major:Applied Mathematics Name:Hang Zhaojun Supervisor:Prof.Wu Xiaoming Abstract J2EE technology is accepted by more and more enterprises in the trend of globalinformation integration.The research on the J2EE—based application framework isalways an important issue in the field of software technology.In the mean while,thedevelopment of internet promotes the requirements for OA system.A well-designedOA system development framework Can realize many kinds of OA functions as wellas offer a convenient way for the second—time developers to do their jobs,followed bythe result of shortening the cycle of system development. The Article researches and realizes a J2EE·-based development framework of OAsystem:At first,it introduces several kinds of J2EE technology in common use aswell as the J2EE hierarchy model,narrates the actuality of research on applicationframeworks.And then,it pays attention to analyses the principles and the charactersof 3 J2EE leading frameworks.Second,in addition to building a multi-tiersapplication model,it designs and realizes the architectures of persistence tier,presentation tier and business tier in sequence.In addition,after the building of thedatabase schema,it realizes an OA second—time development framework.Theframework includes the following:a self-cycling workflow with the core of the SASOmechanism,a client model with 3-layer menu structure and a plus and play uploadingmodel. Keywords:Framework,OA,Self-cycling Workflow,J2EE II中山大学硕士学位
论文 基于J2EE的oA系统开发框架的研究与实现 第1章综述1.1.oA系统与工作流1.1.1. OA系统及其发展 办公自动化(0A)系统是实现组织内部各级部门之间以及组织之间办公信息的收集、处理、流动、共享,并进一步实现科学决策的信息系统。
它的目标是: “以先进成熟的
计算机和
通信技术为主要手段,建成一个覆盖组织各部门的办公信息系统,提供组织信息交换手段,建立高质量、高效率的信息网络,为决策和办公提供服务,实现组织办公现代化、信息资源化、传输网络化和决策科学化n61。
” 0A系统一般包含下面的基本功能n”:支持工作流应用;在业务的流通过程中提供电子邮件通知功能;能处理大量的复合
文档型的数据信息:能与外界各种格式(Excel、PDF等)的报表交换数据;具有完整的安全性。
网络设施的日臻完善带动了对oA系统的需求。
近两年来,越来越多的单位并在其企业内部网Intranet之上建立Browser/Server结构的办公自动化系统,使得用户通过低成本、简单易用的客户浏览器就能随时随地连接到单位的Web站点上办公;同时,客户端操作界面的一致性克服了C1ient/Server模式客户端的差异和安装的复杂性。
服务器端的开放和基于标准的连接方案,也大大加强了单位与外部的联系。
动态的、交互式的信息发布改进了数据信息发布的滞后。
1.1.2. 工作流和工作流引擎 工作流可以说是0A系统的核心。
在0A系统里,一项业务需要由不同的角色进行处理,每个角色完成一定的任务(如起草、签发、核稿等)是普遍的现象。
每中山大学硕士学位
论文 基于J2EE的oA系统开发框架的研究与实现一项工作以流程的形式出现,由发起者(如文件起草人)发起流程,经过本部门以及其他部门的处理(如签署、会签),最终到达流程的终点(如发出文件、归档入库)。
因此,工作流技术就是处理一项工作在不同人员之间流转的问题的技术。
一个方便易用的工作流系统能够对办公室的效率提高有极大的促进作用。
n61目前的系统开发工具往往把工作流技术提取出来,包装成一个单独的工作流中间件平台,也叫工作流引擎。
工作流引擎的意义在于:把具有共性的一部分(如流程定义、监督和管理、流转引擎、工作
列表等)单独抽出来进行设计,以标准化的方式实现,提高软件的可重用性,降低系统搭建的难度,缩短系统开发的周期;当系统需求有改动的时候,可以比较快地进行调整,而不需要对系统的
代码有较大的改动;可以把注意力从流程上转移到每一步的具体处理任务上。
有了工作流引擎,工作流开发人员只需要关注业务流程的逻辑,而不必把过多精力浪费在如何执行业务流转的问题上,有助于缩短系统的开发周期。
1.2.J2EE及其层次化模型1.2.1. J2EE的概念 J2EE是一种建立在Java2平台之上的体系结构,用于简化企业级应用系统的开发、部署和管理等相关复杂
问题。
J2EE技术以Java2标准版为基础,不仅巩固了标准版中的许多优点,例如”编写一次、随处运行”的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对EJB、JavaServlet、JSP以及XML技术的全面支持。
其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。
1.2.2. J2EE的常用核心技术 J2EE平台由一整套服务、应用程序接El和协议构成,这些构件对开发基于WEB的多层应用提供了有力的支持。
支撑J2EE的核心技术一共有13种n钉,其 2中山大学硕士学位
论文 基于J2EE的oA系统开发框架的研究与实现中最
常用的有以下几种: (1)Java Server Page JSP可以帮助Web开发人员创建动态网页,由HTML
代码和嵌入其中的少量Java
代码所组成。
服务器在jsP被客户端所请求时生成Servlet类,然后将由这个Servlet生成的HTML页面返回给客户端的浏览器。
(2) Servlet Servlet提供的功能大多与JSP类似,不过实现的方式上Servlet是由Java写成。
Servlet作为一种服务器端的应用,当服务器启动后被实例化。
它是一种小型的Java程序,扩展了Web服务器的功能。
(3)Java Database Connectivity JDBC以一种统一的方式来对各种数据库进行存取。
和ODBC一样,JDBC为开发人员隐藏了不同数据库的不同特性。
另外,由于JDBC建立在Java的基础上,因此还提供了数据库存取的平台独立性。
(4)Java Naming and Directory Interface JNDI被用于命名和目录服务。
它提供了一致的模型来存取和操作环境的资源。
在JNDI中,目录结构中的每一个结点称为context。
应用程序可以通过第一个context查找这个目录树来定位它所需要的资源或对象。
一旦有了对被请求对象的引用,就可以调用这个对象的方法。
(5)Enterprise Java Bean J2EE技术之所以赢得广泛重视的原因之一就是EJB。
它们提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发。
EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。
其中容器是指负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性的服务器环境。
EJB规范定义了三种基本的bean类型:会话bean,实体bean和消息驱动bean。
它们的共同点在于:Home接口定义了一个客户端是如何创建与消亡EJB的;远程/本地接口定义了客户端方法;bean类则执行了主要的商务逻辑。
1.2.3. J2EE层次化模型 3中山大学硕士学位
论文 基于J2EE的0A系统开发框架的研究与实现 J2EE是企业级分布式环境下的应用平台,基于J2EE的
系统常常被设计为面向多层体系的结构。
这种体系结构的理论基础是J2EE的层次化模型n”。
如图1—1所示: 浏览器 f 客户端 l JSP、Servlet等技术 I 表现层 l I 业务层 I FAB、JNDI等技术 l 持久层 I JDBC等技术 I EIS层 I ERP、DBMS等 图1--1 J2EE层次化模型 J2EE的层次化模型共分为五个层次:客户层、表现层、业务层、持久层和EIS(企业信息系统)层。
客户层一般是连接到Web应用的客户端浏览器,EIS层一般包含诸如企业资源计划(ERP)、DBMS等的企业信息系统
软件,这两层并不是J2EE平台直接关注的问题。
表现层负责与客户层交互的工作,取得用户输入或是输出处理结果,这一层的基础是JSP和Serlvet等技术;对比地,持久层负责与EIS层进行交互,读取来自EIS层的数据,或是将数据写入到EIS层,这一层一般需要使用JDBC技术。
可以看出,表现层、持久层分别是应用系统的上、下门户,只负责数据得传递工作,而业务逻辑的加工处理则由业务层负责。
业务层是业务逻辑层的简称,作用是实现特定领域的业务逻辑,按照客户的需求加工数据,这一层由EJB、JNDI以及事务处理等相关技术支撑。
J2EE的层次化模型把逻辑职责分派到不同的层次中,一方面屏蔽了每层的实现细节,使其调用者不必关注其内部的改变,另一方面提高了应用系统的可移植性,极大减少了环境改变时所受的影响。
1.3.J2EE框架的研究现状 J2EE框架是一些为应用程序提供可重用设计的Java类。
这些Java类充当 4中山大学硕士学位
论文 基于J2EE的0A系统开发框架的研究与实现应用程序
代码的调用者角色,管理应用程序的执行。
因此,框架很适合在复杂的J2EE开发中使用,它可以为开发者提供一个简单易用的模型。
关于J2EE应用开发的框架研究,目前正处于迅速发展阶段。
近几年来网上发布了数不清的
开源框架。
以下介绍的是比较成熟的几种主流框架:1.3.1. 表现层框架 J2EE BluePrints框架提出了MVC模式的概念,并展示了如何最佳地使用J2EE及其组成技术。
它将表现层的组件划分为3部分:表示核心数据的模型 (Model)、处理数据显示的视图(View)以及处理数据调整的控制器 (Controller)。
Apache Struts框架是适用于大型Web应用的具有工业强度的框架,目前是Web应用MVC模式中VC部分事实上的标准n们。
它与BluePrints所述的MVC模式非常接近。
Struts具有高可配置性,而且有相当多的特性,其中包括前端控制器、动作类及映射、面向XML的实用类、带有效性验证的Web表单以及一些国际化支持。
然而,由于Struts长达六年的
设计延续性,自然导致它在某些技术特性上已经落后于新兴的MVC框架。
面对Spring MVC、Webwork2这些设计更精密,扩展性更强的框架,Struts受到了前所未有的挑战。
WebWork框架是由OpenSymphony组织开发的,致力于组件化和
代码重用的拉出式MVC模式表现层框架。
现在的WebWork2.X前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xworkl和WebWork2两个项目。
其中Xwork简洁、灵活功能强大,它是一个标准的命令模式实现。
WebWork2建立在Xwork之上,处理HTTP的响应和请求。
与Struts相似,WebWork2使用Servlet分派器将HTTP的请求变成Action,并且支持多视图表示,视图部分可以使用JSP、Velocity、FreeMarker、JasperReports,XML等。
在WebWork2.2中添加了对AJAX的支持,这种支持是构建在DWR与Dojo这两个框架的基础之上。
1.3.2. 持久层框架 5中山大学硕士学位
论文 基于J2EE的0A系统开发框架的研究与实现 Hibernate是一个开放源
代码的对象关系映射(0bject/Relative Mapping,以下简称0RM)框架,它对JDBC进行了轻量级的对象封装,使得Java
程序员可以随心所欲的使用面向对象的编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的任务“1。
IBATIS提供了ORM机制,使得业务逻辑实现人员面对的是纯粹的Java对象,这一点与通过Hibernate实现ORM思想是基本一致的。
对于具体的数据操作,Hibernate会自动生成SQL语句,而IBATIS则要求开发者编写具体的SQL语句。
相对Hibernate等“全自动”ORM机制而言,IBATIS以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。
可以作为“全自动”ORM实现的一种有益补充。
1.3.3. 业务逻辑层框架 Spring框架作为一个从2003年2月开始的
开源项目,源自RodJohnson在2002年底出版的((Expert One~on—One J2EE Design and Development))中的基础
代码n1。
Spring提供了管理业务对象的一致方法并且鼓励对接口编程而不是对类编程的良好习惯。
它的思想是控制反转(Inversion of Control,以下简称IoC),或者说依赖注入(Dependence Injection)n1。
而且,Spring作为构建系统所有层次的完整解决方案是独一无二的,至今还没有一个框架既能有效管理业务层对象,并集成对表现层和持久层主流框架的支持。
1.4.本文的工作 本文分别对J2EE应用中持久层、表现层和业务层的主流框架的原理和特点进行了分析。
在此基础上,按照建立的oA系统多层应用模型,提供二次开发框中山大学硕士学位
论文 基于J2EE的0A系统开发框架的研究与实现架的应用级解决方案。
进一步,以WebSphere的工作流引擎和整合开发环境为依靠,实现了一个高重用性和具有高扩展功能的OA二次开发框架(OA DevelopmentFramework,以下简称OADF)系统。
本文设计的OADF系统不仅实现了0A系统的一般功能,而且将各功能包装成控件或API的形式,基于配置文件进行管理。
二次开发者只需通过少量和集中式的配置修改,便可根据具体需求快速搭建起工作流和0A系统。
本文以下章节的安排如下:第二章分别对J2EE应用中三种主流框架Struts、Hibernate、Spring的原理和特点进行分析;第三章首先建立OADF系统的多层架构模型,然后分别提出模型中的持久层、表现层、业务层架构的解决方案;第四章利用上一章的解决
方案实现OADF系统,具体是实现自循环工作流模块,Web客户端模块、附件上传模块,以及对这些模块进行组装;第五章是本文小结,总结OADF的优点以及提出有待完善的地方。
7中山大学硕士学位
论文 基于J2EE的oA系统开发框架的研究与实现 第2章主流框架的分析 在目前网络上公布的所有应用开发框架中,有三种框架为最多开发人员选用,它们分别是Struts、Hibernate、Spring。
基于Struts+Spring+Hibernate组合或Struts+Hibernate组合开发的应用也越来越多。
本章将对这三种主流框架的特点和原理进行说明和分析。
2.1.Struts2.1.1. Struts在Web应用中的位置 Struts是一个Web框架,其主要用于Web应用系统的开发。
按照J2EE架构的标准,Struts应当和JSP/Servlet一样,存在于Web容器里面,充当与Web客户端交互的角色。
如图2—1 n1所示: 图2一l Struts在Web应用中的位置Struts在Web容器里支撑起整个表现层的组织架构,管理和控制所有JSP、Servlet、标签和辅助类等元素之间的的协作,以及指导与客户端浏览器和EJB容器的交互工作。
中山大学硕士学位
论文 基于J2EE的oA系统开发框架的研究与实现2.1.2. Struts的工作原理 Struts框架是MVC模式的体现,图2—2显示了当Struts响应客户请求时候,MVC各个部分是如何协调工作的¨1: 图2—2 Struts各部分协作原理 对于每一个客户请求,Struts是通过四个核心组件来协调完成的。
这几个组件就是:ActionServlet,Action类,ActionMapping和ActionForm。
结合图2—2,这四个组件说明如下:2.1.2.1.Act ionServlet控制器对象 ActionServlet继承自HttpServlet类,它在Struts框架中扮演的角色是中心控制器,作为一个核心组件处理全部的终端请求。
控制器ActionServlet主要负责将HTTP的客户请求信息组装后,根据配置文件的指定描述,转发到适当的处理器。
按照Servlet的标准,所有的Servlet必须在web配置文件(web.xml)声明,ActoinServlet也不例外。
在web.xml里面,必须设定<servlet—name>标签以及与之对应<servlet—class>标签,并把全部以半.do的格式请求的URI映射到这个<servlet—name>标签里面去。
ActionServlet为所有来自网络的表示层请求提供了一个集中的访问点,它 9中山大学硕士学位
论文 基于J2EE的oA系统开发框架的研究与实现提供的抽象概念减轻了开发者建立公共应用系统服务的困难,如管理视图、会话及表单数据。
它也提供一个通用机制如错误及异常处理,
导航,多语言支持,数据验证,数据转换等。
2.1.2.2.Action类 ActionServlet把全部提交的请求都委托给RequestProcessor对象。
RequestProcessor在struts—config.xml文件里
搜索请求URI对应Action标签。
一个Action类封装了用户的一个动作,就像客户请求动作和业务逻辑处理之问的一个适配器,将请求与业务逻辑分开。
这样的分离,使得客户请求和业务逻辑之间可以存在多个点对点的映射。
当中心控制器收到客户的请求的时候,将请求分派到一个Action实例(如果这个实例不存在,控制器会首先创建),然后会调用这个Action实例的execute 0方法。
Struts为应用系统中的每一个Action类只创建一个实例。
2.1.2.3.ActionMapping存储转发信息 上面讲到了一个客户请求是如何被控制器转发和处理的,但是,控制器如何知道什么样的信息转发到什么样的Action类呢?这就需要一些与动作和请求信息相对应的映射配置说明。
在Struts中,这些配置映射信息是存储在特定的XML文件struts—config.xml中的。
在struts—config.xml中,每一个<action>元素都与ActionMapping类的一个实例对应。
通过对<action>标签的设定,当用户通过/xxx.do的格式提交请求信息的时候,控制器查找与这个格式匹配的ActionMapping实例,并委托这个ActionMapping指定的Action对象处理。
然后,当Action实例的execute 0方法运行完毕时,控制器又根据ActionMapping中的<forward>标签信息将响应转到适当的地方(通常都是一个JSP页面)。
lO中山大学硕士学位
论文 基于J2EE的oA系统开发框架的研究与实现2.1.2.4.ActionForm储存表单数据 ActionForm类派生的对象负责消息转移(或者说状态转移)的非持久性数据的存储,用于保存请求对象的参数。
当用户在jsP页面点击提交动作,一个ActionForm对象就被RequestProcessor建立,并且把提交的request参数填入对应的字段。
之后这个ActionForm对象作为输入参数传递到某个Action实例的execute 0方法。
可以看出它实质是request参数的储存容器。
2.1.3. Struts的控制流 图2—3展示了Struts的一个请求一响应过程:中山大学硕士学位
论文 基于J2EE的oA系统开发框架的研究与实现 图2—3 Struts的一个请求一响应过程图2—3的流程说明如下: 12中山大学硕士学位
论文 基于J2EE的oA系统开发框架的研究与实现 ·1,客户以匹配Action URI样式的路径提交html表单,容器将请求传递给ActionServlet,ActionServlet在struts—config.xml的<Action Mappings>标签内
查询路径的映射; ·1.1,如果映射标明了一个ActionForm,ActionServlet看是否已经有一个实例,如果已经存在,ActionServlet重设它,之后根据HTTP请求重新填充它。
否则,新建一个实例; ·1.2,如果<Action>标签的validate属性设置为true,它将调用ActionForm的validate 0方法进行提交数据格式的验证。
如果验证失败,ActionServlet将控制转发至U<Action>标签内input属性标明的路径,控制流终止: ·i.3,如果<action>标签指定一个Action类,而且它已经实例化,它将被重用,否则新建一个实例。
接着Action的execute0方法被调用,其中一个参数是Act ionForm; ·1.3.1—1.3.4,Action可以填充ActionForm,调用业务对象,以及其他需要做的事情。
如果需要返回结果数据,可以把这些数据填充进ActionForm,或者填充进数据封装容器并放进request对象,当然也可以通过健值对应得方式直接把结果放进request; ·1.3.5,Action的execute 0方法结束时返回一个ActionForward对象给ActionServlet: ·2—3,如果ActionForward指向另一个Action URI,则转回到1.3; 否则,显示页面或者其他资源,流程结束。
通常,结果是一个JSP页面。
2.2.Hibernate2.2.1.Hibernate体系结构 Hibernate是一个面向Java环境的ORM服务,用于建立对象模型表示的实体与基于SQL的关系模型数据结构之间的映射。
13中山大学硕士学位
论文 基于J2EE的0A系统开发框架的研究与实现 Hibernate使用数据库和配置信息来为应用程序提供持久化服务,它位于应用程序与数据库之间。
图2--4是Hibernate在应用中所处的位置n们: ‖’纂?墨爹。
饔_。
溪墨’爹=’囊?“瑟:i蓼:囊〕 l ≯。
墓 Databas!e l: 囊i :i i 臣鬟翌二邀:i耋篓:量:篓薹.:.鲞奠::鏊翌。
美菱莲蓬妻耋越ii 图2—4 Hibernate在应用中的位置 由于Hibernate非常灵活,所以Hibernate运行时体系结构支持多种应用方案。
两种极端的情况是: 一,“轻型”的体系结构方案,要求应用程序提供自己的JDBC连接并管理自己的事务。
如图2—5所示: 图2—5 Hibernate轻型结构方案Hibernate只提供图2—5中的SessionFactory和Session组件给应用程序,至于数据库的连接和事务管理由应用程序.