Ztree 权限分配方面的应用

前言

这个也是别人问到我了,就专研了一会,写了这篇博客。

需求

需求就是修改角色对应的权限,点击修改时,系统所有的菜单项要全部出现,角色对应的权限前面自动打勾,方便查看。

解决

肯定需要将角色表和菜单表中主键拿出来重新建一个表,用来表示角色与权限的对应关系。然后点击修改时,需要传过去一个角色的id,新的页面首先查询出该角色的所拥有的所有菜单id(menus表示),然后在加载树形菜单时,判断加载的节点id是否存在于menus对象数组,若存在,则选中该节点。

数据库

role表
Ztree 权限分配方面的应用_第1张图片
menu表
Ztree 权限分配方面的应用_第2张图片
role_menu 表
Ztree 权限分配方面的应用_第3张图片

实现

获取角色的程序代码,注意此处后台获取的过程就不在累赘,如果你不会本文bootstrap获取数据,请告知,我会写一写相关教程。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>











   //bootstrap table 需要的各种组件 注意引入顺序
角色管理





 
角色ID 角色名称 操作

权限菜单 z-tree2.jsp 页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<%
	String roleId= request.getParameter("roleId");
%>








Insert title here








    注意:对于RoleMenuServlet 就是传过来角色对应的权限集合。
    此处只给出部分代码,具体请自己尝试实现。
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		Integer roleId= Integer.parseInt(request.getParameter("roleId"));
    		List menus = rmD.findMenuIdByRoleId(roleId);
    		JSONObject jO = new JSONObject();
    		jO.put("success", true);
    		jO.put("menus", menus);
    		response.setContentType("application/json;charset=utf-8");
    		response.getWriter().println(jO.toString());
    	}

    findMenuIdByRoleId
    public List findMenuIdByRoleId(Integer roleId) {
    		java.sql.Connection conn = null;
    		PreparedStatement ps = null;
    		ResultSet rs = null;
    	    List menus = new ArrayList();
    		try{
    			conn=DbUtil.getConnection();
    			String sql="select * from menu where id in (select m_id from role_menu where r_id=? )" ;
    			ps=(PreparedStatement) conn.prepareStatement(sql);
    			ps.setInt(1,roleId);
    			rs=ps.executeQuery();	
    			while(rs.next()){
    				 Menu ui = new Menu();
    				 ui.setId(rs.getInt("id"));
    				 ui.setName(rs.getString("name"));
    		        menus.add(ui);
    				}
    		}catch (Exception e) {
    			e.printStackTrace();// TODO: handle exception
    		}finally{
    			DbUtil.closeAll(conn, ps, rs);
    		}
    		return menus;
    	}

      结果实例图

    Ztree 权限分配方面的应用_第4张图片


    Ztree 权限分配方面的应用_第5张图片
    若点击上上图的区长
    Ztree 权限分配方面的应用_第6张图片


    你可能感兴趣的:(Java,Web)