资源描述
_ 学号:13061255西安电子科技大学学士学位论文影像及电子档案管理系统内容管理子系统设计与实现Design and Implementation of the Content Management Subsystem of the Video and Document Management System 学院: 软件学院 专业: 软件工程 班级: 130613 姓名: 崔日新 导师: 孙述龙 摘 要随着档案资料价值的日渐提升,各行各业对档案管理也提出了更高的要求。对档案要“管好”,更要“用好”,但首先要管理好。本文针对企业中的信息管理需求探讨了面向企业应用的影像及电子档案管理系统内容管理子系统的设计与实现。由于企业内信息文档繁多、业务需求多变,以及涉及到公司工作效率和文件价值与保密性等因素。致使文档管理平台建设存在许多问题。本文从软件体系结构模式的角度入手,首先构建了一个基于MVC模式的应用软件开发框架,然后在此基础上设计和实现了影像及电子档案管理系统内容管理子系统。在介绍SSH结构模型、Ajax等理论的基础上,对比已有文档管理平台的不足之处,着重研究如何使用这些框架和技术开发跨平台、框架灵活、稳定实用的影像及电子档案管理系统内容管理子系统的问题,并给出了基于Struts+Hibernate+ Spring+ExtJ技术的系统整体架构设计和内容管理子系统的设计与实现。论文最后讨论了目前的影像及电子档案管理内容管理子系统有待完善和进一步研究的问题。关键词: 影像及电子档案管理系统内容管理子系统 MVC SSH Ajax -可编辑修改-_ABSTRACTWith the increasing value of file data, all walks of life have a higher demand for the file management. As to the document, it is better to be used well than be managed well, while the first is to be managed well. This paper will talk about the design and implementation of the Content Management Subsystem of the Video and Document Management System which works as an enterprise application. Aware of the changing business requirements in the system, it is very difficult to build the platform. In this paper, it firstly begins with the software architecture patterns, then constructs an application software development framework which is built upon the MVC pattern, next describes the design and implementation of the Content Management Subsystem of the Video and Document Management System. On the basis of introducing SSH architecture, the paper contrasts to the disadvantages in the existing document management systems and focuses on how to use these technologies and development frameworks to build a cross-platform, flexible framework and stability practical video and document management system. It also gives the implementation of the systems overall framework for designing and performance layer based on Struts, Hibernate, Spring and ExtJs , in the paper. Finally, the paper points to the problems when refer to making the system more perfect and further work to be done in the current Content Management Subsystem of the Video and Document Management System. Finally, the paper discusses the points to be perfected and the problems to be further studied in the current in the current Content Management Subsystem of the Video and Document Management System.Keyword: Video and Document Management System MVC SSH Ajax_目 录第一章 绪论31.1 项目背景31.2 项目研究内容31.3 论文结构4第二章 相关理论与技术62.1 相关理论简介62.2 Struts2的核心技术62.3 Hibernate的核心技术82.4 Spring的核心技术92.5 AJAX技术102.6 SSH集成框架11第三章 需求分析123.1系统需求分析123.1.1 系统角色123.1.2 需求分析123.2 本章小结15第四章 系统总体设计164.1 系统架构总体设计164.1.1 传统开发框架到SSH框架164.1.2 SSH框架构建设计174.1.3 SSH架构在系统中的应用194.1.3 SSH架构的优势与不足204.2 系统数据库设计214.3 系统持久层总体设计234.3.1 系统持久层设计与实现234.3.2 DAO层设计与实现244.4 系统业务逻辑层总体设计274.5 系统表现层总体设计294.5.1 使用Ext的页面布局294.5.2 使用Ext支持的客户端表单验证294.5.3 Ext封装的Ajax技术的使用304.7 本章小节32第五章 系统具体实现335.1 类别管理模块具体实现335.1.1 持久层具体实现335.1.2 表现层具体实现335.2 文档管理模块具体实现345.2.1 持久层和控制层具体实现345.2.2 表现层具体实现355.3 日志管理模块具体实现375.4 权限管理模块具体实现385.4.1 控制层具体实现385.4.2 表现层具体实现385.5 系统附加功能具体实现395.5.1信息统计功能的实现具体实现395.5.2 系统定时清理功能具体实现395.6 本章小节40第六章 运行及测试416.1 系统部署情况416.2 系统日志功能运行情况426.3 系统核心功能测试与运行情况426.3.1 管理员管理功能测试与运行情况425.3.2 文档管理功能测试与运行情况445.3.3 权限管理功能测试与运行情况47第七章 结论与展望497.1 本文总结497.2 影像及电子档案管理系统建设的未来思考497.2.1 系统存在的不足497.2.1 系统的展望50致 谢51参考文献53_第一章 绪论1.1 项目背景电子档案以其现代化手段,在档案信息存储、输出、处理等方面,具有纸质档案无法比拟的优越性.网络化运用引起了电子档案的保密性、安全性、真实性、可靠性问题.因此,必须加强电子文件的管理。公司中存在着各种信息档案,而如今人们已经习惯用电脑办公,结果自然会产生大量的电子文件,但我们如果将更多的时间花费在寻找这些文件上,既费时又费力。同时,公司文档又关系到公司工作效率与利益问题,怎样有效管理电子档案成为我们必须研究与解决的问题。如今已有的电子档案管理系统存在的主要问题有:问题1:原有系统采用单一的Struts或其他的开发框架,这种方式缺少有效的模块集成手段,基于不同平台的模块很难集成,系统的可扩展性和伸缩性比较差。一旦系统需求分析发生变化(此时往往已经到了开发过程的中后期)或者系统需要扩展业务,原有系统的框架不能很好地解决这一问题。问题2:用户反映该系统的用户界面不够简洁,使用流程比较复杂。问题3:文档分类方法不恰当,危及文件信息资源的有效收集。问题4:系统功能不完善,直接影响文件信息资源的管理水。显然,根本的解决办法是完善系统开发框架、科学的文档分类管理与友善的用户操作界面。待开发的系统借鉴了原有系统的功能需求,但是在使用的开发框架和表现层方面对原有系统进行改进,使得系统更加完善。1.2 项目研究内容本文主要研究在影像及电子档案管理平台中隶属于影像及电子档案管理系统应用集成框架的影像及电子档案管理系统内容管理子系统的设计与实现,在整个过程中主要完成以下工作:1影像及电子档案管理系统内容管理子系统的整体设计。在研究国内外现有成果地基础上完成影像及电子档案管理系统内容管理子系统的整体设计和逻辑上的模块划分。2研究一套灵活的系统整体架构方案,以方便处理系统模块间的控制和数据的集成,解决原有系统可维护性和扩展性差的问题。将研究结果应用于实际系统开发,为提高影像及电子档案管理内容管理子系统的快速开发、可维护和扩展能力提供有效的支持。设计并实现影像及电子档案管理系统内容管理子系统整体后台框架,为整个系统提供架构支持。3在系统表现层方面,研究使用与后台进行异步交互的框架和能带来良好用户体验的技术,以提高页面良好的展示效果。4根据需求分析,设计实现影像及电子档案管理内容管理子系统核心功能,即文档管理功能,为其他模块提供技术借鉴与支持。5根据需求分析实现影像及电子档案管理内容管理子系统各功能。1.3 论文结构论文分为六章,各章主要内容如下:第一章:绪论。提出项目的背景,以及项目的研究内容和组织结构。第二章:相关技术概述。探讨了Struts、Hibernate、Spring、Ajax等相关理论。第三章:影像及电子档案管理系统内容管理子系统需求分析。简要说明了影像及电子档案管理系统内容管理子系统的需求分析和不同系统角色的具体功能需求。第四章:首先分析了影像及电子档案管理系统内容管理子系统架构的总体设计。重点介绍了基于SSH架构的影像及电子档案管理系统内容管理子系统总体架构的总体设计以及数据库设计。然后分别对系统持久层和业务逻辑层设计做了详细介绍。第五章:介绍了影像及电子档案管理系统内容管理子系统核心模块非共性的具体实现,重点讨论了使用了Ext框架的页面组织和实现过程。第六章:系统测试与运行。首先介绍了系统软硬件部署情况,然后以贯穿系统配置与部署的日志管理系统的运行情况说明系统是可实现的而且部署是成功的。最后以系统核心功能为例,使用测试用例对其进行了测试,分析了测试结果。最后总结了全文,指出了系统的需要改进的地方和进一步的研究方向。第二章 相关理论与技术2.1 相关理论简介 SSHSSH 在J2EE项目中表示了3种框架,既 Spring + Struts + Hibernate。 Struts2Struts21是在WebWork基础上发展起来的,是建立在称为XWork的Command模式框架之上的强大的基于Web的MVC框架(参见本章2.2节)。 HibernateHibernate2是一个开放源代码的对象关系映射框架,对JDBC进行了轻量级的对象封装,使得我们可以使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任(参见本章2.3节)。 SpringSpring3是一个开源框架,它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益(参见本章2.4节)。 AjaxAjax4全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。Ajax并不是一种新产生出来的技术,它实际上是由目前几种相对成熟的技术组合而成的。标准的Ajax包含:基于XHTML和CSS标准的表示。2.2 Struts2的核心技术Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:而且吸收了Struts 1和WebWork两者的优势。Struts2是一个优雅的,可扩展的JAVA EE Web5框架。框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。Struts2框架的核心是一个灵活的控制层,它基于以下标准技术,如:Java Servlet、JavaBean资源绑定、XML和各种Jakarta Commons包。Struts鼓励使用基于Model2方法的应用框架,它是一种经典的模型试图控制器的MVC模型。MVC是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件架构模式。它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。MVC视图如图:图2.1 MVC视图视图(View)代表用户交互界面。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个文档信息的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。模型(Model)表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用如EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能2.3 Hibernate的核心技术Hibernate是一种Java语言下的对象关系映射解决方案。 它是一种自由、开源的软件。它用来把对象模型表示的对象映射到基于SQL 的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。 Hibernate 不仅管理Java类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL 和JDBC 处理数据的时间。Hibernate对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,它既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。最具革命意义的是,Hibernate可以在应用EJB(Enterprise JavaBeans是Java应用于企业计算的框架)的J2EE架构中取代CMP,完成数据持久化的重任。2.4 Spring的核心技术Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。控制翻转IoC(Inversion of Control)/依赖注入DI(Dependence Injection)机制。IoC是指由容器中控制组件之间的关系(这里,容器是指为组件提供特定服务和技术支持的一个标准化的运行时的环境)而非传统实现中由程序代码直接操控,这种将控制权由程序代码到外部容器的转移,称为“翻转”。DI是对IoC更形象的解释,即由容器在运行期间动态地将依赖关系(如构造参数、构造对象或接口)注入到组件之中。Spring采用设值注入(使用Setter方法实现依赖)和构造子注入(在构造方法中实现依赖)的机制,通过配置文件管理组建的协作对象,创建可以构造组件的IoC容器。这样,不需要编写工厂模式、单例模式或者其他构造的方法,就可以通过容器直接获取所需的业务组件。Spring框架的结构如图2.2所示。图2.2 Spring框架模块组成Spring框架由七个定义明确的模块组成,且每个模块或组件都可以单独存在,或者与其他一个或多个模块联合实现。Spring Core Container是一个用来管理业务组件的IoC容器,是Spring应用的核心;Spring DAO和Spring ORM不仅提供数据访问的抽象模块,还集成了对Hibernate、JDO和iBatis等流行的对象关系映射框架的支持模块,并且提供了缓冲连接池、事务处理等重要的服务功能,保证了系统的性能和数据的完整性;Spring Web模块提供了Web应用的一些抽象封装,可以将Struts、Webwork等Web框架与Spring整合成为适用于自己的解决方案。Spring框架可以成为企业级应用程序一站式的解决方案,同时它也是模块化的框架,允许开发人员自由地挑选适合自己应用的模块进行开发。Spring框架式是一个松耦合的框架,框架的部分耦合度被设计为最小,在各个层次上具体选用哪个框架取决于开发者的需要。2.5 AJAX技术Ajax的核心是JavaScript对象XmlHttpRequest。它是一种支持异步请求的技术。JavaScript可以在不刷新页面的情况下从服务器获取数据,或者向服务器提交数据,灵活地实现了数据异步交互。我们知道,传统的Web应用是同步交互的方式。这种同步交互方式的处理过程如图2.3所示。图4.14 同步交互方式用户向服务器提交了一个处理请求时,服务器端接受到该请求后,和数据库服务器进行数据信息的交换,然后对请求处理进行相应,即将结果传送回发出请求的浏览器客户端,返回一个HTML页面在浏览器端进行显示。显然,这样的一种处理方式会给用户一种不连贯的体验,因为当服务器在处理请求的时候,用户多数时间只能处于等待状态,页面中显示的内容也只能时一片空白。与传统的Web应用不同,Ajax采用的是一种异步交互的处理方式。这种异步交互的处理过程如图2.4所示。图2.4 使用Ajax的异步交互模式Ajax相当于在浏览器客户端与服务器之间架设了一个桥梁,在它的帮助下,可以消除网络交互过程中的处理等待处理等待的缺陷。在处理过程中Web服务器响应是标准的且易于解析的XML格式的数据传递到Ajax,然后再转换成HTML页面的格式,辅助CSS进行显示。Ajax是传统Web应用程序的一个转变。Ajax可以所为客户端和服务器的中间层,来处理客户端的请求,并根据需要向服务器端发送请求,用什么就取什么、用多少就取多少,就不会有数据的冗余和浪费,减少了数据下载总量,而且更新页面时不用重载全部内容,只更新需要更新的那部分即可,相对于纯后台处理并重载的方式缩短了用户等待时间。2.6 SSH集成框架SSH(Spring + Struts + Hibernate)是典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。表现层是传统的JSP6技术,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。Web层,就是MVC7模式里面的控制器,负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现。Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。DAO层,负责与持久化对象交互。PO,持久化对象。通过实体关系映射工具将关系型数据库8的数据映射成对象,方便地实现以面向对象方式操作数据库,采用Hibernate作为ORM框架。Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。第三章 需求分析3.1系统需求分析3.1.1 系统角色根据影像及电子档案管理内容管理子系统的实际需求,系统整体的用户包括普通管理员、高级管理员以及普通用户、高级用户。而后台影像及电子档案管理系统内容管理子系统的用户角色为普通管理员和高级管理员。下面是对上述不同角色的需求分析。3.1.2 需求分析本小节分别说明普通管理员和高级管理员的需求分析。图3.1表示普通管理员系统功能用例图。图3.1 普通管理员系统功能用例图如图普通管理员功能分为登陆、类别管理、文档管理、日志管理、评论管理和用户管理。此角色的系统功能结构图为:普通管理员管理类别管理文档管理日志管理用户管理评论管理添加子类别更新类别信息删除类别添加文档更新文档信息删除文档备份日志清理日志修改类型修改状态查看评论验证评论登陆图3.2 普通管理员角色系统功能结构图具体功能分析如下:(1) 普通管理员需求分析。 管理员登录:不同的用户功能和权限不同,所以不同的用户必须先进行登录验证,只有验证通过才能够进行相关的操作。 文档类别管理(高级管理员授权情况下):普通管理员登录后可以对文档类别进行操作,例如:删除类别、在某一当前类别下添加子类别与修改类别信息。 文档管理(高级管理员授权情况下):普通管理员登录后可以对文档进行操作,例如:录入文档、修改文档基本信息、验证文档、修改删除与添加文件到某一当前文档、删除文档、高级选择查看文档等。 用户管理(高级管理员授权情况下):普通管理员登录后可以对用户进行管理,例如:查看用户、删除用户、查看用户上传文档等。 用户评论管理(高级管理员授权情况下):普通管理员登录后可以对用户的评论进行管理,例如:查看用户评论、删除多条用户评论和按关键字批量删除评论。 日志管理(高级管理员授权情况下):普通管理员登录后可以对管理员操作日志进行管理,例如:查看日志信息、备份日志与清理日志。(2) 高级管理员需求分析。图3.3表示高级管理员系统功能用例图图3.3 高级管理员系统功能用例图(省略了普通管理员的功能)高级管理员可以执行系统所有操作,除了普通管理员的所有需求外,还包括管理员管理和权限管理,此角色的系统功能结构图为:高级管理员管理管理员管理权限管理添加管理员修改管理员删除管理员修改权限图3.4 高级管理员系统功能结构图 管理员管理:高级管理员登陆后可以对系统管理员信息进行管理,例如:添加管理员、删除管理员和修改管理员信息。 权限管理:高级管理员登陆后可以对系统角色权限进行管理。3.2 本章小结本章主要介绍了影像及电子档案管理系统内容管理子系统的需求分析,按照不同的角色将功能需求用用例图的方式列出。然后为了更深入的了解系统需求,使用功能结构图对系统按角色进行了功能分析。第四章 系统总体设计4.1 系统架构总体设计根据需求分析,这一节详细讨论了影像及电子档案管理系统内容管理子系统的总体架构设计方案。4.1.1 传统开发框架到SSH框架经典的网站系统是基于Struts+Hibernate的框架进行设计和开发的。这种开发框架的好处是实现简单,业务逻辑清晰,开发人员使用起来很容易。因此在实际开发时可以把后台业务逻辑代码放到设计好的JavaBean中,按照上述功能结构图的模块划分方式,每个模块都是一个单独的JavaBean类,控制层代码直接使用这些类完成实际功能。虽然上述的开发框架可以很好的解决电子档案管理中的应用开发面临的问题,但是实际应用表明这存在着一些弱点。首先是复用的层次较低,开发框架主要着眼于对象类的复用,而这些复用是代码级的复用,代码级的复用方式带来的坏处是涉及实现细节,不支持可插拔的软件构件思想;其次是粒度较小,开发框架中主要实现的是一些通用功能或者常规操作,没有比较大粒度的构件复用,虽然存在一定程度的独立的业务代码类,但是依然离不开实现细节;最后就是使用人员的定位问题,使用开发框架的基本上是了解熟悉此类框架的软件开发专业技术人员,而对于不熟悉这种开发框架的业务人员而言,无法满足他们随着需求变更修改系统或者自主开发小应用的需要。为此,本文提出了比开发框架层次更高的SSH框架构件平台来实现具体的应用。SSH框架构件平台主要是为了适应复杂多变的公司文档信息管理的业务需求而提出的业务支撑平台,该平台的目标是支持开发人员通过统一的业务平台快速构建影像及电子档案管理系统的业务流程,实现公司内部影像及电子档案管理的业务整合和数据整合,最终形成一个统一的立体式的影像及电子档案管理系统。4.1.2 SSH框架构建设计这一节以影像及电子档案管理系统内容管理子系统为例,进行SSH框架应用的研究。SSH框架规划的出发点完全不同于现有的建模和组件的方案设计。传统的网站系统设计是:当软件的设计和开发人员在拿到业务需求后,会立即想到是不是需要使用Struts的MVC结构,是使用EJB还是使用Hibernate,是使用什么样的服务器和数据库等。然后系统架构师和每个业务人员进行沟通并且划分每个业务模块,业务人员再向每个模块填写相应的代码。这样,使得业务从属于技术,业务功能受到具体技术的限制,业务和技术是紧耦合的。这样的设计使得很多网站系统受到技术的限制,一旦系统需要改进技术或者技术被淘汰,他们的业务也会跟着发生变化或者淘汰。SSH框架规划旨在减轻开发人员重新建立解决复杂问题方案的负担和精力;它可以被扩展以进行内部的定制化,提高开发效率并容易实现系统的可扩展性与可维护性。下图为系统基于SSH框架的层次关系图: 图4.1 应用框架的层次关系图层次结构图给出了应用框架的层次关系,应用框架由上向下可分为持久层、逻辑层、业务层、控制层和表现层。其中上层构件为下层提供了独立完整的功能,下层构件无需了解上层构件内部的实现细节,只需要调用其提供的明确定义的接口和方法来实现自己的功能。应用框架的分层机制负责将用户的业务需求分为相对独立的层次化模块,支持开发人员方便快速地开发相对独立的业务单元。基于MVC模式,系统分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。表现层使用基于JSP显示,ExtJs组件为主体的开发模式。中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。Web层,就是MVC模式里面的“C”(controller),系统中对应Action层。负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现。Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。DAO层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作,采用数据库中间件Hibernate完成对底层数据库应用的封装,通过一致的规范接口,将底层数据库与业务逻辑分离开来,为应用系统的业务代码开发提供了数据层支持。PO,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架,并使用注解方式实现数据映射配置。Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,依靠Spring依赖注入特性Web层中注入Service、Service层中注入DAO、DAO层中注入HibernateTemplate,其数据服务层用来存放数据。为了提高系统的可扩展性与可维护性,在DAO层与Service层分别抽取出接口层和接口实现层。4.1.3 SSH架构在系统中的应用图4.2是影像及电子文档管理系统的整体架构图。图4.2 影像及电子文档管理内容管理子系统的整体架构图下面是对图4.2中各层的角色及功能说明。(1)View层:影像及电子文档管理内容管理子系统的视图展示,用户页面采用Ext框架进行组织,数据从后台转发过来使用JSP的方式,然后在客户端转换成HTML页面的格式,借助JavaScript和CSS进行显示。(2)Controller层:影像及电子文档管理内容管理子系统的控制层,使用Struts的控制层来进行业务流程控制。控制器是应用系统处理具体流程和导向的核心部分。它把模型对象给出的信息转换成视图可以理解的形式,并且处理系统流程的走向。在这里使用struts.xml配置文件来定义业务流程,使用Action类调用相应的Web Service来实现这些具体功能。(3)Model层:影像及电子文档管理内容管理子系统的模型层,实现具体的业务逻辑。模型包含应用程序的核心功能,封装了应用程序的状态,它对视图或控制器一无所知。数据库中间件方面,系统定义了Dao层,使用集成封装的HibernateTemplate实现数据操作。系统使用Annotation(注解)方式配置实体类与数据库的映射关系,包括主键生成策略、表与表的级联关系配置等。4.1.3 SSH架构的优势与不足传统的网站系统采用单一的Struts+Hibernate框架进行设计和开发,在这种方式下,客户端代码和业务逻辑代码混杂在一起,而且模块化划分不够灵活,各个业务模块之间的耦合度较高。传统的应用没有完全遵循软件可重用性的原则,可重用性仅仅体现在本地的代码可重用性,而对于更广范围的数据和代码的可重用性,并没有相应的支持。与传统的网站系统应用相比,基于SSH框架的影像及电子档案管理系统内容管理子系统架构有如下优点:1 发效率高一个良好的框架可以让开发人员减轻重新建立解决复杂问题方案的负担和精力;它可以被扩展以进行内部的定制化;并且有强大的用户社区来支持它。框架通常能很好的解决一个问题。2 后期维护效率高软件工程不同于传统的工业,例如电器、建筑及汽车等行业。这些行业的产品一旦开发出来,交付用户使用后将很少需要后续的维护。软件产品的后期运行维护是个巨大的工程。传统的ASP和 PHP等脚本站点技术,将整个站点的业务逻辑和表现逻辑都混杂在ASP或PHP页面里,从而导致页面的可读性相当差,可维护性非常低。但采用严格分层J2EE架构,则可完全避免这个问题。对表现层的修改即使发生错误,也绝对不会将错误扩展到业务逻辑层,更不会影响持久层。因此,采用J2EE分层架构,即使前期的开发效率稍微低一点,但也是值得的。 3 系统结构性强Struts提供标准的MVC架构模式,Hibernate实现底层数据映射与数据业务操作,而Spring则贯穿于整个项目各个层次中,作为一个轻量级容器管理各个层次。系统结构脉络清晰。4 系统需求扩展性强几乎所有的软件需求都是在变化的。客户对软件需求,是随着软件开发过程的深入,不断明晰起来的。因此,常常遇到软件开发到一定程度时,由于客户对软件需求发生了变化,使得软件的实现不得不随之改变。当软件实现需要改变时,是否可以尽可能多地保留软件的部分,尽可能少地改变软件的实现,从而满足客户需求的变更?答案是采用优秀的解耦架构。这种架构就是J2EE的分层架构,在优秀的分层架构里,控制层依赖于业务逻辑层,但绝不与任何具体的业务逻辑组件耦合,只与接口耦合;同样,业务逻辑层依赖于DAO层,也不会与任何具体的DAO组件耦合,而是面向接口编程。采用这种方式的软件实现,即使软件的部分发生改变,其他部分也尽可能不要改变。另一方面,在传统的程序结构中,只要有一点小的需求发生改变,将意味着放弃整个页面,或者改写。采用Hibernate作为持久层技术的最大的好处在于:可以完全以面向对象的方式进行系统分析、系统设计。5 系统技术扩展性强Struts、Hibernate、Spring都是开源框架,这同样是优势之一。如Struts支持多种插件,在本系统中使用到了JfreeChart实现了系统统计的功能。更高的系统灵活性 系统的页面和服务开发相互分离,这就使得在需求确定的情况下,系统的表现层和服务层的开发能够同时进行,大大减少了系统开发周期。另外,页面和业务的分离降低了表现层和服务层的耦合度,一旦页面发生改变,服务层根本不需要改变,这样也使得系统具有很好的灵活性。采用上述架构的影像及电子档案管理系统内容管理子系统也存在以下不足:(1) 由于系统开发框架集成了许多封装之后的组件,系统内存开销比较大。(2) 表现层大部分采用JS技术,由于编码与调试效率不高等因素,开发效率有一定影响。(3) 灵活的开发方式必然是以开发的复杂性为代价的,影像及电子档案管理系统内容管理子系统开发起来相对复杂。4.2 系统数据库设计系统ER图如下图: 图4.3系统ER图由上图可知,系统核心关系表是,文档类别表、文档表、文件表和文档评论表。面对对象关系模型图中个别属性和类之间的相互关系进行说明: 管理员类(Admin):存放管理员信息,其中id是主键,privilege是权限级别,系统分为高级管理员和普通管理员两个级别。 文档类别类(Category):存放文档类别信息,id是数据库表中的主键,没有实际意义。parentId是父类别的id值,hasChild是否有孩子节点,这两个属性可以实现类别树形结构的显示。state表示类别的状态,0表示正在审核中,1表示通过审核并使用,2表示禁用。 文档类(Vd):系统核心表,存放文档信息,flag标识上传者是用户还是管理员,uploaderId记录上传者id,level标识文档的保密级别。 文件类(File):记录文件信息,vd_id标识所属文档。 权限类(Privilege):存放系统角色权限信息。marker记录权限标识字符,用于和系统角色权限匹配从而判断是否有其权限。selectM、selectU、selectV分别表示普通管理员、普通用户。高级用户是否有此权限,0表示没有,1表示有。 日志类(Log):记录日志信息。adminName记录操作人员的姓名,content记录操作明细。 用户类(User)记录用户信息。vip表示是否是vip,1表示是,0表示不是。 评论类(Comment):记录文档的评论信息。 表间关系:文档表与文件时一对多关系,与文档类别是多对一关系,与评论是一对多关系,与用户是多对一关系,与管理员时多对一关系。4.3 系统持久层总体设计4.3.1 系统持久层设计与实现图4.5是影像文档管理内容管理子系统的总体类图。图4.5影像文档管理内容管理子系统的类图从图中可以看出系统核心的类为文档类,与它相关的包括文档类别类、文件类、管理员类、用户类、评论类,而与用户和管理员相关的有权限类,最后日志类是系统类是独立的一个类。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate9作为ORM框架。它将数据库中的表映射到java里的实体类,从而实现用面向对象的思想来操作数据库。避免了在面向对象的语言中使用面向过程的SQL语句带来的不便,降低了代码的复杂性。Hibernate从实体到表的映射是通过映射文件来完成的,映射文件将一个POJO类映射到数据库中相应的表,类中的每个成员变量必须有自己的getter和setter方法,完成类的持久化和表中数据的取出工作。使用注解方式配置实体类与数据库表的映射关系,包括主键生成策略、表与表的级联关系等。并且通过配置把每个实体类交给Spring容器统一管理。关键配置代码与解释:A Entity /表示此类为持久化对象类B Id /定义此字段为表主键GeneratedValue(strategy=GenerationType.IDENTITY) /定义主键生成策略为自增。C OneToMany /定义表的级联关系为一对多4.3.2 DAO层设计与实现DAO层基于Hibernate中间件HibernateTemplate实现了持久化类基本的CRUD操作。为业务逻辑层提供方便通用的接口。为了后期扩展的灵活性,我们把DAO层分为DAO接口层和DAO实现层,分别定义和实现了数据库操作方法。我们以文档管理模块的DAO层接口设计与实现为例介绍一下整个系统的各功能模块DAO层接口的设计与实现。文档管理模块DAO层接口包括:实现添加文档、删除文档、更新文档信息、查看文档、搜索文档等功能;具体接口的函数定义如表4.1到表4.9。表4.1是add函数。表4.1 add函数函数名称Add功能添加新文档参数vd:文档类型返回值Void 表4.2是delete函数。表4.2 delete函数函数名称Delete功能删除文档参数vd:文档类型返回值void表4.3是deleteById函数。表4.3 deleteById函数函数名称deleteById功能通过文档Id删除文档参数int:文档Id返回值void表4.4是update函数。表4.4 update函数函数名称Update功能更新文档参数vd:文档对象返回值void表4.5是loadById函数。表4.5 loadById函数函数名称loadById功能通过文档Id返回一个文档记录参数id:文档Id返回值vd:文档对象备注如果查找成功返回一个文档对象,否则返回null表4.6是loadPageAll函数。表4.6 loadById函数函数名称loadPageAll功能返回文档列表的某一页数据集参数start:数据起始索引;limit:数据集中数据的数目返回值PagerModel:自定义对象,保存分页显示时当前页面的数据集备注如果查找成功返回一个PagerModel,否则返回null表4.7是loadPageByUser函数。表4.7 loadPageByUser函数函数名称loadPageByUser功能返回某一用户所有上传文档列表的某一页数据集参数start:数据起始索引;limit:数据集中数据的数目;userId:用户Id返回值PagerModel:自定义对象,保存分页显示时当前页面的数据集备注如果查找成功返回一个PagerModel,否则返回null表4.8是loadPageCategory函数。表4.8 loadPageCategory函数函数名称loadPageCategory功能返回某一类别下文档列表的某一页数据集参数start:数据起始索引;limit:数据集中数据的数目;categoryId:类别Id返回值PagerModel:自定义对象,保存分页显示时当前页面的数据集备注如果查找成功返回一个PagerModel,否则返回null表4.9是loadPageHighSearch函数。表4.9 loadPageHighSearch函数函数名称loadPageHighSearch功能返回某一类别下文档列表的某一页数据集参数start:数据起始索引;limit:数据集中数据的数目;categoryId:类别Id;key:查询关键字;startD:开始时间;endD:终止时间;type:查询方式返回值PagerModel:自定义对象,保存分页显示时当前页面的数据集备注如果查找成功返回一个PagerModel,否则返回null4.4 系统业务逻辑层总体设计Service层(就是业务逻辑层)是系统业务逻辑的核心,在DAO层的基础上进行业务逻辑处理。下面详细讲解Service层的设计与实现。我们把系统业务逻辑功能模块看作为独立的服务模块,将系统的业务且封装为8个松散耦合的服务,每个子服务可以是相关,但是每个服务之间基本上是独立的。这8个服务子服务接口分别是:管理员管理服务接口、文档类别管理服务接口、文档管理服务接口、文件管理服务接口、用户管理服务接口、评论管理服务接口、日志管理服务接口、权限管理服务接口。图4.54.12是粗粒度的服务接口方法划分。图4.5是管理员管理服务接口方法划分。该接口包括登陆验证、获得管理员对象、添加管理员对象、更新管理员对象、查看管理员列表和删除管理员对象这些方法。图4.5 管理员管理服务接口图4.6是文档类别管理服务接口方法划分。该接口包括添加子类别、删除类别、查看类别信息和修改类别信息的方法。图4.6 课程管理服务接口图4.7是文档管理服务接口方法划分。该接口包括添加文档、删除文档、查看文档和修改文档的方法。图4.7文档管理服务接口图4.8是文件管理服务接口方法划分。该接口包括添加文件、删除文件、查看文件和更新文件的方法。 图4.8文件管理服务接口图4.9是用户管理服务接口方法划分。该接口包括查看用户、查看所有用户、删除用户、修改用户类型的方法。图4.9用户管理服务接口图4.10是评论管理服务接口方法划分。该接口包括查看用户评论、查看文档评论、删除评论、批量模糊删除评论的方法。图4.10 评论管理服务接口图4.11是日志管理服务接口方法划分。该接口包括添加日志、查看日志、备份日志和清理日志的方法。图4.11 日志管理服务接口图4.12是权限管理服务接口方法划分。该接口包括查看系统角色权限、修改角色权限的方法。图4.12权限管理服务接口4.5 系统表现层总体设计4.5.1 使用Ext的页面布局(参见第二章2.5.4节)。在影像及电子档案管理系统内容管理子系统中使用Jsp与Ext结合使用,例:页面文件:/admin/Admin_manage.jsp;Ext文件:/admin/js/admin_manage.js;Ext应用在本系统中使用的原因及其优点和缺点:基于传统Jsp,要想开发出美观、用户体验较好的页面比较难而且开发时间比较长。Ext是基于Web的富客户端框架,其完全是基于标准W3C技术构建设的,使用到的都是HTML、CSS、DIV等相关技术。Ext最杰出之处,是开发了一系列非常简单易用的控件及组件,我们只需要使用这些组件就能实现各种丰富多彩的UI的开发。由于Ext属于Javascript技术,自然带来了长久以来公认的编码效率慢、代码调试与维护比较困难的缺点。4.5.2 使用Ext支持的客户端表单验证Ext自我封装了部分表单验证。Ext.form.TextField组件定义“allowBlank”属性表示用户输入能否为空,定义“blankText”属性显示当不允许为空而输入为空的信息,定义“minLength”属性表示最少允许输入的字符数,定义“maxLength”属性表示最多允许输入的字符数。关键示例代码为:allowBlank:
展开阅读全文