码迷,mamicode.com
首页 > 其他好文 > 详细

easyUI权限

时间:2019-06-29 22:18:15      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:url   stringbu   data-   apt   css   lex   ret   pen   index   

权限目的:
是为了让不同的用户可以操作系统中不同资源
直接点说就是不同的用户可以看到左侧不同的菜单
实现菜单权限的核心思想就是控制用户登录后台所传递的menuId

UserDao

package com.hmc.dao;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import com.hmc.util.JsonBaseDao;
import com.hmc.util.JsonUtils;
import com.hmc.util.PageBean;
import com.hmc.util.StringUtils;

public class UserDao extends JsonBaseDao{
   /**
    * 用户登录或者查询用户分页的公共方法
    * @param paMap
    * @param pageBean
    * @return
    * @throws InstantiationException
    * @throws IllegalAccessException
    * @throws SQLException
    */
	public List<Map<String, Object>> list(Map<String, String[]> paMap,PageBean pageBean ) throws InstantiationException, IllegalAccessException, SQLException{
    	String sql="select * from t_easyui_user_version2 where true";
    	String uid=JsonUtils.getParamVal(paMap, "uid");
    	String upwd=JsonUtils.getParamVal(paMap, "upwd");
    	if(StringUtils.isNotBlank(uid)) {
    		sql+=" and uid="+uid;
    	}
    	if(StringUtils.isNotBlank(upwd)) {
    		sql+=" and upwd="+upwd;
    	}
    	return super.executeQuery(sql, pageBean);
    }
	
	
	/**
	 * 根据当前用户登录的id去查对应的菜单
	 * @param paMap
	 * @param pageBean
	 * @return
	 * @throws InstantiationException
	 * @throws IllegalAccessException
	 * @throws SQLException
	 */
	public List<Map<String, Object>> getMenuByUid(Map<String, String[]> paMap,PageBean pageBean ) throws InstantiationException, IllegalAccessException, SQLException{
    	String sql="select * from t_easyui_usermenu where true";
    	String uid=JsonUtils.getParamVal(paMap, "uid");
    	if(StringUtils.isNotBlank(uid)) {
    		sql+=" and uid="+uid;
    	}
    	
    	return super.executeQuery(sql, pageBean);
    }
    
	
}

  MenuDao

 

package com.hmc.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.hmc.entity.TreeNode;
import com.hmc.util.JsonBaseDao;
import com.hmc.util.JsonUtils;
import com.hmc.util.PageBean;
import com.hmc.util.StringUtils;

public class MenuDao extends JsonBaseDao {
	/**
	 * 给前台tree_data1_json的字符串
	 * @param paMap 从前台jsp传递过来的参数集合
	 * @param pageBean
	 * @return
	 * @throws SQLException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 */
    public List<TreeNode> listTreeNode(Map<String, String[]> paMap,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
       List<Map<String, Object>> listMap = this.listMapAuth(paMap, pageBean);
       List<TreeNode> listTreeNode=new ArrayList<TreeNode>();
       this.listMapToListTreeNode(listMap, listTreeNode);
       return listTreeNode;
    }
    
    public List<Map<String, Object>> listMap(Map<String, String[]> paMap,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
        String sql="select * from t_easyui_menu where true";
        String menuId=JsonUtils.getParamVal(paMap, "Menuid");
        
       
        if(StringUtils.isNotBlank(menuId)) {
     	   sql+=" and parentid="+menuId;
        }
        else {
     	   sql+=" and parentid=-1";
        }
        //这里面存放的是数据库中的菜单信息
      List<Map<String, Object>> listMap = super.executeQuery(sql, pageBean);
     	return listMap;
     }
    
    
    public List<Map<String, Object>> listMapAuth(Map<String, String[]> paMap,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
        String sql="select * from t_easyui_menu where true";
        String menuId=JsonUtils.getParamVal(paMap, "Menuid");
        //为什么将parentid改成menid?、
        //原因在之前的方法,只能查询当前节点的所有子集合,不能将当前节点给查出来
         //002-->002001,002002,002003
        if(StringUtils.isNotBlank(menuId)) {
     	   sql+=" and Menuid in ("+menuId+")";
        }
        else {
     	   sql+=" and Menuid=000 ";
        }
        //这里面存放的是数据库中的菜单信息
      List<Map<String, Object>> listMap = super.executeQuery(sql, pageBean);
     	return listMap;
     }
	/**
	 * {‘Menuid‘:001,‘Menuame‘:‘学生管理‘}
	 * -->
	 * {id:..,text:...}
	 * @param map
	 * @param treeNode
	 * @throws SQLException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 */
    private void MapToTreeNode(Map<String, Object> map,TreeNode treeNode) throws InstantiationException, IllegalAccessException, SQLException {
    	treeNode.setId(map.get("Menuid")+"");
    	treeNode.setText(map.get("Menuname")+"");
    	treeNode.setAttributes(map);
    	 
    	//将子节点添加到父节点当中,建立数据之间的父子关系
    	//treeNode.setChildren(children);
    	Map<String, String[]> childrenMap=new HashMap<>();
    	childrenMap.put("Menuid", new String[]{treeNode.getId()});
        List<Map<String, Object>> listMap = this.listMap(childrenMap, null);
        List<TreeNode>listTreeNode=new ArrayList<>();
        this.listMapToListTreeNode(listMap, listTreeNode);
        treeNode.setChildren(listTreeNode);
    }
    /**
     * [{‘Menuid‘:001,‘Menuame‘:‘学生管理‘},{‘Menuid‘:002,‘Menuame‘:‘后勤管理‘}]
     * @param listMap
     * tree_data1_json
     * @param listTreeNode
     * @throws SQLException 
     * @throws IllegalAccessException 
     * @throws InstantiationException 
     */
    private void listMapToListTreeNode (List<Map<String, Object>> listMap,List<TreeNode> listTreeNode) throws InstantiationException, IllegalAccessException, SQLException{
    	TreeNode treeNode=null;
    	for (Map<String, Object> map : listMap) {
    		treeNode=new TreeNode();
    		MapToTreeNode(map, treeNode);
    		listTreeNode.add(treeNode);
		}
    }
}

  UserAction

package com.hmc.web;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.hmc.dao.UserDao;
import com.hmc.entity.TreeNode;
import com.hmc.util.ResponseUtil;
import com.zking.framework.ActionSupport;

public class UserAction extends ActionSupport{

	private UserDao userDao=new UserDao();
	/**
	 * 登录成功后跳转index.jsp
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	 public String login(HttpServletRequest request,HttpServletResponse response) throws Exception {
		//系统中是否有当前登录用户
		  Map<String, Object> map = this.userDao.list(request.getParameterMap(), null).get(0);
		
		// 有
		 //查询用户菜单中间表,获取对应menuid的集合
		 if(map!=null && map.size()>0) {
			 //[{Menuid:002,map...},{Menuid:003..}]
			 //[002,003]
			 StringBuilder sb=new StringBuilder();
			List<Map<String, Object>> menuIdArr = this.userDao.getMenuByUid(request.getParameterMap(), null);
		  System.out.println(menuIdArr);
			for (Map<String, Object> m : menuIdArr) {
				sb.append(","+m.get("menuId"));
				//,002,003
			}
			request.setAttribute("menuIds", sb.substring(1));
			
			return "index";
		 }else {
			 //没有
			 request.setAttribute("msg", "用户不存在");
			 // 返回登录界面
			 return "login";
		 }
	    	
	    }   
}

  mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
	<!-- <action path="/regAction" type="test.RegAction">
		<forward name="failed" path="/reg.jsp" redirect="false" />
		<forward name="success" path="/login.jsp" redirect="true" />
	</action> -->
	
	<action path="/menuAction" type="com.hmc.web.MenuAction">
	</action>
	<action path="/userAction" type="com.hmc.web.UserAction">
		<forward name="index" path="/index.jsp" redirect="false" />
	    <forward name="login" path="/login.jsp" redirect="false" />
	    
	</action>
</config>

  index.js

$(function(){
	$(‘#tt‘).tree({    
	    url:‘menuAction.action?methodName=menuTree&&Menuid=‘+$("#menuIds").val(),
	    onClick:function(node){
	    	
	    	var context=‘<iframe scrolling="no" frameborde="0" src="‘+node.attributes.menuURL+‘" width="100%" height="100%"></frame>‘
	    	if($(‘#menuTab‘).tabs(‘exists‘,node.text)){
	    		$(‘#menuTab‘).tabs(‘select‘,node.text);
	    	}else{
	    		$(‘#menuTab‘).tabs(‘add‘,{    
		    	    title:node.text,    
		    	    content:context,    
		    	    closable:true,    
		    	      
		    	});  
	    	}
	    	

	    }
	    
	});  

})

  index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>后台主界面</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/js/public/easyui5/themes/default/easyui.css">   
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/js/public/easyui5/themes/icon.css">   
<script type="text/javascript" src="${pageContext.request.contextPath}/static/js/public/easyui5/jquery.min.js"></script>   
<script type="text/javascript" src="${pageContext.request.contextPath}/static/js/public/easyui5/jquery.easyui.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/static/js/index.js"></script>

</head>
<body class="easyui-layout">
<input type="hidden" id="menuIds" value="${menuIds}"/>
	<div data-options="region:‘north‘,border:false" style="height:60px;background:#B3DFDA;padding:10px">north region</div>
	<div data-options="region:‘west‘,split:true,title:‘West‘" style="width:150px;padding:10px;">
	<ul id="tt"></ul>  
	</div> -->
	<div data-options="region:‘east‘,split:true,collapsed:true,title:‘East‘" style="width:100px;padding:10px;">east region</div>
	<div data-options="region:‘south‘,border:false" style="height:50px;background:#A9FACD;padding:10px;">south region</div>
	<div data-options="region:‘center‘,title:‘Center‘">
	<div id="menuTab" class="easyui-tabs" >   
    <div title="首页" style="padding:20px;display:none;">   
          欢迎界面   
    </div>   
    
</div>  
	
	</div>
</body>

</html>

  效果如下

技术图片

001用户看到的东西

技术图片

 

技术图片

 002用户的权限

技术图片

技术图片

003用户的权限

技术图片

技术图片

000用户的权限

技术图片

 

easyUI权限

标签:url   stringbu   data-   apt   css   lex   ret   pen   index   

原文地址:https://www.cnblogs.com/xmf3628/p/11107966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!