开源技术Struts、Spring、Hibernate(10)
北方民族大学硕士学位论文 开源技术Struts,Spring,Hibernate在MIS开发中的应用研究
制问题,这是一个多维的问题,不过,众多的应用服务器现在都提供了各种各样的解决方案。也就是说,在应用服务器的级别上有解决的方法。其中的一个方法是保证用户只与一个服务器打交道,它在流量管理软件上用得比较多,例如Resonate [Resonate]的软件,在用户的Session中,该用户发出的每个请求都会被路由到同一个服务器处理。这种方式也被称为server affinity。
另一个可选的方式是在商业层或者资源层保存Session状态。企业JavaBeans组件可用来在商业层保存Session的状态,而一个关系数据库则可用在资源层。 控制客户访问
有很多时候我们都要限制或者控制客户端访问某些应用资源。下面我们就来讨论其中两种这样的情形。
限制或者控制客户访问的一个原因是防止一个视图或者部分的视图被一个客户直接访问。这个问题会发生在以下情况,例如仅有注册或者登陆后的用户才可允许访问一个特别的视图,或者是根据用户的角色限制用户访问部分的视图。
在描述过这个问题后,我们将讨论第二种情况,它和控制应用中一个用户的流程有关。后者的讨论和重复的form提交有关,因为多次提交将会导致不必要的重复事务。 控制视图访问
在一些情况下,资源被限制为完全不允许某些用户访问。有几个方法可以做到这一点。一个方法是加入应用逻辑到处理控制器或者视图的程序中,禁止某些用户访问。另一个方案是设置运行时的系统,对于一些资源,仅允许经由另一个应用资源内部调用。在这种情形,对于这些资源的访问必须被通过另一个表现层的应用资源进行,例如一个servlet控制器。对于这些受限制的资源不允许通过一个浏览器直接调用。
处理这个问题的一个常见方法是使用一个控制器来作为该类访问控制的一个委托者。另一个常见的方式是在一个视图中置入一个保护设置。我们这里主要讨论基于视图的控制策略。在考虑选择何种方式来控制访问之前,我们首先来描述一下这些策略。 在视图中置入保护逻辑:
对于在一个视图的处理中置入一个保护逻辑,有两个常见的应用。一个是防止访问整个的资源,而另一个是限制访问部分的资源。
在每个视图中包含一个All-or-Nothing保护
在一些情况下,置入到视图处理代码中的逻辑以all-or-nothing的模式允许或者拒绝访问。也就是说,这个逻辑限制某个特别的用户访问一个特别的视图。通常这一类型的保护最好封装到一个中央化的控制器中,这样便于集中化管理。如果只有很少的页面需要防护,那么可以使用这个策略。通常这个情形都是发生在一个非技术人员需要更新网站一小部分的静态文件。如果客户仍然需要登陆到网站来浏览这些页面,那么只需要在每个页面的顶部加入一个自定义的tag(标记)就可以做到控制访问。下面的例子所示。
在每个视图中包含一个All-or-Nothing保护
<%@ taglib uri=\ prefix=\> <corePatterns:guard/> 给视图的某些部分加入保护
-45-
北方民族大学硕士学位论文 开源技术Struts,Spring,Hibernate在MIS开发中的应用研究
在其它情况下,置入到视图处理代码的逻辑可拒绝访问一个视图的某些部分。这个策略可以和上面的all-or-nothing策略一起使用。为说明这一点,我们这里使用控制访问一个建筑物中的一个房间作类比。all-or-nothing的保护策略告诉用户是否可以进入房间,而第二个保护策略则是告诉用户在进入房间后,允许他们看到什么东西。以下就是一些你可以利用这个策略的例子。 根据用户的角色决定是否显示视图的某些部分
根据用户的角色,视图的某部分可能不显示。例如,一个经理在收看管理信息时,他可以访问到其员工的子视图,而作为一个员工,他只可以看到自己组织的信息,而不可以访问其它信息,如例子3.2所示。
根据用户的角色,部分的视图不显示
<%@ taglib uri=\ prefix=\> <HTML>
<corePatterns:guard role=\>
<b>This should be seen only by managers!</b> <corePatterns:guard/> </HTML>
根据系统的状态或者错误情形不显示部分的视图
根据系统的环境,显示的规划可以被修改。例如,如果用户使用的是一个单CPU的硬件设备,那么使用多个CPU的部分设备就可以不显示。 根据配置控制资源访问
要限制某个客户直接访问一个特别的视图,你可以配置表现层只有通过内部的资源才可以访问到这些资源,例如一个使用RequestDispatcher的servlet控制器。此外,你还可以使用Web容器中内置 的安全技术,根据servlet2.2或者以后的规范。安全限制被定义在称为web.xml的配置描述文件中(deployment descriptor)。
basic和form-based的认证方法在Servlet规范中也有描述。在此我们不打算重复这个规范,你可以到以下网址去查看当前规范的细节(http://java.sun.com/products/servlet/index.html)。 你已经明白了加入安全限制到你的应用时会有什么用处,我们简要讨论了这个问题并且介绍了如何通过配置令它和all-or-nothing保护相关。最后,我们描述了一个简单和常用的方法作为all-or-nothing保护,以限制一个资源的访问。
4.5数据库设计
数据库设计是系统设计中非常重要的一个环节。数据库是一切系统设计的基础,通俗地说,数据库设计就像高楼大厦的根基一样,如果设计不合理,不完善,将在系统开发工程中,甚至在后期系统维护,功能变更和功能拓展时引起较多的问题,严重时甚至要重新设计项目,重新做大量已经完成的工作[26]。
根据功能模块划分的结果可知,本系统的用户有系统用户和一般用户。系统用户可以实现系统内的全部操作,一般用户只能受限操作。因此在本系统中需要创建用户数据实体用于记录用户信息,以及查询信息。根据图4.1 网站后台管理系统用例图可知,其它实体包括图片实体,模块实体,文章实体,链
-46-
北方民族大学硕士学位论文 开源技术Struts,Spring,Hibernate在MIS开发中的应用研究
接实体等,由于系统具有拓展功能,拓展的功能未知,所以这些实体根据需要临时创建。以上这些实体是基本的数据实体,部分实体间存在关联关系,这就意味着需要注意级联关系,这是一个较复杂的数据库。下面将要设计数据库 ,在数据库表设计过程中,一般要遵循以下原则[27]。
(1)数据库的一个表最好只存储一个实体或者对象的相关信息,不同的实体最好存储在不同的数据表中,如果实体可能再划分,实体的划分原则是最好能够比当前系统要开发实体复杂度小。 (2)数据表的信息结构一定要合适,表的字段数量一般不要过度。 (3)扩充信息和动态变化的信息一定要分别放在不同表里。
4.5.1数据库表逻辑关系设计及物理模型设计
数据库是项目的基础设施,数据库表设计合理,关系适当,对项目开发非常重要,本网站后台管理系统的数据库表逻辑设计如图4.15。
模块信息表PK文章信息表PK 文章编号文章标题1文章标题2模块id文章作者文章内容文章建立日期文章浏览次数文章是否被删除删除时间用户id 模块id模块名模块内容模块类型用户操作记录表用户信息表PK 用户id号用户名用户口令用户性 …… 此处隐藏:4402字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




