`

根据用户权限,动态显示用户菜单

阅读更多
用户权限userPermission,比如[1][2][3][4][5][6][7][8][9][10],这里的数字对应着菜单id号,所有菜单allPermission,比如[1][2][3][4][5][6][7][8][9][10][11][12][13][14]...
这样只要修改userPermission里的数字,就能动态显示菜单,记得刷新一下。
viewUser.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

<% String allPermission=(String)request.getAttribute("allMenu"); %>
<% String userPermission=(String)request.getAttribute("userPermission"); %>

<html:html xhtml="true">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>修改权限</title>
	<link href="css/style.css" rel="stylesheet" type="text/css" />
	<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
	<script type="text/javascript">
    $(document).ready(function(){
    
	});
    </script>
    
<script language="JavaScript" type="text/javascript">
<!--
function selectKind(the){
var obj = the;
var container = document.getElementById("kind_" + obj.name);
for(var i=0;i<container.getElementsByTagName("input").length;i++)
{
//container.getElementsByTagName("input")[i].disabled = obj.checked;
container.getElementsByTagName("input")[i].checked = obj.checked;;
}
}

function getCheckedBox(){
//var container = document.getElementById("checks");
var checkNum=document.getElementsByTagName("input").length;
var values="";
for(var i=0;i<checkNum;i++){
 if(document.getElementsByTagName("input")[i].checked){
 	values+="["+document.getElementsByTagName("input")[i].value+"]";
 }
}
//alert(values);
window.location.href("userManage.portal?action=sendUpdate"+"&permissions="+values+"&id="+document.forms[0].id.value);
}

-->
</script>

</head>
<body>
	<html:form action="/userManage.portal">
		<html:hidden property="action" />
		<html:hidden property="id" />
			<table border="0" cellpadding="0" cellspacing="0" width="80%" align="center">
					<logic:iterate id="module" name="parentVector" type="com.worthtech.app.bean.Module" indexId="index">
						<% int i = ((java.lang.Integer) pageContext.findAttribute("index")).intValue(); %>
						
						<% if(allPermission.indexOf("["+module.getId()+"]")!=-1){%>
							<table border="0" width="400">
								<tr>
									<td>
										<div align="left" >
											<% if(userPermission.indexOf("["+module.getId()+"]")!=-1) {%>
											<input type="checkbox" value="<%=module.getId() %>" name=<%=i %> onclick="selectKind(this)" checked><%=module.getModuleName()%>
											<%}else{ %>
											<input type="checkbox" value="<%=module.getId()%>" name=<%=i %> onclick="selectKind(this)"><%=module.getModuleName()%>
											<%} %>
										</div>
									</td>
								</tr>
							</table>
						<%}%>
						
						<div id=<%= "kind_"+i %> style="padding-left:20px">
							<table border="0" width="300">
								<logic:iterate id="childModule" name="childVector" type="com.worthtech.app.bean.Module">
									<%
									if(allPermission.indexOf("["+childModule.getId()+"]")!=-1&&childModule.getParentId().intValue()==module.getId().intValue()){
									 %>
										<tr>
											<td>
												<% if(userPermission.indexOf("["+childModule.getId()+"]")!=-1) {%>
												<input type="checkbox" value="<%=childModule.getId()%>" name=<%=i %> checked><%=childModule.getModuleName()%>
												<%}else{ %>
												<input type="checkbox" value="<%=childModule.getId()%>" name=<%=i %> ><%=childModule.getModuleName()%>
											    <%} %>
											</td>
										</tr>
									<%
									}
									%>
								</logic:iterate>
							</table>
						</div>
					</logic:iterate>
			</table>
			<input title="修改权限" class="menuList" onclick="getCheckedBox();" type="button" value="提 交">
			
			<input title="返回" class="menuList" onclick="window.location.href('userManage.portal?action=listUser');" type="button" value="返 回">
										
	</html:form>
</body>
</html:html>

package com.worthtech.app.action;

import java.util.*;

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

import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessages;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import com.worthtech.app.bean.Module;
import com.worthtech.app.bean.User;
import com.worthtech.app.form.UserForm;
import com.worthtech.app.service.BaseService;
import com.worthtech.app.service.ModuleService;
import com.worthtech.app.util.Constant;
import com.worthtech.app.util.PaginationSupport;

public class UserAction extends BaseAction {
	private BaseService baseService;
	private ModuleService moduleService;
	public ActionForward execute(ActionMapping mapping, ActionForm actionForm,
			HttpServletRequest request, HttpServletResponse response) {
		UserForm form=(UserForm)actionForm;
		ActionMessages errors = new ActionMessages();
		System.out.println("form.getAction()="+form.getAction());
		System.out.println("Parameter="+request.getParameter("action"));
		String action=request.getParameter("action");
		
		if("listUser".equals(action)){
			System.out.println("----------------list user -----------------");
			if(request.getParameter("queryAll")!=null){
				form.close();
				initUserListAll(mapping,form,request,response);
				return mapping.findForward("listUser");
			}
			initUserList(mapping,form,request,response);
			return mapping.findForward("listUser");
		}
		if("delete".equals(action)){
			System.out.println("----------------delete user -----------------");
			String id=request.getParameter("id");
			User instance=(User)this.getBaseService().get("User", id);
			this.getBaseService().delete(instance);
			System.out.println("-------delete success------------");
			initUserList(mapping,form,request,response);
			return mapping.findForward("listUser");
		}
		if("update".equals(action)){
			System.out.println("----------------update user -----------------");
			String id=request.getParameter("id");
			form.setId(id);
			User instance=(User)this.getBaseService().get("User", id);
//			初始化菜单,根据MenuLevel=0代表根目录从0开始
			List allModuleList = this.getModuleService().getModuleTree(Integer.parseInt(instance.getMenuLevel()));//1实体终端交易,2用户管理
			
			Iterator menu = allModuleList.iterator();
			Vector parentV = new Vector();
			Vector childV = new Vector();
			Module module;
			String allMenu="";
			while (menu.hasNext()) {
				module = (Module) menu.next();
				if (module.getParentId().intValue() == 0) {//0表示父菜单
					parentV.add(module);
				} else {
					childV.add(module);
				}
				allMenu+="["+module.getId()+"]";
			}
//			System.out.println("allPermission="+allPermission);
//			System.out.println("userPermission="+user.getTelephone());
			request.setAttribute("parentVector", parentV);//所以的父菜单
			request.setAttribute("childVector", childV);//所以的子菜单
			request.setAttribute("allMenu", allMenu);//所有菜单(String型)
			request.setAttribute("userPermission", instance.getPermission());//当前用户菜单(String型)
			return mapping.findForward("viewUser");
		}
		if("sendUpdate".equals(action)){
			System.out.println("----------------sendUpdate user -----------------");
//			String id=form.getId();
			String id=request.getParameter("id");
			System.out.println("id="+id);
			String permissions=request.getParameter("permissions");
			System.out.println("permissions="+permissions);
			User instance=(User)this.getBaseService().get("User", id);
			instance.setPermission(permissions);
			this.getBaseService().update(instance);
			System.out.println("---------------update success----------------------");
			initUserList(mapping,form,request,response);
			return mapping.findForward("listUser");
		}
		return mapping.findForward("wait");
	}
	public BaseService getBaseService() {
		return baseService;
	}
	public void setBaseService(BaseService baseService) {
		this.baseService = baseService;
	}
	public void initList(HttpServletRequest request,UserForm form,DetachedCriteria detachedCriteria){
		PaginationSupport pagination=this.getBaseService().findPageByCriteria(detachedCriteria, Constant.PAGESIZE, form.getStartIndex());
		List list = pagination.getItems();
//		System.out.println("billPayList.size="+list.size());
		request.setAttribute("list", list);
		request.setAttribute("pagination", pagination);
//		System.out.println("-----------------执行完毕!!!---------------");
	}
	
	public void initUserList(ActionMapping mapping, UserForm form,
			HttpServletRequest request, HttpServletResponse response){
		DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class);
		
		String keyword_0=form.getSearchName();
		if(StringUtils.isNotEmpty(keyword_0)){
			detachedCriteria.add(Restrictions.like("userName", "%"+keyword_0+"%"));
		}
		String keyword_1=form.getSearchDepartment();
		if(StringUtils.isNotEmpty(keyword_1)){
			if(keyword_1.equals("全部")){//全部
			}else{
				detachedCriteria.add(Restrictions.like("address", "%"+keyword_1+"%"));
			}
		}
//		排序
		detachedCriteria.addOrder(Order.desc("id"));
//		detachedCriteria.addOrder(Order.desc("addTime"));
		initList(request,form,detachedCriteria);
	}
	public void initUserListAll(ActionMapping mapping, UserForm form,
			HttpServletRequest request, HttpServletResponse response){
		DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class);
		
//		排序
		detachedCriteria.addOrder(Order.desc("id"));
//		detachedCriteria.addOrder(Order.desc("addTime"));
		initList(request,form,detachedCriteria);
	}
	public ModuleService getModuleService() {
		return moduleService;
	}
	public void setModuleService(ModuleService moduleService) {
		this.moduleService = moduleService;
	}
}


左侧菜单页面left.jsp
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>LEFT</title>
		<link rel="stylesheet" href="css/style.css" type="text/css">
		<script language="JavaScript">
<!--
function doExit(){
	if (confirm("您确定要退出本系统吗?")){
				window.open("login.portal?action=logout","_parent","");
	}
}
		
//-->
</script>
		<script language="JavaScript">
        var w=200;
        function closenavi() {
        w-=200;
        if (w>-10) {window.parent.testframeset.cols = ''+w+',*';repeat=setTimeout("closenavi()",10);}
        else {clearTimeout(repeat);w=200;}
        }

        function loginOutPage() {			
        document.forms[1].SIGN_OFF.click();
        }

        function initIt(){
        divCount = document.all.tags("DIV");
        for (i=0; i<divCount.length; i++) {
        obj = divCount(i);
        if (obj.className == "child" || obj.className == "child1") obj.style.display = "none";
        }
        }

        function expandIt(el) {
	        obj = eval("page" + el);
	        obj2 = eval("main" + el);
	        if (obj.style.display == "none") {
		        obj.style.display = "block";
	        }
	        else {
		        obj.style.display = "none";
	        }
        }

        onload = initIt;

        var judge=0;
        function expandall(o) {
        if (judge==0) {divCount2 = document.all.tags("DIV");
        for (i=0; i<divCount2.length; i++) {
        obj2 = divCount2(i);
        if (obj2.className == "child" || obj.className == "child1" || obj2.style.display == "none") 
        {obj2.style.display = "block";}
        if (obj2.className == "menu")
        {
        //obj2.all.tags('img')[0].src='images/treeimg/tminus.gif';
        obj2.all.tags('img')[0].src='images/openfolder1.gif';
        }
        }

        judge=1;
        o.src='images/icon-closeall.gif';
        o.alt='全部折叠';
        }
        else {divCount2 = document.all.tags("DIV");
        for (i=0; i<divCount2.length; i++) {
        obj2 = divCount2(i);
        if (obj2.className == "child" || obj.className == "child1" || obj2.style.display == "block") 
        {obj2.style.display = "none";}
        if (obj2.className == "menu")
        {
        obj2.all.tags('img')[0].src='images/folder1.gif';
        }
        }

        judge=0;
        o.src='images/icon-expandall.gif';
        o.alt='全部展开';
        }
        }

        function quit(form) {
        window.close()
        }

        function loginOutPage() {			
        document.forms[0].SIGN_OFF.click();
        }
		
    </script>
    
	</head>

	<body bgcolor="#D8DADA" class="bodyTop">
			
			<logic:iterate id="module" name="parentVector" type="com.worthtech.app.bean.Module" indexId="index">
				<%
				int i = ((java.lang.Integer) pageContext.findAttribute("index")).intValue();
				%>
				<div id=<%="main" + i%> class="title" onClick="expandIt(<%="" + i%>); return false">
					<table class="TableLeftTop" style="margin-top: 10px" width="138"
						border="0" cellspacing="0" cellpadding="4">
						<tr>
							<td background="images/LeftMenuBack.jpg">
								<div align="center">
									<%=module.getModuleName()%>
								</div>
							</td>
						</tr>
					</table>
				</div>

				<div id=<%="page" + i%> class="child">
					<table class="TableLeftView" width="140" border="0" cellspacing="0" cellpadding="0">
						<logic:iterate id="childModule" name="childVector" type="com.worthtech.app.bean.Module">
							<%
							if(childModule.getParentId().intValue()==module.getId().intValue()){
							 %>
							<tr>
								<td width="44">
									<div align="right">
										<img src="images/t.gif" width="19" height="20">
									</div>
								</td>
								<td width="161">
									<a href=<%=childModule.getActionUrl()%> target="mainFrame"><%=childModule.getModuleName()%></a>
								</td>
							</tr>
							<%
							}
							%>
						</logic:iterate>
					</table>
				</div>
			</logic:iterate>

			
				<table style="margin-top: 10px" width="140" border="0" align="center" cellpadding="2" cellspacing="0">
					<tr>
						<td>
							<div align="center">
								<a href="#" onclick="doExit();">
									<img src="images/ico01.gif" width="65" height="15" border="0" class="MouseOver">
								</a>
							</div>
						</td>
						<td>
							<div align="center">
								<a href="login.portal?action=password" target="mainFrame">
									<img class="MouseOver" src="images/ico02.gif" width="65" height="15" border="0">
								</a>
							</div>
						</td>
					</tr>
				</table>
		
	</body>
</html>

获取用户对应的系统应用菜单
// 获取用户对应的系统应用菜单
			List allModuleList = this.getModuleService().getModuleTree(
					Integer.parseInt(user.getMenuLevel()));//0代表根菜单

			Iterator menu = allModuleList.iterator();
			Vector parentV = new Vector();
			Vector childV = new Vector();
			Module m;
			while (menu.hasNext()) {
				m = (Module) menu.next();
				if(user.getPermission().indexOf("["+m.getId()+"]")!=-1){
					if (m.getParentId().intValue() == 0) {
							parentV.add(m);
					} else {
							childV.add(m);
					}
				}
			}
			request.getSession().setAttribute("parentVector", parentV);
			request.getSession().setAttribute("childVector", childV);
//			System.out.println("--------------------获取用户对应的系统应用菜单结束-------------------------");

分享到:
评论

相关推荐

    Shiro根据用户权限显示不同的菜单.Shiro根据权限显示指定菜单

    在这个场景中,我们关注的是如何利用Shiro实现根据用户权限动态显示不同的菜单。 首先,理解Shiro的核心概念是关键。在Shiro中,权限分为角色(Role)和权限(Permission)。角色是一组权限的集合,权限则具体描述...

    用户权限管理菜单 用户权限管理菜单 用户权限管理菜单

    - **菜单权限控制**:根据用户角色动态生成显示的菜单,隐藏无权访问的功能。 - **按钮权限控制**:针对具体操作,如添加、删除、修改等,控制按钮的可见性和可用性。 - **数据过滤**:在数据列表展示时,根据用户...

    spring boot+shiro+mybatis实现不同用户登录显示不同的权限菜单

    当用户登录时,Shiro会验证其凭证,然后根据用户角色和权限设置,动态生成并显示相应的菜单。 **MyBatis** MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。在本项目中,MyBatis与Spring ...

    C#BS版本的根据用户权限动态加载菜单.rar

    本压缩包“C#BS版本的根据用户权限动态加载菜单.rar”提供了一个示例,旨在展示如何在BS架构下,基于C#实现动态加载菜单的功能,这涉及到权限管理和前端渲染两个主要方面。 首先,我们需要理解权限管理的概念。权限...

    根据用户权限动态加载Treeview

    在ASP.NET开发中,"根据用户权限动态加载Treeview"是一项关键功能,它涉及到用户界面的个性化和安全性。Treeview控件是ASP.NET Web Forms中常用的一种数据展示方式,它通常用于构建层次化的导航结构,如菜单系统。...

    一款自己写的.net菜单权限源码

    3. 表现层(UI):使用ASP.NET控件动态生成菜单,根据用户的权限显示或隐藏相应选项。 4. 配置文件(如Web.config):配置安全设置,如身份验证模式、授权规则等。 对于初学者来说,学习这个源码可以帮助他们理解...

    手拉手带你实现基于Uniapp和uView,根据权限动态的修改底部菜单tabbar

    因此,根据用户权限动态显示或隐藏tabbar的某些选项,可以提供更加个性化的用户体验。 1. ** Uniapp**:Uniapp是一个基于Vue.js的多端开发框架,它允许开发者编写一次代码,就可以在iOS、Android、H5、小程序等多个...

    登录权限+动态菜单显示

    该资源是本人自己编写的登录权限所有源码,动态显示选项菜单

    根据用户初始化菜单权限

    本文将围绕“根据用户初始化菜单权限”这一主题,深入探讨其背后的原理、实现方法以及代码示例,帮助读者理解并掌握如何在C#中实现基于用户权限的菜单动态显示。 ### 核心概念解析 #### 用户权限 用户权限是指系统...

    delphi 权限菜单 例程

    这涉及到根据用户的权限级别来决定他们能看到哪些功能或菜单项。本例程专为Delphi新手提供,旨在帮助初学者理解如何实现这样的系统。 首先,我们需要理解权限菜单的基本概念。在大多数应用程序中,用户分为不同的...

    C# WinForm实现基于角色权限的菜单

    4. **动态生成菜单**:在WinForm中,我们可以遍历菜单结构,根据用户所属的角色来决定显示哪些菜单项。可以创建一个方法,接收当前用户的角色信息,然后检查每个菜单项是否与这些角色关联。 ```csharp private void...

    C#动态添加菜单实现权限管理

    动态加载菜单是权限管理的一种直观表现,它根据用户的权限决定在界面上显示哪些菜单项。在C#中,我们可以使用数据绑定技术,结合MVVM(Model-View-ViewModel)模式或者MVC(Model-View-Controller)模式来实现。首先...

    关于菜单与权限控制的说明1

    在加载菜单时,系统会查询数据库以确定用户角色所拥有的菜单权限,并只显示相应的菜单项。这样,用户只能看到并访问与其角色匹配的菜单功能。 总之,C#环境下的菜单与权限控制涉及用户角色分配、权限配置、权限管理...

    优雅实现微信小程序动态tabBar,根据不同用户角色显示不同底部导航-更新版(支持自由组合总数超过5个tabBar菜单)

    1、小程序底部的tabBar需要根据不同用户角色显示不同底部导航。 2、使用自定义底部导航custom-tab-bar优雅实现微信小程序动态tabBar。 3、实现自由组合tabBar菜单项目,支持自由组合总数超过5个tabBar菜单。 4、本...

    vue实现后台管理权限系统及顶栏三级菜单显示功能

    5. **动态添加路由**:根据用户角色生成可访问的路由表。这通常通过调用一个 action 如 `GenerateRoutes` 来完成,该 action 根据角色信息动态生成路由,并使用 `router.addRoutes()` 添加到当前路由实例。 6. **...

    C#权限和动态加载菜单

    在菜单系统中,动态加载菜单项意味着程序在启动时并不一次性加载所有菜单,而是根据用户的权限信息实时生成和显示菜单。这样可以减少内存占用,提高程序性能,并且便于后期维护和扩展,因为新的菜单项或功能可以在不...

    C# WinForm角色的权限菜单-源码.zip

    权限菜单是指根据用户角色的不同,显示不同的菜单选项。例如,管理员可能看到所有功能,而普通用户只能看到他们被授权的操作。这种动态菜单生成基于用户角色的权限信息,提高了系统的安全性和用户体验。 5. **...

    vuex根据不同的用户权限展示不同的路由列表功能

    在本文中,我们详细地了解了如何利用Vue.js的官方状态管理库Vuex来根据用户权限动态展示路由列表。通过state定义数据,mutations修改数据,actions处理异步操作,getters派生新数据,最后结合vue-router来动态地控制...

    C# winform 权限控制 包括角色 用户 权限设置

    根据用户的角色,动态生成菜单。如果用户没有某个功能的权限,那么对应的菜单项就不显示。这可以通过在后台查询用户的角色,然后获取角色所包含的权限来实现。 **5. 权限检查** 在每个需要权限控制的方法或事件...

    asp.net动态js菜单(动态菜单+静态菜单+数据库)

    首先,动态菜单是指菜单项可以根据用户的登录状态和权限动态生成。在ASP.NET中,这通常通过查询数据库来获取用户角色和相应的菜单项,然后在服务器端代码(如C#或VB.NET)中构建HTML结构,再将其发送到客户端。动态...

Global site tag (gtag.js) - Google Analytics