基于J2EE的权限管理系统.doc_第1页
基于J2EE的权限管理系统.doc_第2页
基于J2EE的权限管理系统.doc_第3页
基于J2EE的权限管理系统.doc_第4页
基于J2EE的权限管理系统.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于J2EE的权限管理系统摘 要随着Internet技术和企业信息化建设的发展,web应用需求的不断增加,同时对系统的安全性、稳定性、交互性和可维护性要求也越来越高,现行的系统根据用户的权限与身份来操作系统不同的功能。但这种权限管理方式灵活性比较低,不能对用户的权限进行扩展如果要对权限进行扩展就必须重新对系统的权限进行设计与开发。这种系统设计思想已经无法满足当今系统的需要。本文提出了一种可扩展的权限管理设计思路,这种实现方式使得权限管理模块可以加入到任何需要权限管理功能的系统进行重用。在系统的实现技术上使用Struts、Hibernate以及JSP技术来进行系统实现。文中主要阐述了系统实现使用的Struts、Hibernate、Jsp技术,采用UML的设计方法进行系统的分析与设计,通过UML技术进行系统建模,并进行了系统的实现。系统分为五大模块-权限管理、部门管理、机房管理、人员管理、日志管理。通过系统的权限的分配完成对上述功能的模块的管理。用户必须在具有相应的权限才能进入相应的功能模块。最后对基于J2EE权限管理系统实现过程中的研究与开发工作进行了总结,并探讨了系统存在的不足和问题。关键词:权限管理,Struts,Hibernate, J2EE3030ABSTRACTWith the development of the Internet technology, enterprise information construction and the increasing requirements for Web application, the demands for a safe, stable, interactive and maintainable system are becoming higher. The current system operates according to the users limited rights and identities. But this mode of competence administration is relatively inflexible because it cannot expand users competence. If there is necessity to expand the competence, firstly it has to be redesigned and redeveloped. However, that kind of systematic design thought could no longer meet the needs of current system. The paper proposes an expansive way to design authority administration, in which the latter can be applied into any system containing the function of authority administration. On the basis of technology, Struts, Hibernate and JSP are used to make the system come into true. The paper mainly demonstrates Struts, Hibernate and JSP technology, analysis and design on the way of UML, building modules by UML technology as well as achievement of the system. The system is divided into five parts, authority administration, department administration, computer room administration, personnel administration and journal administration. All administrations above are managed by the use of distributing the authority of the system. Uses have access to the function module in the leading of related authority. Finally, it generalizes the research and development project during the process of accomplishing the authority administration system based on J2EE, exploring the shortages and problems in the system.Key words: Rights Management, Struts,Hibernate, J2EE目 录摘 要IABSTRACTII第一章 绪论11.1开发背景及意义11.2.系统的目标和工作内容11.3论文的工作和章节安排1第二章 相关技术介绍32.1 JSP技术简介32.2 MVC架构模式32.3 Struts框架简介42.4 Hibernate简介62.5 mysql数据库介绍6第三章 系统分析与设计83.1需求分析83.2系统流程113.3系统主要功能模块133.3.1登录模块133.3.2权限管理133.3.3机房管理15第四章 数据库分析与设计184.1 数据库设计规范184.1.1 表的命名184.1.2 类型处理184.1.3 字段设计184.2 数据库模型设计184.2.1 概念模型184.2.1 物理模型194.3 数据库设计194.3.1 部门信息表194.3.2 机房信息表204.3.3 人员信息表204.4.4 日志信息表214.5.5 权限信息表214.6.6 角色信息表214.6.7 后台管理员信息表21第五章 系统功能的实现235.1 登录模块的实现235.2 权限管理模块的实现26第六章 总结和展望296.1课题总结296.2 存在的问题29参考文献30致 谢31第一章 绪论1.1课题背景上世纪九十年代,几乎所有小型企业的信息系统均采用外购的方式构建,他们的IT 人员只负责维护,经实践证明,日常信息系统(如以系统,报表系统等)运行的效果都非常的差。其主要原因是日常信息系统经常要修改功能和增加新的模块,这就要和软件供应商进行沟通,经常会因为时间和经费的原因放弃了一些很好的想法,系统也因此更新慢或长时间不更新,不能满足日益增长的需求变化。本文提出了权限管理应该是可以扩展的,它应该可以加入到任何带有权限管理功能的系统中。就像是组件一样,可以被不断的重用。而不是开发每一套管理系统,就针对权限管理进行重新开发。系统基于Struts框架, Hibernate框架以及JSP技术,详尽阐述了基于J2EE的权限管理系统设计与实现。系统分为五大模块-权限管理、部门管理、机房管理、人员管理、日志管理。根据系统的需求,每个模块都必须验证相应的权限,只有具有权限的人员才能进入,并进行对应的操作。1.2.课题内容系统的主要目标是通过权限来管理系统,通过高级管理员来配置权限,然后把权限分配给人,从而实现让权限控制整个系统。该系统的权限管理是可以被重用的,可以通过管理员给用户分配任何一种权限。当某人员登陆到该系统中,登陆之后就获得了该人员所具有的权限,从而进入不同的页面。、本系统提出了基于Struts技术的统一权限系统架构,采用这样架构,可以将权限系统从业务系统中独立出来,多个不同的业务系统能够共享一个权限系统,业务系统不必再关心权限方面的细节,从而可以将精力全部放到具体业务功能的开发上。技术实现上,采用J2EE平台,JSP、Hibernate、Struts1.2、xml技术,mysql数据库,tomcat应用服务器来实现该系统,开发过程中采用适当的设计模式来提高系统的完善性、健壮性、可扩展性.1.3论文的内容本文对权限管理系统的设计和实现工作,具体介绍了该系统的业务流程和开发方法,全文由以下六章组成:第一章主要论述了该系统开发的背景,任务,目标以及主要的研究内容。第二章概况了系统开发过程中所使用到的技术支持。重点介绍了JSP的优点,MVC的工作流程,Struts框架采用MVC原理,阐述了Struts的体系结构。第三章根据需求分析对系统进行总体设计和详细设计。主要介绍了系统分析与设计。根据系统的需求,对系统流程进行了设计,并对系统的主要功能模块进行了分析与设计。第四章数据库的设计。定义了表的命名原则,表的字段设计原则。从概念模型到物理模型,对数据库的模型进行了设计。最后对数据库进行了设计。第五章说明了该系统的实现过程。主要介绍了登陆模块,和权限管理模块的实现,以及实现主要功能的代码。第六章总结系统开发的经验以及设计过程中的不足。第二章 相关技术介绍2.1 JSP技术简介在传统网页HTML文件中加入JSP标记和Java程序段,就构成了JSP网页。JSP是Java Server Page(Java服务器页面)的简称,它是由Sun公司提出、多个IT公司参与合作建立的一种动态网页开发技术标准。相对于传统的动态网页开发工具而言,由于JSP继承了Java语言的许多优点,用JSP开发动态网站十分方便,开发效率较高。l JSP技术有如下的特点:1. 将内容的生成和显示进行分离。使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容,并且将结果以HTML(或者XML)页面的形式发送回浏览器。2. 可重用的组件。绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise JavaBeans)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。3. 采用标识简化页面开发。Java Server Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。通过开发定制化标识库,JSP技术是可以扩展的。 4. 可移植性强。作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。5. 可伸缩性和可扩充性强。JSP通过Java Bean可实现功能的扩充,如文件上传、操作数据库或者将复杂的业务分离出来成为独立可重复利用的模块。2.2 MVC架构模式MVC是Model-View-Controller的简称,MVC设计模式是设计交互式应用时广泛采用的一种设计模式,也是J2EE规范推荐在开发J2EE的WEB应用时使用的模式。利用MVC设计模式开发WEB应用,可以将表示逻辑和业务逻辑分离,提高了软件的可维护性。如图2-1:(控制器)接受用户请求调用模型响应用户请求选择视图显示响应结果(视图)显示模型状态接受数据更新请求把用户输入数据传给控制器(模型)代表应用程序状态响应状态查询处理业务流程通知视图业务状态更新选择视图业务处理状态查询方法调用事件通知数据更新用户请求图2-1 MVC模式模型是应用程序的主体,它表示的是解决方案空间的真正的业务逻辑,并且存放数据和实体(通过JavaBean, EJB组件实现)一个模型可以同时为多个视图提供数据,是整个MVC架构中的核心部分。视图是与用户交互的界面(由JSP页面产生),它承担连接用户和应用程序之间的接口角色。一方面,视图将用户的请求传递给应用程序,触发应用程序对用户请求的处理逻辑;另一方面,视图将应用程序对用户请求的处理结果返回给用户。控制器提供应用的处理过程控制(一般是一个Servlet)。它根据用户的输入,控制用户界面数据显示及更新模型对象状态的部分,这是模型与视图的接口。控制器根据用户的操作判断所要执行的业务逻辑,关联模型和视图。MVC模式处理过程十分清晰,控制器接收用户请求,然后决定调用哪个模型进行处理,模型进行相应的逻辑处理,然后返回处理后的数据,控制器调用视图将模型返回的数据呈现给用户。2.3 Struts框架简介Struts是一个简化MVC开发的非常优秀的Web应用框架,主要采用JSP、Servlet等技术实现。应用框架为开发者提供可重用的基础架构,为业务逻辑开发提供支持、减少底层代码工作量,从而减轻开发Web应用系统的时间,提高开发效率。Struts 由一组相互协作的类(组件)、Servlet以及 JSP 卷标库组成。基于Struts架构的Web应用程序基本上符合JSP的设计标准,可以说是MVC设计模式的一种实现。 Struts有其自己的控制器(Controller),同时整合了其它的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC等。在视图层,Struts能够与JSP,XSL等等这些表示层组件相结合。Struts框架是MVC的实现,下面就分别从Model,View,Controller了解 Struts的体系结构。图2-2显示了Struts framework的体系结构:图2-2 Struts体系结构1. 视图(View)组件Struts中使用JSP作为主要的视图工具。除了基本的JSTL标记外,Struts为了实现更纯净的HTML代码,又设计了大量的标记来支持用户的开发,使得开发工作变得更加方便和快捷。当用户通过视图表单向servlet发送数据时使用到了Actionform的组件,该组件通常也被归于视图层。Actionform的作用就是将用户提交的数据打包成一个bean对象,一般使用基本的get和set方法。2. 模型(Model)组件JavaBean就是模型的代表。对进入控制器的每个入口点来说,bean的作用是存储从视图获取的信息,同时被称为“动作类”,另外在JavaBean中还可以定义接口,和实现接口的方法。3. 控制器(Controller)组件Struts采用了ActionServlet和Action来代替Servlet组件。在Struts应用程序中,所有的用户请求都由ActionServlet接受,然后根据用户请求的不同样式到struts-config.xml文件中查找相应的子控制器。也就是Action,执行具体的控制器功能,并且调用相应的后台模型完成业务逻辑。2.4 Hibernate简介Hibernate是对象/关系映射(Object/Relational Mapping)的解决方案,简写为ORM,简单地说就是将Java中的对象与对象关系映射至关系型数据库中的表格与表格之间的关系,Hibernate提供了这个过程中自动对应转换的方案。Hibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。它具体有以下特点:Hibernate的目标是成为Java中管理持续性数据问题的一种完整的解决方案。它协调应用与关系数据库的交互,让开发者解放出来专注于手中的业务问题。Hibernate是一种非常强迫性的解决方案。开发者在写业务逻辑与持续性类时,不会被要求遵循许多Hibernate特定的规则和设计模式。这样,Hibernate就可以与大多数新的和现有的应用平稳地集成,而不需要对应用的其余部分作破环性的改动。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲地使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。2.5 Mysql数据库介绍l MySQL的概述MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。l MySQL的特性1. 使用C和C+编写,并使用了多种编译器进行测试,保证源代码的可移植性 2. 支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统 。3. 为多种编程语言提供了API。这些编程语言包括C、C+、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。4. 支持多线程,充分利用CPU资源。5. 优化的SQL查询算法,有效地提高查询速度。6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。7. 提供TCP/IP、ODBC和JDBC等多种数据库连接途径 。8. 提供用于管理、检查、优化数据库操作的管理工具 。9. 可以处理拥有上千万条记录的大型数据库。 第三章 系统分析与设计3.1需求分析l 不同职责的人员,对于系统操作的权限应该是不同的。l 可以对“组”进行权限分配。对于一个大企业的业务系统来说,如果要求管理员为其下员工逐一分配系统操作权限的话,是件耗时且不够方便的事情。所以,系统中就提出了对“组”进行操作的概念,将权限一致的人员编入同一组,然后对该组进行权限分配。l 权限管理系统应该是可扩展的。它应该可以加入到任何带有权限管理功能的系统中。就像是组件一样的可以被不断的重用,而不是每开发一套管理系统,就要针对权限管理部分进行重新开发。l 满足业务系统中的功能权限。传统业务系统中,存在着两种权限管理,其一是功能权限的管理,而另外一种则是资源权限的管理,在不同系统之间,功能权限是可以重用的,而资源权限则不能。本系统涉及到以下的关系:部门,机房,人员等。其中,部门,机房和人员三者之间的关系为:1. 一个部门包含多个机房。2. 一个部门应下属有多名人员。3. 人员分为“管理员”和“普通员工”两种类型。本系统的用户是类型为“管理员”的人员。4. 每个机房有一名人员充当其负责人,该人员应当从该机房所属部门的人员中选取。系统需要提供权限管理,经过系统认证的管理员可以登录系统并享有系统为其分配的权限。下图为本系统的顶层用例图。图3-1系统用例图本系统主要完成的任务如下:1. 权限管理,能够实现新增角色,配置角色,删除角色,配置用户权限。图3-2 权限管理用例图该模块的前置条件为以普通管理员的身份登录。主要功能是新增角色,删除角色,配置角色,配置用户角色。新增角色必需要满足在相同模块下,名称不能相同。配置角色可以查看改角色的内容,可以修改该角色,然后保存。但是角色的功能不能相同。删除角色会出对话框,确认是否删除该角色。用户请求配置某一人员信息的权限,系统显示“配置权限”界面,列出系统已经添加的角色,用户勾选相应复选框为该人员选择角色,系统将所选角色所对应的所有权限赋给给人员。2. 部门管理,能够实现对部门的增删改查。用例图如下:图3-3部门管理用例图该模块的前置条件是具有对部门管理的权限,部门管理包括新增部门,修改部门,删除部门。新增部门,部门名称不能相同。修改部门时,选择不同的部门,部门的负责人也不相同,删除部门时,会弹出对话框,确认是否删除。3. 机房管理,能够实现对机房的增删改查。用例图如下:图3-4机房管理用例图该模块的前置条件是具有对机房管理的权限,机房管理包括新增机房,修改机房,删除机房。新增机房是,机房名称不能相同。修改机房时,机房名称不能被修改。删除机房时,会弹出确认是否删除机房。4. 人员管理,能够实现对人员的增删改查。图3-5人员管理用例图该模块的前置条件是具有对人员管理的权限,人员管理包括新增人员,修改人员,删除人员,查询人员。新增机房是,人员姓名不能相同。修改人员时,人员名称不能被修改。删除人员时,会弹出确认是否删除人员。查询人员,按人员ID,人员姓名,所属部门多条件进行查询。5. 日志管理,能够实现查询日志。图3-6 日志管理用例图该模块的前置条件是具有日志管理的权限。日志管理主要是记录用户对系统进行的操作,并可以查看这些操作。3.2系统流程 活动图用于显示动作及其结果。其重点在于描述方法实现中所完成的工作,以及用例实例或者对象中的活动。活动图看上去与程序流程图非常相似。如下图所示图3-7系统活动图3.3系统主要功能模块3.3.1登录模块l 主要功能包括:1. 登录用户输入用户名,密码和验证码等信息并提交登录,在本系统中,要求对用户输入的相关信息进行合法性和有效性验证,还要根据不同的用户判断其权限,给其相应的操作。其中合法性校验使用判断该用户是否存在,有效性校验需要判断用户的输入是否为有效字符,特殊的字符需要使用正则表达式校验。如果登录用户为管理员,则其可以进行各种操作,否则只能做相应的开户操作。2. 注销用户退出本系统,系统完成session的注销,以销毁用户在登录时保留在session中的消息,并返回到登录界面。3.3.2权限管理权限管理有如下概念:模块:指系统的功能单元,目前系统的模块为部门管理,机房管理,日志管理,人员管理和权限管理五个模块。操作权限:指每一个模块中的具体功能操作,系统各个模块的操作权限划分为如下表所示。角色:一个角色应归属某一个模块,是该模块中一系列操作权限的集合。l 主要功能包括:1. 角色管理活动图如下所示:图3-8 角色管理活动图该模块的前置条件为以普通管理员的身份登录。主要功能是新增角色,删除角色,配置角色。新增角色必需要满足在相同模块下,名称不能相同。配置角色可以查看改角色的内容,可以通过选择某一角色,勾选权限配置,保存角色。如果修改后的角色和已经存在的角色相同,会有提示信息,该角色已经存在,请重新设置。但是角色的功能不能相同。删除角色会出对话框,确认是否删除该角色。2. 配置用户活动图如下:图3-9 配置用户活动图具有该权限的人员才能进行此操作。主要功能是配置角色。即配置该人员所具有的权限。用户请求配置某一人员信息的权限,系统显示“配置权限”界面,列出系统已经添加的角色,用户勾选相应复选框为该人员选择角色,系统将所选角色所对应的所有权限赋给给人员。3.3.3机房管理l 主要功能包括:1. 机房信息活动图如下:图3-10 机房信息活动图具有该权限的人员才能进行此操作。主要功能是显示机房列表。可以对机房进行新增,更改,删除等操作。新增机房数据机房名称,备注,和地址。更改机房选择机房所属的部门,点击下拉菜单,选择不同的也不相同,然后人责任的下拉菜单中选择该机房的负责人。机房名称不能更改,保存更改。2. 机房查询活动图如下:图3-11 查看机房的活动图人员可以通过 “机房名称”、“负责人”、“所属部门”和“地址”来多条件查询机房信息。在查“查询机房”页面,人员输入相应的查询的条件进行查询,系统根据查询条件,列出符合查询条件的机房信息。第四章 数据库分析与设计4.1 数据库设计规范4.1.1 表的命名规则所有表名应该由小写字母和下划线,数字构成。如果是实体表则开头用t,关系表开头用r,之后接模块名,而后是具体的内容。4.1.2 类型处理l 表内不存储boolean类型数据,所有boolean类型数据都转化为1位的char。l 时间日期用DATETIME型。l 传的照片类型用VARCHAR(255)来记录文件名。文件名是上载文件位置(路径+名)生成规则待定。注意每个文件夹下面节点不能超过1000个。l 除了自增字段以外,整数类型字段虽然允许为NULL,但是尽量付初始值0。因为如果存在了NULL值,索引就不再起作用了。因此尽量用0来代替NULL。4.1.3 字段设计原则l 具有序号含义的列尽量采用Identity列,可以有效地避免重号及跳号。l 数值型的列都要有默认值。l 明显不能为空的列,必须禁止为空。l 可以为空的列,应该根据实际情况,设定适当的默认值。l 在命名字段并为其指定数据类型时,一定要在数据库中使其保持一致性。4.2 数据库模型设计4.2.1 概念模型系统概念模型图如图4-1所示。图4-1 概念模型图4.2.1 物理模型物理模型图如图4-2所示。图4-2 物理模型图4.3 数据库设计4.3.1 部门信息表部门信息表t_dept的字段定义如表4-1所示。表4-1 部门信息表(t_dept)字段内容字段名称数据类型长度主外键备注部门编号dept_idINTEGER11PK自增部门名称dept_nameVARCHAR50管理人mgr_idVARCHAR50FK对应人员表的staff_id电话office_phoneVARCHAR50手机mobile_phoneVARCHAR50传真faxVARCHAR50备注remarkVARCHAR2004.3.2 机房信息表机房信息表t_pcroom的字段定义如表4-3所示:表4-3 机房信息表(t_pcroom)字段内容字段名称数据类型长度主外键备注机房编号room_idINTEGER11PK自增部门编号dept_idINTEGER11FK对应部门表中的Dept_id机房名称room_nameVARCHAR50管理人mgr_idVARCHAR50FK对应人员表的Staff_id机房地址room_addressVARCHAR200备注remarkVARCHAR2004.3.3 人员信息表人员信息表t_staff的字段定义如表4-5所示表4-5 人员信息表(t_staff)字段内容字段名称数据类型长度主外键备注人员编号strff_idVARCHAR50PK对应用户登录的id人员姓名Staff_nameVARCHAR50FK对应部门表中的Dept_id密码passwdVARCHAR50所属部门Dept_idINTEGER11FK对应人员表的Dept_id人员类型Role_nameVARCHAR10管理员/普通员工电话General_phoneVARCHAR50电子邮件EmailVARCHAR50手机Mobile_phoneVARCHAR50传真FaxVARCHAR50备注ReamrkVARCHAR2004.4.4 日志信息表日志信息表t_log的字段定义如表4-7所示。表4-7 日志信息表(t_log)字段内容字段名称数据类型长度主外键备注日志编号log_idINTEGER11PK自增模块编号type_idINTEGER11FK对应字典类型表中的type_id操作operationVARCHAR50管理人编号mgr_idVARCHAR50FK对应人员表的Staff_id4.5.5 权限信息表权限信息表t_authority的字段定义如表4-9所示。表4-9 权限信息表(t_authority)字段内容字段名称数据类型长度主外键备注权限编号authority_idINTEGER11PK自增角色集合role_idsVARCHAR50以角色表的role_id 人员编号staff_idVARCHAR50FK对应员工表的Staff_id4.6.6 角色信息表角色信息表t_role的字段定义如表4-11所示。表4-11 角色信息表(t_role)字段内容字段名称数据类型长度主外键备注角色编号role_idINTEGER11PK角色名称role_nameVARCHAR50模块编号type_idINTEGER50FK对应字典类型表type_id字典内容集合content_idsVARCHAR50字典内容表的role_id4.6.7 后台管理员信息表后台管理员信息表t_admin的字段定义如表4-13所示。表4-13 后台管理员信息表(t_admin)字段内容字段名称数据类型长度主外键备注用户编号user_idVARCHAR50PK对应登录表单的ID用户姓名nameVARCHAR50密码passwdVARCHAR50第五章 系统功能的实现5.1 登录模块的实现在地址栏中输入地址http:/localhost:8088/telecom之后,屏幕中将显示如图所示基于J2EE的权限管理系统的登录页面。图5-1登陆页面输入用户名密码之后,点击登录,即可登录到主页面,如下图所示:图5-2主页面当然在进行登录验证的时候首先要防止非法登录。数据库里的密码也进行了MD5加密。l 防止非法登录的代码如下/* * 该方法是用来处理系统安全登录问题 * author Administrator * */public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) res;User user = (User) request.getSession().getAttribute(user);String uri = request.getRequestURI();System.out.println(uri);/如何输入地址栏满足要求,并且放过.gif文件if (uri.endsWith(login.jsp) | uri.endsWith(login.do)| uri.endsWith(index.jsp) | uri.endsWith(.gif) chain.doFilter(req, res); else if (user != null) chain.doFilter(req, res);/否则跳转到登陆页面,重新登陆else response.sendRedirect(login.jsp);l MD5加密代码如下:/* * 该类是提供密码加密的方法 * * author Administrator * */public class EncryptUtil public static String toMessageDigest(String str) try MessageDigest md = MessageDigest.getInstance(MD5);BASE64Encoder encoder = new BASE64Encoder();return encoder.encode(md.digest(str.getBytes(utf-8); catch (Exception e) throw new RuntimeException(e.getMessage();l 登录模块的核心代码如下:/* * 该方法是用来验证登陆信息 */public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) response.setHeader(Pragma, No-Cache);/处理浏览器后退问题response.setHeader(Cache-Control, no-Cache,must-revalidate);response.setDateHeader(Expires, 0);/让密码加密,然后与数据库比对。if(password != null & !password.equals()user.setPassword(EncryptUtil.toMessageDigest(password);User u = userService.validateLogin(user);request.getSession().setAttribute(user, u);/判断用户名和密码是否为空if (username = null | username.trim().equals()| (password = null | password.equals() if (username = null | username.trim().equals() ActionMessages errors = new ActionMessages();errors.add(usernameError, new ActionMessage(error.username);this.addErrors(request, errors);if (password = null | password.equals() ActionMessages errors = new ActionMessages();errors.add(passwordError, new ActionMessage(error.password);this.addErrors(request, errors);return new ActionForward(/login.jsp); else if (u = null) ActionMessages errors = new ActionMessages();errors.add(upError, new ActionMessage(error.up);this.addErrors(request, errors);return new ActionForward(/login.jsp); else Set set = new HashSet();Employee emp = new Employee();emp.setId(u.getEmpid();List list = roleService.findEmpRole(emp);String operForm = ;/获取登陆人员的所有权限,并存放到list中。if (list != null) for (int i = 0; i list.size(); i+) Emprole er = (Emprole) list.get(i);Role role = new Role();role.setId(er.getRoleId();Roledetail rd = roleService.findRoledetailById(role);if (rd != null) operForm = operForm+rd.getOperForm();set.add(rd);5.2 权限管理模块的实现后台管理员对某人进行权限配置和角色配置,配置成功之后,该人进入主页面之后只有相应的权限,该系统其他的功能则无法操作.如下图所示:图5-3权限管理页面当lisi进入主页面之后,主页面如下图所示点击人员管理的查询人员则会显示:l 核心代码如下:/* * 该方法是用来处理配置角色的请求 * param mapping * param form * param request * param response * return */public ActionForward showRoleById(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) RoleService roleService = ServiceFactory.getRoleService();Role role = new Role();role.setId(Integer.parseInt(request.getParameter(id);Role r = roleService.findRoleById(role);List list = roleService.findAllOper(r);Roledetail rd = roleService.findRoledetailById(role);String operForm = ;if (rd != null) operForm = rd.getOperForm();request.getSession().setAttribute(aa, operForm);request.getSession().setAttribute(role, r);request.getSession().setAttribute(operList, list);return new ActionForward(showRoleByIdView);/* * 该方法是用来处理人员配置权限的请求 * param mapping * param form * param requ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论