Struts和Hibernate在文档访问控制系统中的应用.docx
- 文档编号:27403981
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:56
- 大小:588.83KB
Struts和Hibernate在文档访问控制系统中的应用.docx
《Struts和Hibernate在文档访问控制系统中的应用.docx》由会员分享,可在线阅读,更多相关《Struts和Hibernate在文档访问控制系统中的应用.docx(56页珍藏版)》请在冰豆网上搜索。
Struts和Hibernate在文档访问控制系统中的应用
第一章引言
1.1文档访问控制管理的现状
当今社会信息资产成为企业组织生存发展的动力源泉。
围绕信息的控制和利用已成为企业间利益争夺的一场重要战场。
保护企业组织的信息资产,保护知识产权不受侵犯,就显得异常重要。
特别是随着现代企业制度的建立、企业规模的扩大、企业管理规范化、企业横向交流的加强,企业活动越来越依赖于文档,信息资产保护的风险也越来越大。
如何管理好文件档案,使之为企业发展发挥更大的作用,既能拥有信息公开所带来的便利性,又能防止数据的流失和泄露,成为人们越来越重视的问题,很多企业都在努力寻找一种两全其美的安全策略。
因此,提高企业组织信息资产的管理技术业成为企业管理不可缺少的重要课题之一。
电子文档的采用提高了工作效率。
目前大多数跨国公司、跨地区公司、各分区公司之间主要通过传真和电子邮件进行两地之间数据传递。
互联网中的“黑客”、病毒等因素的存在,严重威胁着电子邮件的可靠性和安全性,而其它人为因素造成的数据散失、丢失、被盗等危险性的存在,都会给企业组织带来不可估量的损失。
因此,增强电子文档的保密性和安全性成为文档管理的首要考虑问题。
如果文档处理的安全功能比较单薄,很多人就可以阅读文档的所有内容甚至对文档做出更改。
然而实际中文档信息并不应该是所有人可读写的,不同的人对不同部分的权限也会不同。
更为重要的是,用户无法确认文档的真实性、完整性和可鉴别性。
在主机操作系统内部有很多实现访问控制的技术,用来保证对操作系统资源的授权访问。
但是随着应用的复杂化、网络化,在应用系统中仍然需要研究适用于应用本身的访问控制模型,不同的应用使用不同的访问控制模型和方法,访问控制模型的选取依赖特殊的环境需求。
如军事上使用强制策略模型,银行使用商业完整性策略模型,每一种情况都模拟了他们自己单一目的的安全控制需求。
在一个大的组织内部可能需要多个访问控制方法,甚至还不能满足需求,仍然需要研究新的方法。
目前普遍使用的模型主要有强制访问控制模型、自主访问控制模型、基于角色的访问控制模型,这些模型的表示方法都不同。
电子文档的安全问题发生在两个场合:
动态的传输途中、静态的存储形式。
解决网络信息安全问题的主要途径是利用密码技术和网络访问控制技术[1],它们依靠各种不同的方法来具体实现,达到以很小的代价提供很大的安全保护的目的。
对于电子文档的传输安全,可以通过数据加密技术先加密再传输,也可以通过数字签名技术保证电子文档的合法性和完整性。
对于电子文档的存储安全,需要加密技术和认证技术相结合,实现电子文档的存储加密和访问控制。
1.2文档访问控制管理的问题
目前的文档访问控制管理多数是目录式的自主访问控制[2],它允许主体针对访问资源的用户设置访问控制权限,用户对资源的每次访问都会检查用户对资源的访问权限,只有通过验证的用户才能访问资源。
自主访问控制是基于用户的,灵活性强,但是用户在没有系统管理员介入的情况下,就拥有设定其他用户访问其所控制信息资源的能力,因此控制就具有很大的任意性。
但是它的存在着不能保证信息传输的安全性等隐患,因为入侵者有很多方法绕过验证来获得资源。
如一个用户能读取某些数据,然后就可以把这些数据转发给其他原本没有这一权限的用户。
这是因为自主访问控制策略本身没有对已经具有权限的用户如何使用和传播信息强加任何限制。
此外,这种访问控制方式的权限无法在分布的应用中和远程应用中使用,同时,文档所有者没有管理文档访问控制的权限。
应用系统负责权限的发放和使用,造成权限真正的拥有者不能及时有效的更改或发布实时的权限信息。
如果通过互联网对用户身份进行认证,并根据用户身份分配不同权限,将所有加密文件置于管理之下,就能很好的解决文档访问控制问题。
1.3本文的研究意义
本文研究的文档访问控制(DataKeyServer简称DKS)为企业电子文档(主要研究PDF文档)信息的安全性管理提供了很好的解决方案。
它与现有的以目录为单位的访问控制不同,是以文件为单位进行管理的全新创意,在强制策略系统中,高安全等级数据传播到低安全等级是受到限制的。
在自主访问控制策略环境中,为了保证安全,默认参考设置是拒绝访问,以提高信息的安全性。
不允许主体干涉的访问控制类型。
它是基于安全标识和信息分级等信息敏感性的访问控制,通过比较资源的敏感性与主体的级别来确定是否允许访问。
系统将所有主体和客体分成不同的安全等级,给予客体的安全等级能反映出客体本身的敏感程度;主体的安全等级,标志着用户不会将信息透露给XX的用户。
应用权限的赋予和撤销是在访问控制应用中产生的。
在动态分配中,文档所有者或管理员可根据实际需要对用户的角色及角色的权限进行自定义和设定,具有较强的灵活性和良好的适应能力。
文档访问控制系统中,作者可以对文档全部或部分内容确定允许访问的用户、访问权限(读、写、加密、修改,数字签名、复制、打印及添加附件等)、访问有效期等。
只有作者具有添加、修改、取消用户的访问控制权限,可以对文件进行周密详尽的管理。
由于访问权限在任何地方都有效,离开了服务器和数据库的文件也能够保持机密,可以有效地防止信息的泄露。
另外,还设置严密的监视访问历史日志记录,管理访问情况,一旦出现问题,可以有效查证,进一步提高了信息价值。
在电子商务时代的今天,文档访问控制管理的重要性和安全性对访问控制的数据库设计与维护提出了挑战。
应用广泛的J2EE技术(包括JSP,Servlet,EJB,Webservices)给Web应用程序的开发提供了非常灵活的选择[3]。
如何把这些技术组合起来形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。
长期以来,Java开发者致力于找到一种完美的Web层应用框架,从而规范这一层软件的开发。
Struts是一种优秀的J2EEMVC架构方式,它的taglib标记库灵活性大,大大提高了开发效率。
同时利用ActionServlet配合Struts-config.xml实现对整个系统导航,使系统脉络更加清晰,增强了开发人员对系统的整体把握,提高了系统的可维护性和可扩充性。
基于Strtus的种种优势,目前它已成为Web应用开发中最为流行的框架之一。
在现行的软件系统中,普遍采用了面向对象的开发方式[4]。
作者在实际开发的过程中,也感受到了这种方法的威力。
但同时,由于缺少面向对象数据库的支持,也感到数据库访问成为了整个开发过程中的一个瓶颈。
数据库访问的代码的重用性不强,几乎要为每个不同的对象写完全不同的数据库访问代码。
在系统维护中,关系数据库的局限性体现得更为明显。
即使数据库的结构只发生了微小的变化,例如为某个数据表添加了一个字段,也必须重写大部分的代码。
这大大损害了面向对象方法的优势。
面向对象思想在当今应用程序开发中占有主导地位,大部分的企业级应用都是建立在数据库基础上,因此数据库的对象化为构建企业级应用提供极为便利的条件。
数据库对象化的方向有两个:
一种在主流关系数据库的基础上加上对象化特征,使之提供面向对象的服务,但访问语言基于SQL;另一种方向是用全新的面向对象概念设计数据库[4],即对象型数据库ODBMS。
由于当前对象型数据库没有得到广泛的应用,在企业级应用中关系型数据库仍处于主流地位,所以,在企业级系统中,应用对象关系映射(ObjectRelationalMapping,ORM)框架对关系型数据库对象化,实现持久层数据的对象化处理具有极为重要的意义。
在J2EE架构体系中,可以用对象关系映射框架表示持久性数据,从而实现关系型数据库的对象化。
围绕对象关系的映射和持久性数据的访问,在Java领域中发展起来了一些API和框架。
JDBC是访问持久性数据层最原始、最直接的方法。
在企业级应用开发中,可以使用DAO(DataAccessObject)模式来把数据访问封装起来,然后在其它应用层中统一调用。
这种方式的优点是运行效率最高,缺点是把DAO对象和SQL语言紧密耦合在一起,使得在大项目中难以维护。
EntityBean是J2EE平台中用来表示和访问持久性数据的方式,但是在实现上有一定的难度,开发效率不高,需要在EJB容器里运行EntityBean,并且对于不同的应用服务器,需要重新书写不同的部署描述,使得在不同应用服务器间移植企业级应用存在一定的困难。
Hibernate是一种新的ORM映射工具,它同时提供了从Java类到数据表的映射和数据查询、恢复等机制,实现数据层对象的持久性。
相对于使用JDBC和SQL来手工操作数据库,使用Hibernate可以大大减少操作数据库的工作量。
而且Hibernate可以和多种Web服务器以及应用服务器良好集成。
Hibernate是开放源代码的对象关系映射框架,是JDBC的轻量级对象封装。
它按照IGPL许可证发布的开放式源代码应用程序,是用于Java的超高性能的对象关系持久性和查询的服务。
应用Hibernate可以使得Java程序员方便用对象编程的思想将持久性对象映射到关系数据库,而不必花费大量的开发时间去更新和维护复杂的数据持久层,降低J2EE架构应用软件开发的难度和复杂度,提高Java应用软件的开发效率,进而使Java的企业级应用开发更加容易、功能更加灵活强大。
由此可见,将Struts结构模式与Hibernate对象关系映射框架结合起来实现文档访问控制管理系统的构建,可以提高数据库的持久性,降低系统构架难度,增强用户访问的灵活性,提高企业文档控制的安全性和可靠性,并有广阔的后续升级开发空间。
因此本文的研究具有较强的实际应用价值。
1.4本文的主要内容
本文结合在文档管理理论、实用技术和知识表示与共享等方面的一些新理论、新方法,研究分析了企业应用对文档管理系统的要求,设计了企业级文档管理系统的基本框架和主要部件,实现了主要的功能模块。
主要的研究思路是:
在设计开发文档访问控制系统的同时,综合考虑无缝结合、代码重用、系统管理、操作简便以及应用安全与后期维护等技术要素,采用了Java2企业版(J2EE)技术开发应用系统作为文档管理系统的开发平台,采用了MVC的开发模式和对象关系映射框架。
而Struts作为基于Servlet,JSP以及标签库等技术的一个实现良好的MVC框架,和Hibernate实现对象关系映射很好的将面向对象的设计与用户接口隔离,对大型的复杂的Web系统而言,可大大方便代码开发和管理。
也正是鉴于此特性,在设计文档访问控制系统权限管理时,使整个系统构建于Struts框架之上,而不再采用传统JSP,Class文件的简单堆砌方式和JDBC等数据库操作。
论文主要以文件访问控制系统(DataKeyServer)的开发平台为背景,通过对当前软件开发过程中的各种技术问题及发展的分析,结合国内在软件技术和模式,提出了新的技术组合开发模式。
研究内容将以DatakeyServer的具体实际开发为载体,具体研究包括软件框架和持久性框架选择、软件框架和持久性框架的实现机理及应用功能特点、软件框架和持久性框架在构建软件系统中的地位与作用、具体的构建模型分析、及Struts和Hibernate与其他相关软件框架和持久性框架技术的比较、基于Struts和Hibernate的主要优势和缺点分析、Struts和Hibernate在WEB开发中的实际作用和软件开发的深远意义,并介绍一个具体的文件访问控制应用软件的开发过程。
用户对文档访问权限信息保存在DKS服务器数据库中,用户打开文档前登录服务器认证,认证成功的用户获取文件存取的密钥和对该文件的访问权,然后按访问权打开该文档。
本文主要解决的问题就是将Struts和Hibernate有机的结合起来实现企业文档访问控制系统的后台数据库设计及维护处理。
1.5本文的章节安排
本文共分为五个章节,详细地探讨了文档访问控制的问题现状、业务需求、系统设计、基于Struts框架和Hibernate的文档访问控制系统的设计与实现、总结和展望开展了以下工作:
第一章引言部分,主要介绍了本文的研究背景—文档访问控制的研究现状以及存在的问题,说明了课题的研究意义,提出了本文的主要工作,最后简要说明了论文章节安排。
第二章主要阐述了Struts应用框架和Hibernate对象关系映射框架两种技术的体系结构、特点及其工作原理。
为以后章节的系统设计及其实现做好理论准备。
第三章首先阐明了本文研究的文档访问控制系统的功能,以此为基础,提出了系统结构、服务体系结构、数据库及数据映射的设计。
第四章以实际技术实现上章的系统功能。
综合Struts和Hibernate在web开发中的系统框架,设计出基于Struts和Hibernate的文档访问控制系统,最后详细阐述系统的实现过程。
第五章对论文的工作进行了总结,并且对系统的不足之处进行了分析,对未来的工作进行了展望。
第二章Struts应用框架和Hibernate
伴随着软件开发技术的发展。
通过采用组件技术,复杂的系统可以由易扩展、可重用、具有结合性的小系统组成。
组件通常设计成框架(Framework)的一个组成部分,框架的作用是将独立的组件结合在一起形成应用程序进行发布。
选择一个好的框架,开发人员只需在限制的范围内编写相应业务组件,框架管理这些组件之间的协作,从而得到结构良好、质量可靠的应用。
面向对象技术是应用于软件系统开发的最常见的技术之一[4]。
面向对象数据库管理系统(OODBMS)及对象关系型数据库管理系统(ORODBM)虽然已经进入了商业化应用,但是与关系数据库系统(RDBMS)相比仍欠普遍[5]。
由于传统和性能的考虑,关系数据库仍然是许多人青睐的进行持久信息存储方法,并且在较长时间内这种情况不会改变。
因此,通常需要把对象存入关系型数据库中以实现对象持久化。
对于面向对象的数据库应用开发一般有两种策略,即基于面向对象的数据库和基于关系数据库[6]。
由于面向对象的数据库技术还不成熟,开发者大多还是采用基于关系型数据库的策略。
这样,就必须用持久层实现面向对象数据库的操作,需要处理关系数据库中各个表之间的错综复杂的关联关系。
所以合理设计持久层是一个至关重要的问题。
持久层的开发目前流行的语言有:
JDBC、EJB、JDO等。
2.1MVC设计模式
MVC(Model-View-Controller)是一种目前广泛流行的软件设计模式,它源于Smalltalk-80,它将事务逻辑同数据表示层分离,同时也将应用的行为(即触发事务处理的事件)单独分离出来,形成模型/视图/控制器(Model/View/Controller)结构,简称MVC结构[6]。
近来,随着J2EE的成熟,它正在成为在J2EE平台上推荐的一种设计模型,也是广大Java开发者非常感兴趣的设计模型,并且受到越来越多开发者的欢迎[7]。
MVC设计模式的应用架构把应用系统划分为三个相互协调的部分[11]:
模型(Model),包含应用程序的核心功能,封装系统的状态;视图(View),是模型的动态表示,并提供用户交互界面。
当模型状态发生变化时,视图应该得到通知,以便更新视图;控制器(Control),接受来自视图的请求,修改模型的状态。
它强制性的使应用程序的输入、处理和输出分开,它们各自处理自己的任务。
2.1.1MVC模式概述
MVC(Model-View-Controller)把应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样,应用被分成三个层:
模型层、视图层和控制层。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。
随着应用的复杂性和规模性,界面的处理也变得具有挑战性。
一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。
业务流程的处理交予模型(Model)处理。
如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。
模型(Model)就是业务流程/状态的处理以及业务规则的制定。
业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。
业务模型的设计可以说是MVC最主要的核心。
目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。
它仅仅说明按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。
对开发者来说,就可以专注于业务模型的设计。
MVC设计模式就是把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。
抽象与具体不能隔得太远,也不能太近。
MVC并没有提供模型的设计方法,而只提供组织管理这些模型的思路,以便于模型的重构和提高重用性。
业务模型还有一个很重要的模型——数据模型。
数据模型主要指实体对象的数据保存的持续化。
如将一张订单保存到数据库,从数据库获取订单,然后将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。
划分控制层的作用也很明显,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。
控制层并不做任何的数据处理。
如用户点击一个连接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。
因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
2.1.2MVC设计模式的优点
大部分用过程语言(比如ASP、PHP)开发出来的Web应用,初始的开发模板就是混合层的数据编程。
如直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。
产品设计弹性力度很小,很难满足用户的变化性需求。
MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。
MVC组件类型关系和功能如图2.1所示。
通过图可以清晰看出设计模式的优点:
1、有多个视图对应一个模型的能力。
在目前用户需求的快速变化下,可能有多种方式访问应用的要求。
如订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样,也就是说订单的处理是一致的。
按MVC设计模式,一个订单模型以及多个视图即可解决问题。
这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。
2、由于模型返回的数据不带任何显示格式,因而这些模型可直接应用于接口。
3、由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。
一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。
控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此控制层可以说是包含了用户请求权限的概念。
4、有利于软件工程化管理。
由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。
但是MVC是一个非常复杂的系统,所以最好选择现成的框架来开发采用基于它的WEB应用,Struts就是一个非常不错的MVC应用框架。
图2.1MVC组件类型关系和功能
2.2Struts应用框架
Struts框架是Apache组织的一个开放源码项目,它提供了对开发MVC系统的底层支持,采用的主要技术是Servlet,JSP和定制标记库(taglibrary)。
Struts是一组相互协作的类、servlet和JSP标记的整合,它们组成一个可重用的MVCModel2设计结构。
这表明Struts是一个框架,而不是一个库,但Struts也包含了丰富的标记库和独立于该框架工作的实用程序类,为开发人员提供一个开发MVC模式的应用框架[12]。
2.2.1Struts概述
Struts这个名字来源于在建筑和旧式飞机中使用的金属支架,目的是为了帮助开发人员减少在运用MVC设计模式来开发Web应用的时间。
Struts按照MVC模式的思想,提供了一种创建Web应用程序的框架,其中对应用程序的用户界面表示和数据的后端逻辑处理代码进行了抽象,整合了Servlet和JSP在Web应用开发上的优势以建立灵活、扩展性强、复用程度高的应用系统[10][13]。
Struts应用框架具有以下几个优点:
1、具有MVC模型的所有特性和优点;
2、简化了基于MVC的应用程序的开发;
3、提供了很多对象实现MVC的基本特征;
4、允许开发人员使用XML文件来配置很多默认的框架;
5、提供灵活的体制来处理错误和异常;
6、提供方便的方法对应用程序的信息进行国际化。
2.2.2Struts的体系结构
Struts把一组相互协作的类(组件)、JavaServlet、JSP以及taglib组合在一个统一的框架中,同时体现了MVC模式所具有的“分离业务逻辑和表现逻辑”的能力。
Struts的核心是一个MVC风格的控制器[14],搭起了模型层和视图层之间的桥梁,同时整合了其他的一些技术去实现Model和View[15]。
在模型层,Struts很容易与数据访问技术(EJB,JDBC,ObjectRelationBridge等)相结合。
在视图层,Struts能够与表示层组件(JSP,VelocityTemplates,XSL等)相结合。
Struts也包括开发人员想用来开发可扩展的、先进的应用的其他组件。
Struts是一个“隐藏支柱”的集合,可帮助开发人员将分散的材料(如数据库和页面)结合成一个整体的应用程序,Struts的体系结构如图2.2所示。
图2.2Strtus的体系结构
由上图,可以从三个角度分析Struts体系结构:
1、视图角度(View)
Struts框架中视图由JSP定制标记库和JSP页面共同构造,利用它们可以快速建立应用系统的界面。
Struts包含一组自定义的标记库,提供大量的JSP标记。
可以方便简洁的创建完全国际化的用户界面,并且可以很好的与ActionForm进行交互。
Struts提供的ActionForm位于View和Controller之间的中间地带。
ActionForm类是一种类似于JavaBean的ValueObject对象,带有setter和getter方法,用来保存客户的状态。
在Struts中通过标记定义方式的JSP页面能够将用户通过表单输入的数据存入一个JavaBean中,即前面提到的ActionFormbean。
通过Action类调用(自动或手动)ActionForm的校验方法来检查用户输入的数据,如果发现不合法的数据,再通过Struts的通用机制将错误信息返回给用户显示。
Java开发者继承该类来创建表单bean。
在运行时该bean有两种用法:
(1)当JSP准备相关的HTML表单以进行显示时,JSP将访问该bean(保存要放入表单中的值)。
这些值是由业务逻辑或者是从先前的用户输入提供。
(2)当从Web浏览器中返回用户输入时,该bean将验证并保存该输入以供业务逻辑或后续重新显示使用(当验证失败时)。
Struts框架提供了若干个标记库,它们有各自不同的用途。
由于这些库还可以脱离Struts框架单独使用,这样也可以在其他系统中尝试使用这些标记库,包括:
(1)struts-html:
这个标记库用来创建动态的HTML页面和表单。
(2)struts-bean:
提供了类似甚至更强于 useBean>中的功能。 (3)struts-logic: 用于在页面输出文本信息时的条件、循环等流程的控制。 (4)struts-template: 用于产生有共同风格的动态JSP页面模板。 此外,可定制标记库在Struts中还可以通过资源文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts Hibernate 文档 访问 控制系统 中的 应用