- 浏览: 5826354 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
用户权限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
左侧菜单页面left.jsp
获取用户对应的系统应用菜单
这样只要修改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("--------------------获取用户对应的系统应用菜单结束-------------------------");
发表评论
-
DetachedCriteria查询实例
2010-07-20 15:52 2114项目中用到了DetachedCriteria,顺便记下来 De ... -
hibernate学习13之悲观锁与乐观锁
2010-01-28 11:55 2012悲观锁Pessimistic 悲观锁 ... -
hibernate学习12之Collection(集合)映射
2010-01-28 11:09 2018set list array map 的映射。 集合映射会发 ... -
hibernate学习11之composite(复合)主键映射
2010-01-28 10:50 2200复合主键映射可以看作是组件映射的一个特例. <!D ... -
hibernate学习10之component(组件)映射
2010-01-28 10:34 1847在hibernate中,component是某个实体的逻辑组成 ... -
hibernate学习9之extends(继承)映射
2010-01-28 10:19 3021hibernate.cfg.xml: <!DOCTY ... -
hibernate学习8之lazy策略
2010-01-27 17:44 1935hibernate lazy策略可以使用在: * <c ... -
hibernate学习7之many-to-many双向关联
2010-01-27 16:54 1870Hibernate.cfg.xml配置同前一节。 imp ... -
hibernate学习6之many-to-many单向关联
2010-01-27 16:40 2439<!DOCTYPE hibernate-config ... -
hibernate学习5之one-to-many双向关联
2010-01-27 16:10 2320一对多双向关联映射: * 在一一端的集合上使用<key ... -
hibernate学习4之one-to-many单向关联(不推荐)
2010-01-27 15:47 4792一对多和多对一的映射策略是一样的,只是站的角度不同. 多对一 ... -
hibernate学习3之one-to-one单向外键关联
2010-01-27 14:55 3113one-to-one关联其实是many-to-one的一种特殊 ... -
hibernate学习2之many-to-one
2010-01-27 14:37 1897public class Group { privat ... -
hibernate学习1之基础工具
2010-01-27 14:21 1802//根据映射文件生成数据库表 import org.hib ... -
Hibernate批量删除出现sql异常Connection is read-only. Queries leading ... are not allowed
2009-12-23 17:48 9153在做批量删除时出现: Connection is read- ... -
PaginationSupport加强版的分页代码
2009-09-21 13:04 4980PaginationSupport.java,这个类网上有,我 ... -
数据插入不成功的问题
2009-09-03 13:25 1803检查表的字段名中是否有sql关键字,如use,count,ma ... -
Hibernate的批量更新和删除
2009-08-16 22:03 2142批量更新是指在一个事 ... -
利用myeclipse 生成Hibernate Mapping文件时出现No entries available的解决办法
2009-07-30 23:26 16798在hibernate中,每个数据表对应的其实是一个实体类,每个 ...
相关推荐
在这个场景中,我们关注的是如何利用Shiro实现根据用户权限动态显示不同的菜单。 首先,理解Shiro的核心概念是关键。在Shiro中,权限分为角色(Role)和权限(Permission)。角色是一组权限的集合,权限则具体描述...
- **菜单权限控制**:根据用户角色动态生成显示的菜单,隐藏无权访问的功能。 - **按钮权限控制**:针对具体操作,如添加、删除、修改等,控制按钮的可见性和可用性。 - **数据过滤**:在数据列表展示时,根据用户...
当用户登录时,Shiro会验证其凭证,然后根据用户角色和权限设置,动态生成并显示相应的菜单。 **MyBatis** MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。在本项目中,MyBatis与Spring ...
本压缩包“C#BS版本的根据用户权限动态加载菜单.rar”提供了一个示例,旨在展示如何在BS架构下,基于C#实现动态加载菜单的功能,这涉及到权限管理和前端渲染两个主要方面。 首先,我们需要理解权限管理的概念。权限...
在ASP.NET开发中,"根据用户权限动态加载Treeview"是一项关键功能,它涉及到用户界面的个性化和安全性。Treeview控件是ASP.NET Web Forms中常用的一种数据展示方式,它通常用于构建层次化的导航结构,如菜单系统。...
3. 表现层(UI):使用ASP.NET控件动态生成菜单,根据用户的权限显示或隐藏相应选项。 4. 配置文件(如Web.config):配置安全设置,如身份验证模式、授权规则等。 对于初学者来说,学习这个源码可以帮助他们理解...
因此,根据用户权限动态显示或隐藏tabbar的某些选项,可以提供更加个性化的用户体验。 1. ** Uniapp**:Uniapp是一个基于Vue.js的多端开发框架,它允许开发者编写一次代码,就可以在iOS、Android、H5、小程序等多个...
该资源是本人自己编写的登录权限所有源码,动态显示选项菜单
本文将围绕“根据用户初始化菜单权限”这一主题,深入探讨其背后的原理、实现方法以及代码示例,帮助读者理解并掌握如何在C#中实现基于用户权限的菜单动态显示。 ### 核心概念解析 #### 用户权限 用户权限是指系统...
这涉及到根据用户的权限级别来决定他们能看到哪些功能或菜单项。本例程专为Delphi新手提供,旨在帮助初学者理解如何实现这样的系统。 首先,我们需要理解权限菜单的基本概念。在大多数应用程序中,用户分为不同的...
4. **动态生成菜单**:在WinForm中,我们可以遍历菜单结构,根据用户所属的角色来决定显示哪些菜单项。可以创建一个方法,接收当前用户的角色信息,然后检查每个菜单项是否与这些角色关联。 ```csharp private void...
动态加载菜单是权限管理的一种直观表现,它根据用户的权限决定在界面上显示哪些菜单项。在C#中,我们可以使用数据绑定技术,结合MVVM(Model-View-ViewModel)模式或者MVC(Model-View-Controller)模式来实现。首先...
在加载菜单时,系统会查询数据库以确定用户角色所拥有的菜单权限,并只显示相应的菜单项。这样,用户只能看到并访问与其角色匹配的菜单功能。 总之,C#环境下的菜单与权限控制涉及用户角色分配、权限配置、权限管理...
1、小程序底部的tabBar需要根据不同用户角色显示不同底部导航。 2、使用自定义底部导航custom-tab-bar优雅实现微信小程序动态tabBar。 3、实现自由组合tabBar菜单项目,支持自由组合总数超过5个tabBar菜单。 4、本...
5. **动态添加路由**:根据用户角色生成可访问的路由表。这通常通过调用一个 action 如 `GenerateRoutes` 来完成,该 action 根据角色信息动态生成路由,并使用 `router.addRoutes()` 添加到当前路由实例。 6. **...
在菜单系统中,动态加载菜单项意味着程序在启动时并不一次性加载所有菜单,而是根据用户的权限信息实时生成和显示菜单。这样可以减少内存占用,提高程序性能,并且便于后期维护和扩展,因为新的菜单项或功能可以在不...
权限菜单是指根据用户角色的不同,显示不同的菜单选项。例如,管理员可能看到所有功能,而普通用户只能看到他们被授权的操作。这种动态菜单生成基于用户角色的权限信息,提高了系统的安全性和用户体验。 5. **...
在本文中,我们详细地了解了如何利用Vue.js的官方状态管理库Vuex来根据用户权限动态展示路由列表。通过state定义数据,mutations修改数据,actions处理异步操作,getters派生新数据,最后结合vue-router来动态地控制...
根据用户的角色,动态生成菜单。如果用户没有某个功能的权限,那么对应的菜单项就不显示。这可以通过在后台查询用户的角色,然后获取角色所包含的权限来实现。 **5. 权限检查** 在每个需要权限控制的方法或事件...
首先,动态菜单是指菜单项可以根据用户的登录状态和权限动态生成。在ASP.NET中,这通常通过查询数据库来获取用户角色和相应的菜单项,然后在服务器端代码(如C#或VB.NET)中构建HTML结构,再将其发送到客户端。动态...