基于J2EE多层架构的web应用研究分析网络工程管理专业
《基于J2EE多层架构的web应用研究分析网络工程管理专业》由会员分享,可在线阅读,更多相关《基于J2EE多层架构的web应用研究分析网络工程管理专业(30页珍藏版)》请在装配图网上搜索。
1、 内容摘要 当前基于J2EE平台的Web应用在逻辑上一般被分为四层:域模型层、表示层、业务层、数据层。本文主要针对表示层、业务层和持久层的实现提出了基于Webwork+Spring+Hibernate的解决方案。WebWork是一个致力于组件化和代码重用的拉出式MVC模式实现框架,以其灵活、强大的功能为Web应用的构建减轻了负担。Spring是一种轻量级的容器,Spring使系统各组件间达到松散耦合并且能和各种框架很好的兼容。Hibernate是一个开源的持久层框架技术,全面减轻了维护数据的复杂度,使系统具有良好的性能和移植性。 本文以港航系统中局办公系统下的个人先进申请为案例,采用基于U
2、ML的系统分析方法,通过建立泳道图、用例图、类图对其进行了详细的分析,并在此基础上分别对Web表示层、业务逻辑层、数据持久层进行了详细设计。针对项目特点,整合WebWork、Spring、Hibernate三种框架技术,提出了一个具有通用模式的J2EE架构:WebWork实现MVC模式完成Web表示层功能,其业务逻辑交由Spring来管理;Spring负责管理表现层控制器与数据访问对象间关系,完成业务逻辑层功能;Hibernate负责数据的持久化工作。三种架构的应用能够有效地解决传统Web应用开发中存在的问题,而且采用分层及模块化设计使系统具有很高的可维护性、扩展性、移植性和组件的复用性。
3、 关键词:J2EE,WebWork,Spring,Hibernate ABSTRACT At present according to the Web application of J2EE terrace at logical is been divided into 4 F generally: Domain Model Layer, Presentation Layer, Business layer and Database layer. This text mainly aims at to mean a layer, business layer with held ou
4、t for long time the realization of layer to put forward according to the WebWork+Spring+Hibernate solution. WebWork is a pull-out framework of implementing MVC pattern and strives for reusing module and code, it relieves burden for constructing Web application by its flexible and powerful function.
5、Differentiating strong invasion of EJB, Spring which is a lightweight container is designed with dependency injection and can make component loose coupling dynamically and compatible with other framework. Hibernate is an open source persistence framework, which entirely reduces the complexity of mai
6、ntaining data and make system have higher performance and portable. This paper takes the project as example. to detailed design for each layer such as Web layer, business logic layer and data persistence layer based on requirements analysis completely. As for the characteristic of project, the auth
7、or integrated with WebWork, Spring and Hibernate and put forward a general model of J2EE architecture, what is that WebWork which implemented MVC pattern play the role of Web presentation layer and hand over its business logic to Spring, manage objects’ relation of between controller and data access
8、 object through Spring and make data persistence by Hibernate. The application of frameworks is not only resolve traditional issues in Web design but also enhance the system’s maintainability, expansibility, compatibility and reusability through adopting delamination and modularization. KeyWord:
9、J2EE, WebWork, Spring, Hibernate 目 录 1 绪论 1 1.1 问题的提出 1 1.2 研究现状与意义 1 1.3 研究内容 2 2 J2EE平台和MVC架构的介绍 3 2.1 J2EE架构的介绍 3 2.2 MVC模式介绍 4 2.3 MVC与J2EE架构之间的关系 5 3 应用架构介绍 6 3.1 Webwork框架 6 3.2 Spring框架 7 3.3 Hibernate架构 8 3.4 三种架构整合的优势 9 4 先进个人申请分析与设计 11 4.1 系统分析阶段 11 4.1.1港
10、航信息系统实施背景及目标 11 4.1.2局办管理系统需求分析 11 4.1.3 先进个人申请需求分析 12 4.2 系统设计阶段 14 4.2.1 系统设计原则 14 4.2.2软件基本架构的搭建 15 4.2.3 类图设计 17 4.2.4 数据库设计 18 第五章 先进个人申请与管理的系统实现 20 5.1 开发软件的介绍 20 5.1.1 Eclipse 开发平台 20 5.1.2 Apache Tomcat应用服务器 21 5.1.3 Oracle 10g数据库 21 5.2 表示层的实现 22 5.2.1 用户界面设计 22 5.2.2 WebWor
11、k的配置文件xwork.xml 23 5.2.3 实现保存功能Action的介绍 23 5.3 业务层的实现 23 5.3.1 配置service.xml 24 5.3.2 Service接口的实现 24 5.4 持久层的实现 25 5.4.1 域模型的建立 25 5.4.2 映射文件的定义 25 5.4.3 Dao的定义和接口实现 26 5.5 成果演示 26 6 总结与展望 30 参考文献 31 基于J2EE多层架构的web应用研究 1 绪论 1.1 问题的提出 随着互联网技术突飞猛进地发展,Web应用系统在Internet上的应用越来越广泛。We
12、b应用系统不再仅仅是具有静态信息发布的简单功能,而且被要求具有实时动态处理交互和办公的能力。由Sun公司推出的J2EE平台,不仅完全继承了Java安全性好、可移植性强的优点,同时它是真正面向对象的编程语言,J2EE平台的广泛应用使基于B/S的多层Web体系结构逐渐发展成熟起来,多层Web应用的开发己成为主流。但是,在多层Web体系结构的设计中,仍然存在程序可重用程度低、维护工作繁琐、扩展能力较差等不足。同时,多层Web应用系统需要面对复杂的网络环境、多样化的用户需求、灵活的业务模式、复杂的业务流程、众多的组织机构及层次和角色分工等问题,在业务和技术上也是复杂多变的。因此,如何组织应用程序以实现
13、简单高效的程序编写、升级、维护和扩展,是当前Internet技术发展的热点之一,也是一个很值得探讨的研究课题。 传统的模式是基于典型的客户/服务器C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。但C/S体系结构只在系统开发一级的层面上体现了开放性,在特定的应用中无论是Client端还是Server端都需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件。加之产品的更新换代
14、十分快,已经很难适应百台电脑以上局域网用户同时使用,而且代价高、效率低。 因此,B/S(Brower/server)结构即浏览器和服务器结构,很大程度上弥补了C/S结构的缺陷,更为广泛的被开发人员加以应用。B/S结构就是我们所说的Web应用。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Brower)实现,但是主要事务逻辑在服务器端实现,形成所谓三层结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。在JAVA这样的跨平台语言出现之后,B/S架构
15、的企业级软件更充分的体现出方便、快捷、高效的优势。 1.2 研究现状与意义 Web应用的广泛性推动了软件技术的发展,同样软件技术发展促进Web应用更加广泛。今天的软件,规模不断扩大,复杂度日渐升级、开发人员面临的问题越来越多、解决方案也百花齐放。如何设计应用软件使纷杂的应用需求和多样化的客观环境能够彼此尽量少的受到对方的干扰和牵制,以及我们曾经的成功案例能否再次使用?分层结构和组件复用给众多开发人员提供了选择。分层结构让系统的功能更加明确,减少了各层次之间的关联和依赖,让开发人员可以同步工作而不会受到其他人的影响。组件复用是在分层的基础上,由于层间的耦合性低,独立性强,在成熟组件的基础上开
16、发极大的提高了软件的开发效率、缩短了开发周期,使软件产品的稳定性、兼容性、扩展性都得到了提高。因此,人们越来越意识到软件重用技术的重要性,设计模式和框架技术应运而生。 设计模式和框架技术在整个系统开发中发挥了重要的作用,但从更广泛的角度说,它们只是在更小的颗粒度上发挥功用。如何组织各个层次、如何合理选择使用模式和框架技术又将开发人员的关注点提高到整个系统层面上来。架构技术为这一问题提供了解决方案。架构是软件系统从整体到部分的最高层次的划分,一般由多个不同领域的框架组成。一个成功的软件需要有一个成功的架构,它将各个框架技术有机的组织起来,相互关联但又不失其独立性。软件架构的建立是一个复杂而又持
17、续改进的过程,开发人员不可能对每个项目做不同的架构,而总是尽量重用以前的架构,或开发出尽量通用的架构方案。如何在众多的框架中选择建立适合企业应用的架构,并且怎样让各个应用层无缝连接?如何整合框架以便让各个层以一种松散耦合的方式彼此作用而不用管底层的技术细节?这给软件人员提出了挑战。 1.3 研究内容 现在各种框架数目繁多,每一种框架都有其特定的应用范围,没有一种框架能够很好的解决web应用中的所有问题。因此如何根据所要开发的系统选择合适的框架组合起来,并且使系统中的各个层次以一种松散藕合的方式彼此作用而不用管理底层的技术实现细节,成为我们面临的主要问题。 为了解决以上问题,本课题主要对以
18、下内容展开研究:J2EE平台框架和MVC模式的介绍;在对WebWork,Spring和Hibernate等架构进行深入分析的基础上,提出了集成WebWork,Spring和Hibernate的架构设计方案,为Web应用实现提供选择性参考;以港航系统中局办公系统下的个人先进申请为案例,采用基于UML的系统分析方法,通过建立泳道图、用例图、类图对其进行了详细的分析,并在此基础上分别对Web表示层、业务逻辑层、数据持久层进行了详细设计,提炼出了系统的结构模型以及各模型之间的关系,确定整个系统采用WebWork,Spring和Hibernate体系结构进行分层及模块化设计,并利用Eclipse,tom
19、cat5.0和Oracle 10g数据库等技术,实现先进个人申请和管理的简单程序,从而体现出多层架构开发的优越性。 2 J2EE平台和MVC架构的介绍 2.1 J2EE架构的介绍 J2EE(Java 2 Platform Enterprise Edition,简称J2EE)是Java2平台的企业版,适用于企业级体系结构的开发、部署和管理等,为开发多层次分布式、针对服务器的应用系统提供了统一的技术平台。J2EE平台己经成为使用最广泛的web应用程序设计技术,主要支持两类软件的开发和应用:做高级信息系统的Web应用服务器;Web应用服务器上运行的Web应用程序。 J2EE体系结构扩展
20、了标准的两层结构,提供中间层来满足经济、高可用性、高可靠性、可扩展性的需求。这种结构简化了客户端,主要程序都运行在能保证正常运行的服务器端,系统更加安全可靠,也更容易扩充和移植。在J2EE的应用中,软件体系架构模式(如层模式、MVC模式、多层分布模式等)和设计模式(如截取过滤器、视图帮助器、前端控制器、值对象等)得到广泛使用。 通过提供统一开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能,是传统的互联网应用程序模型无法比拟的。
21、J2EE是多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上(也可以放在同一台机器上)。它可以解决两层模式(Client/Server)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想,而且经常基于某种专有的协议(通常是某种数据库协议)。它使得重用业务逻辑和界面逻辑非常困难。现在J2EE的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层,图2.1是J2EE典型的四层结构: 图2.1 J2EE的层次结构
22、 ①客户层 客户层是用来实现企业级应用系统的操作界面和显示层,并且某些客户端程序也可通过它实现业务逻辑。可分为基于Web和非基于Web的客户端两种情况。基于Web的情况下主要作为企业Web服务器的浏览器,非基于Web的客户层则是独立的应用程序,可以完成瘦客户机无法完成的任务。 ②Web层 J2EE的Web层组件可以是JSP页面或Servlets。按照J2EE规范静态的HTML页面和Applets不算是Web层组件。Web层可能包含某些JavaBeans对象来处理用户输入,并把输入发送给运行在业务层上的Enterprise Bean来进行处理。 ③业务层逻辑层 业务逻辑层也叫EJB层
23、,它由EJB服务器和EJB组件组成。一般情况下许多开发商把Web服务器和EJB服务器结合在一起发布称为应用服务器。EJB层用来实现企业级信息系统的业务逻辑,是企业级应用的核心,由运行在业务层中的EJB来处理,业务层中的EJB要运行在容器中。一个Bean从客户端接收数据,处理后把数据送到企业信息系统层存储起来。同样,一个Bean也可以从企业信息系统取出数据,发送到客户端程序。 ④EIS(Enterprise Information System企业信息系统)层 企业信息系统层处理企业信息系统软件,包括企业基础建设系统,企业资源计划(ERP)、大型机事务处理、数据库系统和其它的遗留信息系统。例
24、如J2EE应用组件可能为了数据库连接需要访问企业信息系统。[1] 2.2 MVC模式介绍 MVC(Model-View-Controller)模式是现在世界上非常流行的一种设计模式。MVC包括三类对象,Model是应用对象,View是它在屏幕上的表示,Controller定义用户界面对用户输入的响应方式。MVC模式是一种高层次上的架构模式,主要是由合成模式、策略模式、观察者模式和工厂方法模式组成。MVC设计模式是设计模式中很重要的一种。Model模型,即相关的数据,是对象的内在属性,它提供业务逻辑;视图是模型的外在表现形式,是模型在屏幕上的显示,1个模型可以对应1个或多个视图,视图还具
25、有与外界交互的功能;控制器是模型与视图的联系纽带,用于管理用户与视图发生的交互,控制器提取通过视图传输进来的外部信息并转化成相应事件,然后由对应的控制器对模型进行更新,相应的模型的更新与修改将通过控制器通知视图,保持视图与模型的一致性。[2] MVC模式从概念上定义了基于Web应用的框架技术,同时支持MVC模式的框架技术也是种类繁多,目前比较主流的有Struts,Webwork,SpringMVC,JSF等。对于各种框架技术,不存在绝对的好与不好,而是各有所长,针对不同的应用需求选择合适的框架技术才是上策。以webwork架构为例,WebWork的优点是:结构简单易于扩展、标签库易于定制、拦
26、截器非常出色,支持广泛的模板语言(Velociy和FreeMarker),完整的tag支持,模块写好后容易插入,一个jar包就可以包括所有的action和view(得益于ftl的classpath支持),和其他工具兼容性好。但其只要的缺点是文档示例较少、具有较多的配置。 2.3 MVC与J2EE架构之间的关系 理解MVC三个部分在J2EE架构中处于什么位置,有助于我们理解MVC模式的实现。前面提到并提供了一个J2EE体系层次结构图,MVC与J2EE架构间对应关系是: (1)View处于Web层或者说是客户端层,通常是JSP/Servlets。 (2)Controller也处于Web
27、层,通常用Servlets实现。 (3)Model处于业务逻辑层,通常用服务器端JavaBean或者EJB实现。 3 应用架构介绍 3.1 Webwork框架 正如前文所提到的,在MVC模式的实现技术中,Struts是一种流行的Web框架,拥有大量的用户群体,但在构建大规模Web应用的时候,它并不能提供通常所需的创造力发挥空间。WebWork的创造者和JBoss的创始人之一的Rickard Oberg曾经说:“框架的强大之处不是源自于它能让你做什么,而是它不能让你做什么”。Rickard所说的话解释了什么是框架:框架使混乱的东西变得结构化。然而,从另一个角度说,限制严格的架构束缚
28、了开发人员的手脚,开发人员的创造力空间收缩了,甚至有些任务无法完成。很明显,一种完美的中间状态存在于无框架和严格框架之间,这种梦寐以求的中间状态就是WebWork的终极目标。 WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.2,其前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目,如图3.1所示: 图3.1 WebWork功能结构图 Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且
29、完全从web层脱离出来。Xwork提供了很多核心功能:前端拦截机、运行时表单属性验证、类型转换、强大的表达式语言(OGNL–the Object Graph Notation Language)、IoC(Inversion of Control反转控制)容器等。 WebWork2建立在Xwork之上,处理HTTP的响应和请求。WebWork2使用Filter Dispatcher(过滤器),将HTTP请求变成Action(业务层Action类)、session(会话)、application(应用程序)、request请求范围的参数映射。WebWork2支持多视图表示,视图部分可以使用JSP
30、, Velocity, FreeMarker,XML等。[3] WebWork主要包含了下面几个部分: (1)Action(动作) 一般一个Action代表一次请求或调用。在WebWork中,一般Action类需要实现Action接口,或者直接继承基础类ActionSupport。这是它要实现默认的execute方法,并返回一个在配置文件中定义的Result(也就是一个自定义的字符串而已)。当然,Action也可以只是一个Pojo(Plain Object Java Object),不用继承任何类也不用实现任何接口。Action是一次请求的控制器,同时也充当数据模型的角色。 WebWo
31、rk的关键特性之一是:它并不会要求你使用特定的类来支持Web页面上的表单字段。相反,这些属性会出现在Action中,并且可以包含拥有复杂对象的子属性。这是相当有价值的,因为不再需要编写FormBean类这种更加形式化的代码了。总之,Action(负责处理表单数据)和FormBean(负责保存表单数据)绑定如此紧密,合并它们是相当有意义的。 (2)通过ActionContext访问数据 ActionContext是Action执行时的上下文,本质上是ThreadLocal Map,它存放的是Action在执行时需要用到的对象,如:在使用WebWork时,上下文存有请求的参数、会话、Servl
32、et上下文、本地化信息等。在Web应用程序开发中,除了将请求参数自动设置到Action的字段中,往往也需要在Action里直接获取请求Request或会话(session)的一些信息,甚至需要直接对JavaSevrlet Http的请求(HttpSevrlet Request)、响应(HttpSevrlet Response)操作。当有这方面的需要时,可以通过使用ActionContext来操作这些对象, (3)Interceptor Interceptor(拦截器)将Action共用的行为独立出来,在Action执行前后运行。Interceptor将很多功能从Action中独立出来,大
33、量减少了Action的代码,独立出来的行为具有很好的重用性。WebWork的许多功能都是有Interceptor实现,可以在配置文件中组装Action用到的Interceptor,它会按照指定的顺序,在Action执行前后运行。WebWork框架的很多功能都是以拦截器的形式提供出来。例如:参数组装,验证,国际化,文件上传等等。 (4)验证框架 WebWork提供了在Action执行之前,对输入数据的验证功能,它使用了其核心XWork的验证框架。提供了如下功能:可配置的验证文件。它的验证文件是一个独立的XML配置文件,对验证的添加、修改只需更改配置文件,无需编译任何的Class;验证文件和被
34、验证的对象完全解耦;多种不同的验证方式,强大的表达式验证;同时支持服务器端和客户端验证。 当然,Webwork还包含像FilterDispatcher(过滤器)、表达式语言EL和OGNL、Result Type(返回类型)等主要内容,他们共同构成了Webwork强大的功能。 3.2 Spring框架 Spring是一种多层的J2EE应用程序框架,它是以Rod Johnson编著的Expert One-on-One J2EE Design and Development一书的代码为基础发展而来。Spring追求的就是一种轻量级的目标,旨在简化J2EE的开发,降低J2EE项目的实施的难度Sp
35、ring框架是一个松耦合的框架,其耦合度被设计为最小,在各个层次上具体选用那个框架取决于实际项目的需要和开发者的意愿。[4] 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通
36、过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反,不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(
37、prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。[13] 3.3 Hibern
38、ate架构 Hibernate是一个面向Java环境的对象/关系数据库映射工具,它的目标是成为Java中管理持续性数据问题的一种完整的解决方案。它协调应用与关系数据库的交互,让开发者解放出来专注于手中的业务问题。Hibernate是一种非强迫性的解决方案,我们可以利用Hibernate提供的查询和获取数据的方法,当然也可以使用传统的JDBC来实现数据库的操作。 Hibernate 不仅仅管理Java 类到数据库表的映射,还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL 和JDBC 处理数据的时间。Hibernate 的目标是对于开发者通常的数据持久化相关的编程任务,解放其
39、中的95%。同时,它是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。[5] 3.4 三种架构整合的优势 以上对WebWork、Spring和Hibernate三种框架技术,进行了详细的讨论,从中可以看出,对于各个框架技术就个体而言不存在优与劣,而只是应用领域不同而已
40、。而和其他技术整合使用时,所表现出来的差异则大不相同。如何针对某一具体领域,选择合适的框架技术来相互弥补应用中的不足,则是很值得讨论的。 开发过程中,三种框架技术的集成非常方便,作为开源框架中的佼佼者,三种技术顾及到了和其他框架的接口,而且开发者对于具体的应用需求,可以修改源代码,定制客户化服务。在项目实现中通过对以上三种框架的集成,使不同框架的局限性达到最小,而且充分利用了每个框架的优势,达到了良好的效果。Webwork+Spring+Hibernate架构具有以下特点: (1)合理的设计思想。WebWork是基于MVC的框架,它很好地把业务逻辑和表示层分离。由于WebWork在对象持久
41、化和业务对象管理方面尚存在一定的不足,基于WebWork的良好兼容性,采用Spring和Hibernate框架予以补充。Spring是一种轻量级容器,利用依赖注入方式实现对象的初始化,使得开发人员减轻了初始化对象的负担;同时利用AOP机制进行事务管理,全面降低了构建企业应用的复杂度。Hibernate是一个轻量级的对象持久化工具,它能很好地将实体对象与数据库表的记录相对应,而且通过统一接口屏蔽具体数据库的差异。 (2)快速协作开发。本架构使用分层技术实现,分为表现层,业务层,持久层和领域模型层。各层次之间的关系通过三种框架解耦与层之间边界清晰、功能尽量独立,对于同一层次的不同的业务逻辑基于模
42、块划分,使得整个系统既可以横向分工,也能纵向分工,能充分发挥团队化协作能力,使开发人员充分发挥各自的特长。 (3)良好的兼容性。本架构所使用的三种框架技术都是开源技术,它们三者之间以及和其它框架之间能够很好的兼容。WebWork的表现层除了使用jsp之外还可以使用Freemarker, Velocity等模板技术作为表现技术。Spring作为轻量级管理容器,可以和Acegi安全框架无缝兼容,满足了在安全控制方面的不足;同时它和Hibernate框架的兼容,使对象的持久化操作更加便捷。 (4)重用和模板化设计。WSH框架技术是基于模块化设计的。相互分离的各层之间互不影响,某一层的改动不会影响
43、另一层,这样为业务逻辑的重用提供了可能。在设计中抽象出功能相同的部分作为通用模块使用,充分利用己有的工具集加速开发进度。 (5)高效的性能和开发效率。Spring使开发人员直接使用类对象,而不用考虑具体的生成方式,集中精力关注于业务对象的处理。Hibernate技术规范对底层数据库操作进行了大量的优化,提高了系统性能,其O/R设计,使开发人员可以随心所欲的使用面向对象编程思想来操纵数据库,无须关心对象本身及其关系如何在数据库中存储。相对于使用JDBC和SQL语句来手工操作数据库,大大减少了开发数据库的工作量。 (6)可扩展性和移植性。WSH架构是基于J2EE平台的,Java的天性就是平台无
44、关性。Hibernate作为持久化框架向上屏蔽了不同数据库间的差异,可以很容易移植到不同的数据库。Spring的Bean对象通过配置文件使得开发人员可以不用书写任何代码,不经改动的情况下,就可以移植到另一个IoC容器。架构各层次之间是独立的,通过接口进行交互,对于系统扩展而言,只要实现同一接口,可以方便的对系统功能进行扩充和维护。[6] 4 先进个人申请分析与设计 信息系统分析是在总体规划的指导下,对某个或若干个子系统进行仔细、深入地调查研究,确定新系统逻辑结构的过程。信息系统分析与总体规划相比这个阶段所作的工作是更详细更细致的工作。在系统分析阶段,分析设计人员要详细了解每一个业务过
45、程和业务活动的工作流程及信息处理流程,理解用户对信息系统的需求,然后运用各种信息系统开发理论、开发方法和开发技术确定系统应该具有的逻辑功能,再用适当的方法表达出来,形成系统的逻辑方案。 信息系统分析的工作步骤:第一、对现行系统进行详细的业务调查分析了解各项需求;第二、进行数据分析,建立数据库逻辑模型;第三、进行功能分析,确定新系统逻辑结构。[7] 在Web应用系统架构分析的基础上,本章以项目实例“港航局办公室系统3期的精神文明建设”为背景,详细阐述了系统分析阶段的各个步骤,并结合Webwork+Spring+Hibernate架构的特点,进行分析设计工作。 4.1 系统分析阶段 4.1
46、.1港航信息系统实施背景及目标 目前,港航部门面临着管理范围广、难度大、成本高、效果小的现状,原有的思路、模式和管理方法无法有效地面对“工作点多、面广、人少”的发展状况,必须积极探索新的管理模式以应对时代发展的要求。打造以办公网络化、管理科学化、监管信息化、服务自动化、决策智能化为特征的数字港航,全面推进港航管理系统“依法行政、高效管理、便民利民、安全保障、公正廉洁”等效能建设要求,实现以信息化手段管人、管事。 港航信息化建设要想发挥其整体效益,必须对业务系统进行彻底整合,以提高信息资源的高度共享和各个应用系统的整体协同能力,资源整合,优势互补,形成一个结构完整、技术先进的信息网络。从确定
47、信息网的框架到方案论证和组织实施等各个环节,都需要各级部门发挥作用,确保信息网工程有序地进行。通过充分开发利用通信网络资源、信息技术和信息资源,整合分散的资源,较好地发挥出应有的效能,并最终达到整体协同。 局办管理系统是港航开发中七大系统之一,其主要功能包括港航部门基本信息和日常事务的管理。其开发的价值在于,可以大大提高办公室管理者日常办公效率,促进整个港航部门信息化的发展,同时可以节省资源,为整个系统的建设提供有力保障。 4.1.2局办管理系统需求分析 局办公室主要业务包括:(1)政务管理,由日程管理、规章制度、综合信息、组织及人员结构、电话号码管理、老干部管理组成;(2)行政管理:由
48、固定资产管理、车辆管理组成;(3)执法队伍建设;(4)会议管理;(5)电子公告;(6)港航信息;(7)精神文明建设。其中精神文明建设包括:先进个人申请管理和先进集体申请管理。 局办管理系统的整体结构如图4.1所示: 图4.1 局办管理系统整体结构图 先进个人申请管理隶属于港航局办公系统下的精神文明建设模块,同时与先进集体申请管理具有相类似的流程与功能,下面仅以先进个人申请管理为例,进行业务描述与需求提取。 4.1.3 先进个人申请需求分析 (1)业务需求 根据用户的描述以及实际调查,可以确定先进个人申请子系统的业务需求为以下几点: l 进行网上先进个人申请录入; l 推
49、荐单位和市级部门对先进个人申请的的审核; l 进行先进个人申请的管理,包括查询,删除,修改,查看详情和打印功能; l 不同等级的用户拥有不同的查询和使用权限,保证不同办事机构在自身权限内获得有用的业务处理信息,保证信息的安全性。 (2)用户及权限的划分 根据与用户的沟通和实地考查,将用户分为:地方管理用户、市级推荐单位用户、省级管理用户等若干等级,其权限与相关的职责如下: l 地方管理用户:主要是办公室系统的一般使用用户,他们只负责先进申请相关业务的录入功能,同时具备对先进个人申请的检索查看等功能; l 市级推荐单位用户:主要是地方办公室系统的主管部门用户,他们负责对上报的申请进行
50、汇总与初审。 l 省级管理用户:是主管部门最高级别用户,他们拥有最高的用户权限,他们负责对上报的先进申请文件进行审核与监督。 (3)系统的业务流程分析 UML(Unified Modeling Language,统一建模语言)是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。同时,是一种定义良好、易于表达、功能强大、普遍适用且可视化的建模语言。它溶入了软件工程领域的新思想、新方法和新技术。UML将是面向对象技术领域内占主导地位的标准建模语言,目前UML获得了工业界、科技界和应用界的广泛支持,成为可视化建模语言事实上的工业标准。 泳道图是将模型中的活动按照职责组织起来。这
51、种分配可以通过将活动组织成用线分开的不同区域来表示。由于它们的外观的缘故,这些区域被称作泳道。它可以方便的描述企业的各种业务流程,能够直观地描述系统的各活动之间的逻辑关系,利于用户理解业务逻辑。[8]先进个人申请的泳道图如下: 图4.2 先进个人申请的泳道图 用例图:是从用户角度描述系统功能,并指出各功能的操作者,对系统行为的动态描述。它代表系统中各个项目相关人员之间就系统行为所达成的契约。先进个人申请用例图如下: 图4.3 先进个人申请用例图 4.2 系统设计阶段 4.2.1 系统设计原则 本系统遵循以下建设原则:[14] (1)统一规划、统一标准、城市建网、网
52、络互连、分级使用、分步实施。 (2)遵循国家劳动部要求与国际ISO标准,为今后的进一步发展奠定基础。 (3)系统建成即可发挥作用,提高工作效率和管理水平。 (4)采用当前较成熟和先进的主流设备,采用先进的技术,在保证优良性能的基础上,尽可能降低造价,使整个系统高效地发挥作用。 (5)系统高度的可靠性,保证系统可以在任何条件和环境下均能正常工作;安全性方面有针对性地采取一些措施,使系统能安全地运行,避免人为因素及计算机病毒等造成的破坏作用,争取做到防患于未然。 (6)充分利用国家和行业公用通讯设施,遵循通信技术以及国家在技术体制上的有关规定,充分保护利用现有的软、硬件资源。 (7)网
53、络技术具有先进性,能适应未来技术的发展,便于发展、便于扩充、灵活性强。 (8)系统具备相当的先进性和足够的事务处理能力,以保证在信息时代的新形势下能够准确、迅速及时地处理日益增长的各种信息数据,实现公路客运资源的协同工作。 (9)系统具有一定的可扩展性和升级更新能力,适应主管单位的宏观管理需要和企业的规模化经营。计算机技术的不断发展,同时保障软硬件资源的充分利用。 (10)作为当前知识经济发展形势下的现代管理系统,系统可以将道路运输行政管理部门连接在一起;协同处理有关业务;系统还可以通过国际互联网(INTERNET)把相关信息通过WEB发布到网上,便于展开网络交流管理活动。 4.2.2
54、软件基本架构的搭建 本系统功能的实现,是参考J2EE框架结构,结合WebWork、Spring和Hibernate的相关技术特点,采用了MVC和DAO的设计模式,来完成J2EE架构的具体设计。 软件体系结构中采用三层结构:Web表示层、业务逻辑层、持久层。各个层次之间具有不同的功能,并保持清晰的隔离,以使彼此独立存在。三层之间的关系如下图:[9] 图4.4 软件体系三层结构间的关系 (1)表示层采用WebWork框架 WebWork的工作,总得来说是提供一个流程的控制:通过接收用户请求,将基于http的请求参数和相关的环境变量封装到通用的ActionContext中。Xwor
55、k接收到WebWork传递过来的ActionContext,放入ValueStack。执行拦截器before()方法,执行Action的execute()方法,执行拦截器after()方法委托给Service执行,并返回Result,根据设置显示结果给客户端。WebWork表示层的基本处理流程如下图所示: 图4.5 表示层的处理流程 (2)业务层采用Spring技术 业务层(service layer)属于系统的核心部分,也就是业务核心的载体---领域模型所在的位置,还包括业务过程控制以及事务控制等服务。 业务层职责如下: 处理应用程序的业务逻辑和业务校验;管理事务;允许与其它
56、层相互作用的接口;管理业务层级别的对象的依赖;在显示层和持久层之间增加了一个灵活的机制,使得他们不直接的联系在一起;通过揭示从显示层到业务层之间的Context来得到business services;管理程序的执行(从业务层到持久层)。 Spring提供了控制倒置(inversion of control,简称IoC)和注射依赖设置(setter dependency injection)这些方式,用XML文件将对象连接起来。 IoC是一个简单概念(它允许一个对象在上层接受其他对象的创建),用IoC这种方式让对象从创建中释放了出来,降低了偶合度。[16] Spring业务层的处理流程如图
57、所示: 图4.6 业务层的处理流程 (3)持久层采用Hibernate技术 持久层(persistence layer)主要负责业务数据的持久性存储。 持久层采用Hibernate技术持久化数据。但是一个基于关系数据库系统(RDMS)的应用程序,一般不会只采用一种持久化技术,很多情况下除了使用O/R Mapping技术,可能出于性能等特殊原因的考虑,需要直接进入JDBC技术。 Hibernate作为一种持久层框架和Spring搭配在一起,使开发人员使用面向对象的操作方式来操作数据库记录。更为重要的是,应用系统在不同数据库间移植非常方便,只需在配置文件中更改即可。[15] 简
58、单的说持久层主要完成数据库表的构造、持久化对象和*.hbm.xml映射文件的编写。Hibernate作为持久化框架向上屏蔽了不同数据库间的差异,可以很容易移植到不同的数据库。Hibernate持久层的处理流程如图所示: 图4.7 持久层的处理流程图 4.2.3 类图设计 类图:它描述的是一种静态关系,在系统的整个生命周期都是有效的。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构即:类的属性和操作。 图4.8显示了先进个人申请管理的类图:先进个人申请类继承了人员信息类和部门信息类,同时初审类和复审类又继承了先进个人申请类。 图4.8 先进个人申
59、请的类图 4.2.4 数据库设计 在数据流程分析的基础之上,我们已经基本了解了用户所要使用的数据,这时就应进行详细的数据分析从而建立数据模型了。 在进行数据库设计的时候,要遵循下面的几个原则:[7] (1)通用性原则 数据共享不仅仅局限于“数据共用”,还应该满足:数据库不依赖于各个子系统,既由各子系统共用:数据与程序严格分离,数据的增删、更改不需要更改程序。这就要求数据库必须具有良好的通用性,即:数据具有透明性;通用的数据操纵语言供各子系统各应用程序调用数据。 (2)一致性原则 数据交叉现象不仅造成大量的数据重复,而且难以统一更新,产生数据混乱的现象,导致数据的不一致、不唯一
60、。因此,数据库必须统一管理。同时,为了减少由于数据不一致所造成的损失,系统应该包含数据的一致性校验的功能,用户可以在特定时间段内进行一致性校验,来避免某些数据存在冗余或者不一致。 (3)安全性原则 数据库是营运系统的基础,数据库系统的崩溃对水运系统以及营运系统是灾难性的,因此必须保证数据库系统的高度安全可靠性。采取一定的措施,如数据库服务器磁盘镜像、数据库备份等,并保证数据不被非法访问,病毒侵扰,还必须采取相应的保密措施。 下面是先进个人申请的主题数据库: 表4.1:主题数据库 主题数据库标识 主题数据库名称 数据库表标识 数据库表名称 GH3P_OFFICE_QUALI
61、TY 局办文明建设数据库 T_PERSONQUALITY T_PERSONTRIAL 先进个人申请表 审查表 GH3P_OFFICE_USER 基础数据库 T_USER T_DEPARTMENT T_ATTACHMENT 用户基本信息 部门基本信息 附件基本信息 (基础数据库中数据表省略) 表4.2:先进个人申请数据库表 数据元素标识 含义 类型 长度 允许空 ID 申请表ID NUMBER 22 N USER_ID 用户ID NUMBER 22 N DEPARTMENT_ID 部门ID NUMBER 22 N SU
62、BMIT_DATE 提交日期 DATE Y NAME 申请人姓名 VARCHAR2 60 Y COMPANY 单位 VARCHAR2 90 Y POSITION 职位 VARCHAR2 90 Y DIPLOMA 学历 VARCHAR2 90 Y MAJOR 专业 VARCHAR2 90 Y SEX 性别 NUMBER 4 Y MODIFY 是否可改 NUMBER 4 Y 表4.3:先进个人申请审查表 数据元素标识 含义 类型 长度 允许空 ID 申请表标识 NUMBER 22 N U
63、SER_ID 用户ID NUMBER 22 N DEPARTMENT_ID 部门ID NUMBER 22 N OPINION 审查意见 VARCHAR2 500 Y STAMP 审查人 VARCHAR2 90 Y DATE 审查日期 DATE Y STATE 审查状态 NUMBER 4 Y APP_ID 个人申请ID NUMBER 22 N (注:审查状态取值为1和2,1代表市级管理部门意见,2代表省级审查意见) 第五章 先进个人申请与管理的系统实现 5.1 开发软件的介绍 5.1.1 Eclipse
64、开发平台 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。它由IBM作为主发起人投资开发,并被Borland、Sybase等众多公司所支持。Eclipse 不仅仅是一个集成开发环境(DE),也是一个工具集成的开发平台, 它提供了一个用于开发插件的框架,使创建、继承和使用软件工具更容易。就其本身而言,它只是一组规则,满足了以下需求:支持多种应用开发工具的构建;能独立地开发处理各种内容的插件(HTML、Java、C、JSP、EJB、XML和GIF等);开发者可以自己独立地开发工具,与其它标准工具无缝集成;可以在多种平台上运行,包括Windows和Linux平台。 Ecli
65、pse平台由几个主要的部分构成:平台运行库、工作区、工作台、团队支持和帮助。[10] Eclipse平台体系结构,如图 图5.1 Eclipse 平台体系结构图 ①平台 平台运行库是内核,它在启动时检查已安装了哪些插件,并创建关于它们的注册表信息。为降低启动时间和资源使用,它在实际需要任何插件时才加载该插件。除了内核外,其他每样东西都是作为插件来实现的。 ②工作区 工作区是负责管理用户资源的插件。这包括用户创建的项目、那些项目中的文件,以及文件变更和其他资源。工作区还负责通知其他插件关于资源变更的信息,比如文件创建、删除或更改。 ③工作台 工作台为 Eclipse
66、 提供用户界面。它是使用标准窗口工具包(SWT)和一个更高级的 API(JFace)来构建的;SWT 是 Java 的 Swing/AWT GUI API 的非标准替代者,JFace 则建立在 SWT 基础上,提供用户界面组件。 ④团队支持 团队支持组件负责提供版本控制和配置管理支持。它根据需要添加视图,以允许用户与所使用的任何版本控制系统(如果有的话)交互。大多数插件都不需要与团队支持组件交互,除非它们提供版本控制服务。 ⑤帮助 帮助组件具有与 Eclipse 平台本身相当的可扩展能力。与插件向 Eclipse 添加功能相同,帮助提供一个附加的导航结构,允许工具以 HTML 文件的形式添加文档。 5.1.2 Apache Tomcat应用服务器 随着java的流行,Tomcat在web上的应用也越来越广,Tomcat作为一个开源的servlet容器, 是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品(Most Innovative Java Product),同时它又是sun公司官方推荐的servlet和
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。