大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 關于Java權限管理系統的案例

關于Java權限管理系統的案例

更新時間:2022-11-17 11:37:04 來源:動力節點 瀏覽1491次

開發工具

開發軟件:JDK7.0、MyEclipse 2014

數據庫:MySQL5.6

服務器:Tomcat7.0

系統介紹

本系統采用了 B/S 架構,以 MySql 作為數據庫管理數據,以 JSP 作為前端開發語音,采用當前最流行的 SSM 框架(Spring+SpringMVC+MyBatis),標準的 MVC 模式,將整個系統劃分為表現層,controller 層,service 層,dao 層四層。下面介紹主要功能:

1.權限管理

支持在線分配權限,以角色為表頭、菜單為首列。動態加載角色、菜單以及權限,個性化呈現所有信息于一表之中,并且在表中設置權限開關,免去跳轉頁面的繁瑣步驟。橫為角色,縱為菜單,用戶體驗極高的設計相信深得用戶青睞。

2.角色管理

以樹的形式呈現出角色,呈現出用戶數量、菜單數量已經按鈕數量,完美整合增刪改操作!

3.菜單管理

以樹的形式呈現出菜單,完美整合增刪改操作!整合更改菜單圖標功能,以及整合該菜單下按鈕功能。

4.按鈕管理

按鈕信息管理,完美整合按鈕的增刪改查功能。所有頁面將根據權限動態加載按鈕。

5.用戶管理

對系統用戶進行管理,完美整合分頁功能。

數據庫設計

1.數據庫關系圖

用戶通過角色與菜單進行關聯,簡單地說,一個用戶擁有若干角色,每一個角色擁有若干菜單,菜單包含按鈕,每一個角色擁有若干按鈕,構造成用戶-角色-菜單-按鈕的授權模型,用戶與角色之間,角色與權限之間,都是多對多的關系。

2.數據庫視圖

整個系統包含用戶表、賬號表、角色表、菜單表、按鈕表、按鈕類型表、用戶角色關聯表、角色菜單關聯表、角色按鈕關聯表,如下圖:

3.數據表結構

用戶表:t_auth_user

角色表:t_auth_role

菜單表 :t_auth_menu

按鈕表:t_auth_action

用戶角色關聯表:t_auth_roleuser

角色菜單關聯表:t_auth_rolemenu

角色按鈕關聯表:t_auth_roleaction

賬號表:t_auth_account

按鈕類型表:t_auth_actiontype

部分源碼

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>

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();
        }
	});
}

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;
   }

以上就是“關于Java權限管理系統的案例”介紹,大家如果想了解更多相關知識,不妨來關注一下本站的Java畢業設計,相信對大家的學習一定會有所幫助的。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产99视频精品草莓免视看 | 亚洲精品99久久久久久 | 特级一级毛片视频免费观看 | 亚洲国产欧美在线不卡中文 | 在线欧美v日韩v国产精品v | 亚洲国产精品婷婷久久 | 亚洲精品乱码久久久久久蜜桃欧美 | 最近免费中文字幕大全免费版视频 | 日本高清专区一区二无线 | 天天久久| 国产亚洲精品成人久久网站 | 天天操天天干天天爱 | 九月婷婷天天澡天天添天天爽 | 精品少妇一区二区三区视频 | 久久精品免费大片国产大片 | 欧美一级毛片免费播放aa | 五月婷婷激情综合网 | 国产亚洲免费观看 | 国产一级aaa全黄毛片 | 国产精品视频网 | 麻豆精品永久免费视频 | 日韩毛片免费在线观看 | 欧美日韩视频一区三区二区 | 99热久久精里都是精品66 | 国产在线视频二区 | 国产三级久久 | 免费性生活视频 | 亚洲国产成人精品久久 | 狠狠色狠狠色综合婷婷tag | 婷婷色网| 国产三级黄色录像 | 日韩在线一区二区三区视频 | 人体做爰aaaa免费 | 久久免费视屏 | 精品99牛牛视频 | 精品国产日韩一区三区 | 亚洲综合资源 | 国产成人精品magnet | 精品国产一区二区三区免费 | 人人做人人爽久久久精品 | 麻豆传煤一区免费入 |