在easyui上实现权限的管理
所谓权限:指的是系统中的资源,资源包括菜单资源(学习情况报表,账号审核...)以及按钮资源
所谓角色:指的是系统中的权限集合(每一个角色对应着哪些权限集合)
1、一星权限设计(用户权限多对一)
?执行数据库脚本sql
?建立实体类
?创建dao方法
?Webservlet层创建
?展示对应的树形菜单
实现思路:通过账号和密码查询 是为了获取菜单的id 获取到里面的menuid后 可加载对应的菜单或以及子菜单
弊端:一个菜单不能对应多个用户!
2、二星权限设计(用户权限多对多)
?执行数据库脚本
?修改原有的实体类
?建立实体类
?创建dao
?修改原有的dao
?新增web的方法
?新增登入界面,跳入前端树形菜单
实现思路:用户查询登陆表 有数据代表已注册 通过uid 查到中间表(一个uid查中间表的方法) 获取到一个权限集合 对应多个数据 再进行遍历uid查到的集合 然后拼接每一个map集合的menuid(这个menuid的集合就是那些数字 方法用in可得到多组父子关系)
首先我们先建立三张表
1用户表(t_easyui_user_version2)
2.用户菜单中间表(t_easyui_usermenu)
3.菜单表(t_easyui_menu)
写一个登录界面
1
2
3 uid:
4 upwd:
5
6
7
写一个dao方法来验证登录
1 packagecom.liuwenwu.dao;2
3 importjava.sql.SQLException;4 importjava.util.List;5 importjava.util.Map;6
7 importcom.liuwenwu.util.JsonBaseDao;8 importcom.liuwenwu.util.JsonUtils;9 importcom.liuwenwu.util.PageBean;10 importcom.liuwenwu.util.StringUtils;11
12 public class UserDao extendsJsonBaseDao {13
14 /**
15 * 登录 查询用户表16 *@return
17 *@throwsSQLException18 *@throwsIllegalAccessException19 *@throwsInstantiationException20 */
21 public List> list(Map paMap,PageBean pageBean) throwsInstantiationException, IllegalAccessException, SQLException{22 String sql="select * from t_easyui_user_version2 where true";23 String uid=JsonUtils.getParamVal(paMap, "uid");24 String upwd=JsonUtils.getParamVal(paMap, "upwd");25 if(StringUtils.isNotBlank(uid)) {26 sql=sql+" and uid="+uid;27 }28 if(StringUtils.isNotBlank(upwd)) {29 sql=sql+" and upwd="+upwd;30 }31 return super.executeQuery(sql, pageBean);32 }
写一个dao方法根据用户ID来查询用户对应的权限
1 /**
2 * 通过中间表查询登录用户所对应的权限3 *@parampaMap4 *@parampageBean5 *@return
6 *@throwsInstantiationException7 *@throwsIllegalAccessException8 *@throwsSQLException9 */
10 public List> listMenu(String uid,PageBean pageBean) throwsInstantiationException, IllegalAccessException, SQLException{11 String sql="select * from t_easyui_usermenu where true";12 if(StringUtils.isNotBlank(uid)) {13 sql=sql+" and uid="+uid;14 }15 return super.executeQuery(sql, pageBean);16 }
写一个web层自控制器来调用dao方法
1 packagecom.liuwenwu.web;2
3 importjava.sql.SQLException;4 importjava.util.List;5 importjava.util.Map;6
7 importjavax.servlet.http.HttpServletRequest;8 importjavax.servlet.http.HttpServletResponse;9
10 importcom.liuwenwu.dao.UserDao;11 importcom.zking.framework.ActionSupport;12
13 public class UserAction extendsActionSupport {14
15 private UserDao userDao=newUserDao();16
17 publicString login(HttpServletRequest req,HttpServletResponse resp){18 try{19 List> list=this.userDao.list(req.getParameterMap(), null);20 if(list!=null&&list.size()>0) {21 List> listMenu=this.userDao.listMenu(req.getParameter("uid"), null);22 StringBuilder sb=newStringBuilder();23 for (Mapmap : listMenu) {24 sb.append(","+map.get("menuId"));25 }26 //,001,002
27 req.setAttribute("menuHid", sb.substring(1));28 }else{29 return"login";30 }31 } catch(Exception e) {32 //TODO Auto-generated catch block
33 e.printStackTrace();34 }35
36 return "index";37 }38
39 }
配置MVC文件
1
2
3
4
5
6
7
在昨天的tree结构展示dao里面加一个方法
1 packagecom.liuwenwu.dao;2
3 importjava.sql.SQLException;4 importjava.util.ArrayList;5 importjava.util.HashMap;6 importjava.util.List;7 importjava.util.Map;8
9 importcom.liuwenwu.entity.TreeNode;10 importcom.liuwenwu.util.JsonBaseDao;11 importcom.liuwenwu.util.JsonUtils;12 importcom.liuwenwu.util.PageBean;13 importcom.liuwenwu.util.StringUtils;14
15 public class MenuDao extendsJsonBaseDao {16
17 /**
18 *@parammap req.getParameterMap19 *@parampageBean 分页20 *@return
21 *@throwsException22 */
23 public List list(Map map,PageBean pageBean) throwsException{24 List> listMenu=this.listMenuSef(map, pageBean);25 List treeNodeList=new ArrayList<>();26 menuList2TreeNodeList(listMenu, treeNodeList);27 returntreeNodeList;28 }29
30 public List> listMenuSef(Map map,PageBean pageBean)throwsException{31 String sql=" select * from t_easyui_menu where true";32 String id=JsonUtils.getParamVal(map, "menuHid");33 if(StringUtils.isNotBlank(id)) {34 sql=sql +" and menuid in("+id+")";35 }36 else{37 sql=sql+" and menuid =-1";38 }39
40 return super.executeQuery(sql, pageBean);41
42 }43
44 /**
45 * 查询Menu表的数据46 *@parammap47 *@parampageBean48 *@return
49 */
50 public List> listMenu(Map map,PageBean pageBean)throwsException{51 String sql=" select * from t_easyui_menu where true";52 String id=JsonUtils.getParamVal(map, "id");53 if(StringUtils.isNotBlank(id)) {54 sql=sql +" and parentid ="+id;55 }56 else{57 sql=sql+" and parentid =-1";58 }59
60 return super.executeQuery(sql, pageBean);61 }62
63 /**
64 * {Menuid:1,....[]}65 * ->{id:1,....[]}66 * menu表的数据不符合easyui树形展示的数据格式67 * 需要转换成easyui所能识别的数据格式68 *@parammap69 *@paramreTreeNode70 *@throwsException71 */
72 private void menu2TreeNode(Map map, TreeNode treeNode) throwsException {73 treeNode.setId(map.get("Menuid").toString());74 treeNode.setText(map.get("Menuname").toString());75 treeNode.setAttributes(map);76
77 Map jspMap=new HashMap<>();78 jspMap.put("id", newString[] {treeNode.getId()});79 this.listMenu(jspMap, null);80 List> listMenu=this.listMenu(jspMap, null);81 List treeNodeList=new ArrayList<>();82 menuList2TreeNodeList(listMenu, treeNodeList);83 treeNode.setChildren(treeNodeList);84 }85
86
87 /**
88 * [{Menuid:1,....[]},{Menuid:2,....[]}]89 * ->[{id:1,....[]},{id:2,....[]}]90 *@parammapList91 *@paramtreeNodeList92 *@throwsException93 */
94 private void menuList2TreeNodeList(List> mapList, List treeNodeList)throwsException {95 TreeNode treeNode =null;96 for (Mapmap : mapList) {97 treeNode =newTreeNode();98 menu2TreeNode(map, treeNode);99 treeNodeList.add(treeNode);100 }101 }102
103 }
实现效果:001用户可查看 学生管理
002用户可查看 后勤管理和房屋租金