java easyui权限管理_easyui权限管理

在easyui上实现权限的管理

所谓权限:指的是系统中的资源,资源包括菜单资源(学习情况报表,账号审核...)以及按钮资源

所谓角色:指的是系统中的权限集合(每一个角色对应着哪些权限集合)

1、一星权限设计(用户权限多对一)

?执行数据库脚本sql

?建立实体类

?创建dao方法

?Webservlet层创建

?展示对应的树形菜单

实现思路:通过账号和密码查询 是为了获取菜单的id 获取到里面的menuid后 可加载对应的菜单或以及子菜单

弊端:一个菜单不能对应多个用户!

2、二星权限设计(用户权限多对多)

?执行数据库脚本

?修改原有的实体类

?建立实体类

?创建dao

?修改原有的dao

?新增web的方法

?新增登入界面,跳入前端树形菜单

实现思路:用户查询登陆表 有数据代表已注册 通过uid 查到中间表(一个uid查中间表的方法) 获取到一个权限集合 对应多个数据 再进行遍历uid查到的集合  然后拼接每一个map集合的menuid(这个menuid的集合就是那些数字 方法用in可得到多组父子关系)

首先我们先建立三张表

1用户表(t_easyui_user_version2)

d1093d6c791373ee97396e426f56adef.png

2.用户菜单中间表(t_easyui_usermenu)

a2971c4447007669fed103697661608d.png

3.菜单表(t_easyui_menu)

31e1e471c69fca7956375bb8f97dc952.png

写一个登录界面

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用户可查看 学生管理

b218d880927b97db7f1fb17aeae69c38.png

002用户可查看 后勤管理和房屋租金

cb657abe9c2c6e8cb87e275e0bc387f5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值