更新時間: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">/ 配置角色權限</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畢業設計,相信對大家的學習一定會有所幫助的。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習