zoukankan      html  css  js  c++  java
  • EasyUi权限

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

    ?执行数据库脚本
    ?建立实体类
    ?创建dao
    ?Web层创建
    ?更改展示的树形菜单

    2、二星权限设计(用户权限多对多)
    ?执行数据库脚本
    ?修改原有的实体类
    ?建立实体类
    ?创建dao
    ?修改原有的dao
    ?新增web的方法
    ?新增登入界面,跳入前端树形菜单

    权限目的:
    是为了让不同的用户可以操作系统中不同资源
    直接点说就是不同的用户可以看到左侧不同的菜单

    实现菜单权限的核心思想就是控制用户登录后台所传递的menuId

     

    建立实体类(与数据库相对应的列段)

    package com.entity;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class TreeNode {
    	  private String id;
    	  private String text;
    	  private  List<TreeNode> children=new ArrayList<TreeNode>();
    	  private  Map<String, Object> attributes=new HashMap<String, Object>();
    	  
    	  
    	public String getId() {
    	    return id;
    	}
    
    	public void setId(String id) {
    	    this.id = id;
    	}
    
    	public String getText() {
    	    return text;
    	}
    
    	public void setText(String text) {
    	    this.text = text;
    	}
    
    	public List<TreeNode> getChildren() {
    	    return children;
    	}
    
    	public void setChildren(List<TreeNode> children) {
    	    this.children = children;
    	}
    
    	public Map<String, Object> getAttributes() {
    	    return attributes;
    	}
    
    	public void setAttributes(Map<String, Object> attributes) {
    	    this.attributes = attributes;
    	}
    
    	@Override
    	public String toString() {
    	    return "TreeNode [id=" + id + ", text=" + text + ", children=" + children + ", attributes=" + attributes + "]";
    	}
    	  
    
    	}
    

     

     UserDao

    package com.dao;
    import java.sql.SQLException;
    import java.util.List;
    import java.util.Map;
    
    import com.util.JsonBaseDao;
    import com.util.JsonUtils;
    import com.util.PageBean;
    import com.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.dao;
    
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import com.entity.TreeNode;
    
    import com.util.JsonBaseDao;
    import com.util.JsonUtils;
    import com.util.PageBean;
    import com.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{
    		//我们调用下面的方法     ListMapTOListTreeNode
    		List<Map<String, Object>> listMap = this.listMapAuth(paMap, pageBean);//上面调用下面的方法
    		List<TreeNode> listTreeNode=new ArrayList<>();
    		this.ListMapTOListTreeNode(listMap, listTreeNode);
    		return listTreeNode;
    		
    	}
    	
     /**
      * [{'menuid':001,'Menuname':’菜单管理‘:‘学生管理’},{''},{'menuid':001,'Menuname':’菜单管理‘:‘学生管理’},{''},]
      * @param paMap
      * @param pageBean
      * @return
      * @throws InstantiationException
      * @throws IllegalAccessException
      * @throws SQLException
      */
    	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");//获取meuid,从前台传过来的
    		if(StringUtils.isNotBlank(menuId)) {//如果id 不为空我们就拼接
    			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");//获取meuid,从前台传过来的
    		if(StringUtils.isNotBlank(menuId)) {//如果id 不为空我们就拼接
    			//为什么将Parentid改成menuid
    			//原因之前的方法,只能查询当前的节点的所有子节点集合,不能将当前节点给查询出来,
    			sql +=" and menuId in ("+menuId+")";
    		}else {
    			sql +=" and menuId=000";//如果上面没有查我们就要查顶级节点
    		}
    		//存放着是数据库中的菜单信息
    		List<Map<String, Object>> listMap= super.executeQuery(sql, pageBean);
    		
    		return listMap;
    		
    		
    	
       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,'Menuname':’菜单管理‘:‘学生管理’},{''},{'menuid':001,'Menuname':’菜单管理‘:‘学生管理’},{''},]
        * 
        * @param listMap
        * @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.web;
    
    import java.util.List;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.framework.ActionSupport;
    
    import com.dao.UserDao;
    
    
    
    public class UserAction extends ActionSupport {
    	
    	private UserDao userDao=new UserDao();
    	
    /**
     * 登录方法。登录成功后跳转index.jsp
     * @param req
     * @param resp
     * @return
     */
    	public String login(HttpServletRequest req, HttpServletResponse resp) {
    		try {
    			//系统中是否有当前登录用户
    			try {
    				Map<String, Object> map = this.userDao.list(req.getParameterMap(), null).get(0);
    				//有
    				if(map !=null && map.size() > 0) {
    					StringBuilder sb=new StringBuilder();
    					List<Map<String, Object>> menuIdArr = this.userDao.getMenuIdsBy(req.getParameterMap(), null);
    					for (Map<String, Object> m : menuIdArr) {
    						sb.append(","+m.get("menuId"));
    					}
    					req.setAttribute("menuIds", sb.substring(1));
    					return "index";
    				}else {
    					//查询用户菜单中间表,获取对应menuid的集合
    					//没有
    					req.setAttribute("mag","用户名不存在");
    					return "login";
    				}
    			} catch (Exception e) {
    				req.setAttribute("mag","用户名不存在");
    				return "login";
    			}
    		
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return "login";
    		}
    	   
    		
    	 }
    	
    	
    	
    	
    }
    

      

      index.js

    $(function(){
    	$('#tt').tree({    
    	    url:'menuAction.action?methodName=menuTree&&MenuId='+$("#menuIds").val(),
    	    onClick: function(node){
    //			alert(node.text);  // 在用户点击的时候提示
    //			// add a new tab panel    $.extends
    			var content = '<iframe scrolling="no" frameborder="0" src="'+node.attributes.menuURL+'" width="99%" height="99%"></iframe>';
    			if($('#menuTab').tabs('exists',node.text)){
    //				存在执行选项卡选中已有选项卡的操作
    				$('#menuTab').tabs('select',node.text);
    			}else{
    //				不存在执行新增的操作
    				$('#menuTab').tabs('add',{    
    				    title:node.text,    
    				    content:content,    
    				    closable:true
    				});  
    			}
    			
    		}
    	    });  
    
    
    })
    

      

     在index.jsp里面加入web层传过来的用户登录时的menuid代码

    <input type="hidden" id="menuIds" value="${menuIds}">
    

      

     登陆页面:login.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>Insert title here</title>
    </head>
    <body>
      <form action="${pageContext.request.contextPath }/userAction.action?methodName=login" method="post">
         uid:<input type="text" name="uid"><br>
         upwd:<input type="text" name="upwd"><br>
              <input type="submit">
       </form>
       <span style="color: red">${msg }</span>
    </body>
    </html>
    

      

     MXL配置

    <?xml version="1.0" encoding="UTF-8"?>
    <config>
    	
    	<action path="/menuAction" type="com_tanhaifang.web.MenuAction"></action>
    	
    	<action path="/userAction" type="com_tanhaifang.web.UserAction">
    		<forward name="index" path="/index.jsp" redirect="false" />
    		<forward name="login" path="/login.jsp" redirect="false" />
    </action> </config>

     

    运行结果:

    就只简单运行001啦!!!

     

  • 相关阅读:
    关于ARMv8指令的几个问题
    cocos2d-x2.2.3 Layer分析
    unity3D iTween的使用
    lucene索引库的增删改查操作
    【剑指offer】数值的整数次方
    Integer to Roman
    HTML标签之marquee
    Django练习——TodoList
    html5式程序员表白
    00085_异常
  • 原文地址:https://www.cnblogs.com/BAYOUA/p/11112016.html
Copyright © 2011-2022 走看看