Java权限管理系统完整案例

一、在线演示

在线演示,浏览系统

二、开发工具

开发软件:JDK7.0、MyEclipse 2014
数据库:MySQL5.6
服务器:Tomcat7.0

三、系统介绍

本系统采用了 B/S 体系结构,以 MySql 作为数据库管理数据,以 JSP 作为前端开发语音,采用当前最流行的 SSM 框架(Spring+SpringMVC+MyBatis),标准的 MVC 模式,将整个系统划分为表现层,controller 层,service 层,dao 层四层。下面介绍主要功能:

3.1 权限管理

支持在线分配权限,以角色为表头、菜单为首列。动态加载角色、菜单以及权限,个性化呈现所有信息于一表之中,并且在表中设置权限开关,免去跳转页面的繁琐步骤。横为角色,纵为菜单,用户体验极高的设计相信深得用户青睐。
在这里插入图片描述

3.2 角色管理

以树的形式呈现出角色,呈现出用户数量、菜单数量已经按钮数量,完美整合增删改操作!
在这里插入图片描述

3.3 菜单管理

以树的形式呈现出菜单,完美整合增删改操作!整合更改菜单图标功能,以及整合该菜单下按钮功能。
在这里插入图片描述

3.4 按钮管理

按钮信息管理,完美整合按钮的增删改查功能。所有页面将根据权限动态加载按钮。

3.5 用户管理

对系统用户进行管理,完美整合分页功能。
在这里插入图片描述

四、数据库设计

4.1 数据库关系图

用户通过角色与菜单进行关联,简单地说,一个用户拥有若干角色,每一个角色拥有若干菜单,菜单包含按钮,每一个角色拥有若干按钮,构造成用户-角色-菜单-按钮的授权模型,用户与角色之间,角色与权限之间,都是多对多的关系。
在这里插入图片描述

4.2 数据库视图

整个系统包含用户表、账号表、角色表、菜单表、按钮表、按钮类型表、用户角色关联表、角色菜单关联表、角色按钮关联表,如下图:
在这里插入图片描述

4.3 数据表结构
  1. 用户表:t_auth_user
字段名类型长度描述
userIDbigint20自增编号
accountIDbigint20账户编号
userNamevarcha200用户姓名
avatarvarchar200头像
sigvarchar500签名
createTimevarchar200创建时间
createUserIDbigint20创建人编号
isValidtinyint4是否有效(1有效数据,0无效数据)
  1. 角色表:t_auth_role
字段名类型长度描述
roleIDbigint20自增编号
roleNamevarchar200菜单名称
roleAliasvarchar50角色别名
parentIDvarchar50父级编号(最高级为0)
roleRankint11角色等级(值越低等级越高)
contentvarchar500描述内容
createTimevarchar200创建时间
createUserIDbigint20创建人编号
isValidtinyint4是否有效(1有效数据,0无效数据)
  1. 菜单表 :t_auth_menu
字段名类型长度描述
menuIDbigint20自增编号
menuTypetinyint4菜单类型(1iframe模式,2全屏模式,3外部链接,4通讯系统)
menuNamevarchar200菜单名称
menuTextvarchar200菜单文本
menuPathvarchar255菜单路径
menuIconvarchar255菜单图标
menuSortint11菜单排序
parentIDbigint20父级编号(0代表根目录)
menuLeveltinyint4菜单等级
isRoottinyint4是否根目录(1是,0否)
contentvarchar500描述内容
createTimevarchar200创建时间
createUserIDbigint20创建人编号
isValidtinyint4是否有效(1有效数据,0无效数据)
  1. 按钮表:t_auth_action
字段名类型长度描述
actionIDbigint20自增编号
menuIDbigint20菜单编号
actionNamevarchar200按钮名称
actionTypebigint20按钮类型(类型表)
actionSeattinyint4按钮位置(1头部按钮,2表格按钮)
callTypetinyint4调用方式(1样式,2函数,3Layui)
actionEventvarchar200按钮路径
actionIconvarchar200按钮图标
actionSortint11按钮排序
contentvarchar500描述内容
createTimevarchar200创建时间
createUserIDbigint20创建人编号
isValidtinyint4是否有效(1有效数据,0无效数据)
  1. 用户角色关联表:t_auth_roleuser
字段名类型长度描述
ruIDbigint20自增编号
roleIDbigint20角色编号
userIDbigint20用户编号
isValidtinyint4是否有效(1有效数据,0无效数据)
  1. 角色菜单关联表:t_auth_rolemenu
字段名类型长度描述
rmIDbigint20自增编号
roleIDbigint20角色编号
menuIDbigint20菜单编号
  1. 角色按钮关联表:t_auth_roleaction
字段名类型长度描述
raIDbigint20自增编号
roleIDbigint20角色编号
actionIDbigint20按钮编号
  1. 账号表:t_auth_account
字段名类型长度描述
accountIDbigint20自增编号
userCodevarchar200用户账号
userPwdvarchar200用户密码
userQQvarchar200QQ账号
userWechatvarchar200微信账号
userWeibovarchar200微博账号
isFrozentinyint4是否被冻结(1已冻结,0没冻结)
isValidtinyint4是否有效(1有效数据,0无效数据)
  1. 按钮类型表:t_auth_actiontype
字段名类型长度描述
typeIDbigint20自增编号
typeNamevarchar200类型名称
typeSortint11类型排序
isValidtinyint4是否有效(1有效数据,0无效数据)

五、部分源码

5.1 以权限功能为例,html代码块
<div class="layui-fluid" id="LAY-component-progress">
	<div class="layui-row layui-col-space15">
		<div class="layui-col-md12">
			<div class="layui-card">
				<div class="layui-card-header">
					<span class="childHeader"><!-- 页面加载完毕后自动生成 --></span>
					<span class="childTitle">/&nbsp;配置角色权限</span>
				</div>
				<div class="layui-card-body">
					<div class="layui-form">
						<div class="table-operate-btn" style="margin-bottom: 10px;">
							<div class="table-operate-btn">
						      	<button data-type="openAll" type="button" class="layui-btn layui-btn-primary layui-btn-sm layui-btn-event">全部展开</button>
						      	<button data-type="closeAll" type="button" class="layui-btn layui-btn-primary layui-btn-sm layui-btn-event">全部折叠</button>
						      	<button data-type="refresh" type="button" class="layui-btn layui-btn-primary layui-btn-sm layui-btn-event">刷新</button>
					      	</div>
				      	</div>
						<table id="table-page" class="layui-table" lay-filter="table-filter" lay-size="sm"></table>
						<blockquote class="layui-elem-quote" style="display: none;">注:点击开关系统自动保存,若保存成功没任何提示,若保存失败则弹出错误提示内容。</blockquote>
					</div>
				</div>
			</div>
		</div>
	</div>
</div>
5.2 jQuery代码块
/**
 * 保存权限信息
 */
function handlePower(keyId, roleId, isCheck){
	var tableName = keyId.substr(0, keyId.indexOf("-"))
	var tableKeyId = keyId.substr(keyId.indexOf("-")+1, keyId.length);
	var action = null;
	if(tableName == "action"){
		action = ligent_itemName + "auth/power/handleRoleAction"
	}else if(tableName == "menu"){
		action = ligent_itemName + "auth/power/handleRoleMenu"
	}else{
		layer_msg("系统繁忙,请联系管理员...", 5, 6, null);
    	return;
	}
	var checkNum = isCheck ? 1 : 0;
	var data = {
			roleId: roleId,
			actionId: tableKeyId,
			menuId: tableKeyId,
			isCheck: checkNum
	}
	$.post(action, data, function (res) {
		var json = JSON.parse(res);
		if(json.code != 0) {
			layer_msg(json.data.msg, 5, 6, null);
        	return;
		}
    });
}

/**
 * 绑定树形菜单表格
 */
function tableRender(){
	// 遍历角色
    var checkboxs = '';
	$.ajax({
	    type: "post",
	    url: ligent_itemName + "auth/role/findByAll",
	    async: false,//异步为true
	    success: function (data) {
	    	var state = JSON.parse(data);
	    	var json = state.data;
			$.each(json, function (i, item) {
				checkboxs += '' + 
					'{' + 
						' title: "'+item.roleName+'", align: "center", width: "120px",' + 
						' template: function (res) {' + 
							" return '<input '+(res.checkMap.isCheck_"+item.roleId+" ? 'checked' : '')+' keyId=\"'+res.id+'\" roleId=\""+item.roleId+"\" type=\"checkbox\" name=\"close\" lay-skin=\"switch\" lay-text=\"ON|OFF\" lay-filter=\"isCheckPower\">';" + 
						'}' + 
					'},'; 
			});
	    }
	});
	
    var cols = "[" +
		    		"{ key: 'title', title: '菜单按钮', align: 'left', width: '200px', " + 
				 		"template: function (res) {" + 
				 			"if (res.treeLevel == 1) {" + 
				 				"return '<span class=\"onelevelColor\">' + res.title + '</span>';" + 
		    		 		"} else if (res.treeLevel == 2) {" + 
			 					"return '<span class=\"twolevelColor\">' + res.title + '</span>';" + 
		    		 		"} else if (res.treeLevel == 3) {" + 
			 					"return '<span class=\"threelevelColor\">' + res.title + '</span>';" + 
		        		 	"}" + 
						"}" + 
					"}," + 
					checkboxs + 
					"{ key: 'treeLevel', title: '菜单等级', align: 'center', width: '120px'," + 
	    		 		"template: function (res) {" + 
	    		 			"if (res.treeLevel == 1) {" + 
	    		 				"return '<span class=\"onelevelColor\">' + res.treeLevel + '</span>';" + 
	        		 		"} else if (res.treeLevel == 2) {" + 
			 					"return '<span class=\"twolevelColor\">' + res.treeLevel + '</span>';" + 
	        		 		"} else if (res.treeLevel == 3) {" + 
			 					"return '<span class=\"threelevelColor\">' + res.treeLevel + '</span>';" + 
		        		 	"}" + 
	    				"}" + 
	    			"}," + 
					"{ title: '类型', align: 'center', width: 120," + 
				 		"template: function (res) {" + 
				 			"if (res.id.indexOf('menu') != -1) {" + 
				 				"return '菜单';" + 
					 		"} else if (res.id.indexOf('action') != -1) {" + 
			 					"return '按钮';" + 
					 		"} else {" + 
			 					"return '';" + 
			    		 	"}" +
			    		"}," + 
			    	"}" + 
				"]";
    
    var cols_arr = eval("("+cols+")")
    
    // 渲染表格
	tableIns = treeTable.render({
        elem: '#table-page',
        url: ligent_itemName + 'auth/power/findByPower',
        icon_key: 'title',
		primary_key: 'id',
		parent_key: 'pid',
        cols: cols_arr,
	    end: function (e) {
	    	// 渲染表单
	    	form.render();
        	// 展示温馨提示
        	$(".layui-elem-quote").show();
        	// 第一次加载默认全部展开
        	if(renderCount == 0){
        	    treeTable.openAll(tableIns);
            	renderCount++;
        	}
        	// 关闭关闭所有层
			layer_closeAll();
        }
	});
}
5.3 服务器代码块
/**
 * 获取所有角色权限信息
 */
@RequestMapping(value = "findByPower", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
   public @ResponseBody String findByPower(HttpServletRequest request, HttpServletResponse response) {
   	List<TreeTable> revertList = new ArrayList<TreeTable>();
   	List<AuthAction> actionList = null;
   	TreeTable treeTable = null;
   	// 菜单集合
   	List<AuthMenu> list = authMenuService.findByAll();
   	for (AuthMenu menu : list) {
   		treeTable = new TreeTable(menu, authRoleService.findByMenu(menu.getMenuId()));
   		revertList.add(treeTable);
   		if(menu.getIsRoot().intValue() != 1){
       		actionList = authActionService.findByMenu(menu.getMenuId());
       		for (AuthAction action : actionList) {
       			treeTable = new TreeTable(action, menu.getMenuLevel(), authRoleService.findByAction(action.getActionId()));
       			revertList.add(treeTable);
   			}
   		}
	}
	String json = UseTool.toJson(new StateModel(revertList));
   	log.info("获取所有角色列表:"+json);
   	return json;
   }

六、源码下载

附上权限系统源码,点击下载


七、猜您喜欢

更多小系统与您见面:搭我一程

创作不容易,若对您有帮助,欢迎收藏,记得赏个好评


  • 14
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
权限管理系统》该项目采用技术SpringMVC+Spring+Hibernate+jquery+js+css+dtree+MD5 等技术 ,项目含有源码、文档、配套开发软件、软件安装教程、项目发布教程等    项目功能介绍:    系统管理:用户登录、用户退出    用户管理:主要实现对用户信息的增删改查审核等功能    角色管理:主要实现对角色信息的增删改查、角色绑定用户、角色绑定操作等功能    模块管理:主要实现模块信息的增删改查等功能    权限管理:实现系统权限控制,页面中权限控制以及用户请求的权限控制      1、学会各类开发软件安装、项目导入以及项目发布,含项目源码,需求文档,配套软件等     2、该项目主要功能完善,主要用于简历项目经验丰富,以及毕业设计或者二次开发    3、提供项目源码,设计文档、数据库sql文件以及所有配套软件,按照教程即可轻松实现项目安装部署项目实战课程:代码视频讲解版如下java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572JavaWeb项目实战之宿舍管理系统https://edu.csdn.net/course/detail/26721JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770java美妆商城项目|在线购书系统java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习
很高兴能为您提供一个基于Java web技术的工厂物料管理系统项目的完整案例。下面是一个简单的案例描述: 项目名称:工厂物料管理系统 项目描述:该系统旨在帮助工厂管理其物料库存和供应链流程。它提供了一个用户友好的界面,通过该界面用户可以执行以下操作:添加、编辑和删除物料信息;管理供应商和客户信息;跟踪库存;处理采购订单和销售订单;生成报表等。 技术栈: - 后端:Java、Spring Boot、Spring MVC、Spring Data JPA、Hibernate - 前端:HTML、CSS、JavaScript、Bootstrap、Thymeleaf模板引擎 - 数据库:MySQL 功能模块: 1. 用户管理:用户注册、登录、权限管理等。 2. 物料管理:添加、编辑和删除物料信息,包括物料编号、名称、规格、单位等。 3. 供应商管理:添加、编辑和删除供应商信息,包括供应商编号、名称、联系人、地址等。 4. 客户管理:添加、编辑和删除客户信息,包括客户编号、名称、联系人、地址等。 5. 库存管理:跟踪物料库存情况,包括入库和出库操作。 6. 采购管理:处理采购订单,包括创建订单、审核订单、发货等。 7. 销售管理:处理销售订单,包括创建订单、审核订单、发货等。 8. 报表管理:生成各类报表,如物料库存报表、采购订单报表、销售订单报表等。 项目架构: - 前端页面通过Thymeleaf模板引擎渲染,并通过Spring MVC提供RESTful API。 - 后端使用Spring Boot搭建,通过Spring Data JPA和Hibernate进行数据持久化。 - 数据库使用MySQL存储数据。 这只是一个简单的案例描述,实际项目可能会更复杂,具体的实现细节根据实际需求进行调整。希望这个案例可以为您提供一些参考。如有需要,请进一步详细描述您想了解的方面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踮脚敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值