java serlvet角色访问控制系统设计与实现

java serlvet角色访问控制系统设计与实现
博主介绍:翰文编程 专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和课设项目实战、企业信息化系统建设,从业十八余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+题目解决方法案例  方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

第4章 总体设计

4.1 系统总体模块图

企业角色访问控制原型系统主要设计了菜单管理、菜单角色管理、角色管理、用户管理、教材管理等功能,满足用户在网站上面进行权限信息,具体功能模块图如4.1所示:

图4.1 系统总体模块图

4.2 数据库层的设计

4.2.1 概念模型设计

将需求分析得到的用户需求抽象为信息结构,即概念模型的过程就是概念结构设计,它是整个数据库设计的关键。


(2)系统中实体E-R图

菜单信息实体,主要包括 菜单编号,菜单名称,序号,类型,链接,父 等信息实体。如图4.2所示:

图4.2 菜单实体属性图

角色信息实体,主要包括 角色编号,角色名称,介绍 等信息实体。如图4.3所示:

图4.3 角色实体属性图


菜单角色信息实体,主要包括 菜单角色编号,菜单,角色 等信息实体。如图4.4所示:

图4.4菜单角色实体属性图

用户信息实体,主要包括 用户编号,用户名,密码,姓名,联系电话,联系地址,角色 等信息实体。如图4.5所示:

图4.5 用户实体属性图

4.2.2 关系模式设计

一个实体型转换为一个关系模式的集合。实体的属性就是关系的属性,实体的码就是关系的码。

对于实体间的联系则有以下不同的情况:

在企业角色访问控制原型系统中,实体有菜单实体,角色实体,菜单角色实体,用户实体,教材类别实体,教材实体等实体,他们之间的关系如图4.13所示:

图4.13 实体之间关系图


4.3 本章小结

本章主要介绍的内容是总体设计或者概要设计,介绍了角色访问控制原型系统的设计,主要是在架构设计、总体模块设计和数据库设计的方面介绍的,为进一步的详细设计做准备。


第5章  详细设计

详细设计阶段的任务就是把在总体设计阶段提出的比较抽象概括的解决问题的方法具体化,也就是“应该怎样具体地实现这个系统”。在本阶段将包括数据库的设计和每个模块的详细设计,确定实现模块功能所需要的算法和数据结构。

5.1 后台设计

5.1.1 角色权限设计

普通用户或管理员输入自己的用户账号、密码,通过身份验证后可以进入相应的管理界面首页。管理员管理页面分为用户管理、角色管理,角色菜单管理等功能。普通用户管理页面分为用户信息、菜单信息浏览等模块。

5.1.2 角色验证设计 

当用户需要登录的时候,需要有响应的页面来实现这一功能。登录界面是用来支持用户进行登录功能操作的界面,当在界面中输入普通用户的用户名、密码,就可以通过身份验证进入该系统。 登录界面需要让用户输入用户名、密码。如果是错误登录信息造成的还要显示错误信息。否则,当信息输入和权限选择正确时,将分别将用户导入各自对应的操作界面首页。 用户分为普通用户和管理员两种。每种用户具有不同的权限,能完成不同的操作。普通用户具有查看信息权限夹功能等。管理员用户是系统的最高权限具有系统所有功能的操作。

管理员登录信息验证界面是非常重要的一部分,它接收登录表单提交的信息,并在用户信息表里检验是否存在对应的用户,和判断用户的类型以便获得相应的权限。

5.2 数据库设计

5.2.1 逻辑结构设计

1 菜单( 菜单编号,菜单名称,序号,类型,链接,父 )

2 角色( 角色编号,角色名称,介绍 )

3 菜单角色( 菜单角色编号,菜单,角色 )

4 用户( 用户编号,用户名,密码,姓名,联系电话,联系地址,角色 )

5 教材类别( 教材类别编号,类别 )

6 教材( 教材编号,教材名称,类别,介绍,出版社,数量 )

5.2.2 物理结构设计

由各个关系模式和根据需求分析阶段数据字典的数据项描述,给出各数据表结构。

(1)菜单信息表如表5.1所示:

表5.1 菜单信息表

序号

字段名称

数据类型

长度

主键

描述

1

cdid

INTEGER

11

菜单编号

2

cdmc

VARCHAR

40

菜单名称

3

xh

VARCHAR

40

序号

4

lx

VARCHAR

40

类型

5

lj

VARCHAR

40

链接

6

f

VARCHAR

40

(2)角色如表5.2所示:

表5.2 角色表

序号

字段名称

数据类型

长度

主键

描述

1

jsid

INTEGER

11

角色编号

2

jsmc

VARCHAR

40

角色名称

3

js

VARCHAR

40

介绍

(3)菜单角色表如表5.3所示:

表5.3 菜单角色表

序号

字段名称

数据类型

长度

主键

描述

1

cdjsid

INTEGER

11

菜单角色编号

2

cd

VARCHAR

40

菜单

3

js

VARCHAR

40

角色

(4)用户信息表如表5.4所示:

表5.4 用户信息表

序号

字段名称

数据类型

长度

主键

描述

1

yhid

INTEGER

11

用户编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

5

lxdh

VARCHAR

40

联系电话

6

lxdz

VARCHAR

40

联系地址

7

js

VARCHAR

40

角色

(5)教材类别表如表5.5所示:

表5.5 教材类别表

序号

字段名称

数据类型

长度

主键

描述

1

jclbid

INTEGER

11

教材类别编号

2

lb

VARCHAR

40

类别

(6)教材表如表5.5所示:

表5.6 教材记录表

序号

字段名称

数据类型

长度

主键

描述

1

jcid

INTEGER

11

教材编号

2

jcmc

VARCHAR

40

教材名称

3

lb

VARCHAR

40

类别

4

js

VARCHAR

40

介绍

5

cbs

VARCHAR

40

出版社

6

sl

VARCHAR

40

数量

5.3 本章小结

本章主要是在上一章的总体设计的基础之上对系统进行详细设计,主要分为两个方面来设计,分别为后台设计和数据库设计,在后台设计方面,主要是设计的系统的权限分配,角色登录的验证;在数据库方面是设计系统的物理结构的设计和逻辑结构的设计。


第6章 系统的实施

系统实施是指将系统设计阶段的结果在计算机上实现,将原来纸面上的·类似于设计图式的新系统方案转换成可执行的应用软件。实施阶段的主要活动:物理系统的建立,程序的编制,系统调试,系统切换,系统维护,系统评价。

界面也称作UI(User Interface),是人机交互重要部分,也是系统给用户使用的第一印象,是整个系统的重要组成部分。所谓的用户体验大部分就是指界面设计的体验。

本系统的名称是“角色访问控制原型系统”,界面要求是简洁大方,避免过度包装,目的是为了为系统用户提供一个操作平台

6.1 登录模块界面

登录系统首页,出现用户名、密码的输入框,填写用户名和密码点击【提交】按钮,即可登录;也可以点击【重置】按钮,进行重新录入。具体的登录页面如图6.1所示:

图6.2 登录界面图

6.2 用户管理界面

用户信息管理用于实现对系统内用户信息的管理。系统用户可以新增用户信息、移除用户信息和更正用户信息,以及用户信息列表展现,在添加用户信息用户信息时,系统会自动查询系统中用户表中的用户编号字段,系统自动将用户表中最大值加1作为该用户表用户记录的用户编号,同时将用户的用户编号,用户的用户名,用户的密码,用户的姓名,用户的联系电话,用户的联系地址,用户的角色 信息添加到用户信息表中;在删除一条用户记录时,先选中一条用户记录,将该条用户记录中的用户编号作为查询条件在数据库中用户信息表中进行查询,弹出“确定要删除用户信息吗?”的对话框,若是,则执行删除用户信息操作,否则退出删除操作;在更改用户记录时,先选中一条用户记录,将用户信息显示在相应的修改用户页面中,然后更改用户信息表后保存到用户信息表中;查看用户信息记录时,选中要查看的用户记录,系统根据用户选择用户信息,在详细页面显示用户信息   

6.3 菜单管理界面

菜单信息管理用于实现对系统内菜单信息的管理。系统用户可以新增菜单信息、移除菜单信息和更正菜单信息,以及菜单信息列表展现,在添加菜单信息菜单信息时,系统会自动查询系统中菜单表中的菜单编号字段,系统自动将菜单表中最大值加1作为该菜单表菜单记录的菜单编号,同时将菜单的菜单编号,菜单的菜单名称,菜单的序号,菜单的类型,菜单的链接,菜单的父 信息添加到菜单信息表中;在删除一条菜单记录时,先选中一条菜单记录,将该条菜单记录中的菜单编号作为查询条件在数据库中菜单信息表中进行查询,弹出“确定要删除菜单信息吗?”的对话框,若是,则执行删除菜单信息操作,否则退出删除操作;在更改菜单记录时,先选中一条菜单记录,将菜单信息显示在相应的修改菜单页面中,然后更改菜单信息表后保存到菜单信息表中;查看菜单信息记录时,选中要查看的菜单记录,系统根据用户选择菜单信息,在详细页面显示菜单信息    

private void insertM(HttpServletRequest request, HttpServletResponse response){//菜单添加 caidanDao dao=new caidanDao(); caidan caidan=new caidan(); caidan.setCdid((String)request.getParameter("keyid")); caidan.setCdmc((String)request.getParameter("cdmc")); caidan.setXh((String)request.getParameter("xh")); caidan.setLx((String)request.getParameter("lx")); caidan.setLj((String)request.getParameter("lj")); caidan.setF((String)request.getParameter("f")); response.setCharacterEncoding("gb2312"); try { dao.insert(caidan); request.setAttribute("flag", "操作成功"); request.getRequestDispatcher("caidan/caidanadd.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } private void ListM(HttpServletRequest request, HttpServletResponse response){//菜单信息列表 ResultSet rs=null; caidanDao dao = new caidanDao(); String str=(String)request.getParameter("Page"); String; response.setCharacterEncoding("gb2312"); try{ if(str==null){ str="0"; } rs=dao.qlist(sql); PrintWriter out = response.getWriter(); request.setAttribute("rs", rs); request.getRequestDispatcher("caidan/caidanlist.jsp?Page="+str).forward(request, response); }catch(Exception e){ e.toString(); e.printStackTrace(); } } private void PListM(HttpServletRequest request, HttpServletResponse response){//测试信息列表 ResultSet rs=null; caidanDao dao = new caidanDao(); System.out.println("alist"); String; response.setCharacterEncoding("gb2312"); try{ rs=dao.qlist(sql); PrintWriter out = response.getWriter(); request.setAttribute("rs", rs); request.getRequestDispatcher("caidan/caidanplist.jsp").forward(request, response); }catch(Exception e){ e.toString(); e.printStackTrace(); } }

6.4 菜单角色管理界面

菜单角色信息管理用于实现对系统内菜单角色信息的管理。系统用户可以新增菜单角色信息、移除菜单角色信息和更正菜单角色信息,以及菜单角色信息列表展现,在添加菜单角色信息菜单角色信息时,系统会自动查询系统中菜单角色表中的菜单角色编号字段,系统自动将菜单角色表中最大值加1作为该菜单角色表菜单角色记录的菜单角色编号,同时将菜单角色的菜单角色编号,菜单角色的菜单,菜单角色的角色 信息添加到菜单角色信息表中;在删除一条菜单角色记录时,先选中一条菜单角色记录,将该条菜单角色记录中的菜单角色编号作为查询条件在数据库中菜单角色信息表中进行查询,弹出“确定要删除菜单角色信息吗?”的对话框,若是,则执行删除菜单角色信息操作,否则退出删除操作;在更改菜单角色记录时,先选中一条菜单角色记录,将菜单角色信息显示在相应的修改菜单角色页面中,然后更改菜单角色信息表后保存到菜单角色信息表中;查看菜单角色信息记录时,选中要查看的菜单角色记录,系统根据用户选择菜单角色信息,在详细页面显示菜单角色信息    

大家点赞、收藏、关注、评论啦 其他的定制服务 商务合作 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

Read more

C或C++取反操作(附代码及详解)

C或C++取反操作(附代码及详解)

取反:~ 取反 按位取反,原来的位是1,就变为0,如果是0,就变为1 原码、反码和补码 原码:最高位是符号位,0表示正数,1表示负数 反码:最高为是符号位,0表示正数,1表示负数,正数的反码是它本身,负数的反码是除了符号位以外其余各位取反反码:最高为是符号位,0表示正数,1表示负数,正数的反码是它本身,负数的反码是除了符号位以外其余各位取反@TOC 补码:最高为是符号位,0表示正数,1表示负数,正数的补码是它本身,负数的补码是反码+1 为什么需要补码操作: 例如:1 + (-1) = 0 如果使用原码来直接计算 0001 + 1001 = 1010,计算的结果是-2,这样的结果是错误的 如果使用补码来计算 0001 + 1111 = 1 0000,最高位的1直接溢出,所以结果是0000,

By Ne0inhk
C++从入门到实战(二)C++命名空间

C++从入门到实战(二)C++命名空间

C++从入门到实战(二)C++命名空间 * 前言 * 一、C++的第一个程序 * 二、命名空间 * (一)为什么需要命名空间 * (二)定义命名空间 * (三)使用命名空间 * 1.通过命名空间限定符: * 2.使用 using 声明: * 2.1展开命名空间 * 2.2使用 using namespace * (四)嵌套命名空间 * (五)标准命名空间 std 前言 * 上一节我们介绍了C++ 的历史,对这门强大编程语言的发展脉络有了清晰认识。这一节我们将围绕着 C++ 的第一个程序,深入探讨 C++ 的命名空间。理解命名空间对于我们编写大型、复杂且结构清晰的 C++ 程序至关重要。 一、C+

By Ne0inhk
C++日志管理从基础到完善

C++日志管理从基础到完善

万古教员有名言,自信人生二百年。 个人主页:oioihoii 喜欢内容的话欢迎关注、点赞、收藏!感谢支持,祝大家祉猷并茂,顺遂无虞! 版本一:基础日志代码 在设计C++日志系统时,我们需要考虑以下几个关键点: 1. 易用性:日志系统应该易于使用,开发者应该能够轻松地添加日志条目。 2. 性能:日志系统应该尽可能地减少对应用程序性能的影响。这意味着日志记录的过程应该尽可能地快速,以减少对应用程序的延迟。 3. 灵活性:日志系统应该能够支持不同级别的日志(如错误、警告、信息、调试等),并能够在运行时动态地更改日志级别。 4. 可配置性:日志系统应该允许开发者配置日志的各种参数,如日志文件的位置、日志的格式等。 5. 线程安全:如果应用程序是多线程的,那么日志系统也必须是线程安全的。 下面是一个简单的C++日志系统的设计,它考虑了上述的所有因素: #include<iostream>#include<

By Ne0inhk
【C++】第十四节—模版进阶(非类型模版参数+模板的特化+模版分离编译+模版总结)

【C++】第十四节—模版进阶(非类型模版参数+模板的特化+模版分离编译+模版总结)

你好,我是云边有个稻草人  C++—本文章所属专栏,欢迎订阅,持续更新中! 目录 一、非类型模板参数 【非类型模版参数的用处在哪里? 】 【了解array 容器—array和普通数组的区别在哪里?—对越界的检查】 二、模板的特化(特殊化处理) 2.1 概念 2.2 函数模版特化 【函数模版特化可使用,但不推荐】  2.3 类模版特化 【全特化】 【偏特化】  【判断走哪个类模版?】 【类模版特化应用实例】 三、模版分离编译 3.1 什么是分离编译 3.2 模板的分离编译  【分析】 3.3 解决办法 【分离定义扩展阅读】 四、模板总结 【优点】 【缺陷】 正文开始—

By Ne0inhk