`
xgbjmxn
  • 浏览: 269480 次
  • 性别: Icon_minigender_1
  • 来自: 新乡
社区版块
存档分类
最新评论

struts-menu (权限动态菜单实现)(转)

阅读更多
struts-menu (权限动态菜单实现)(转)

package com.test.struts.action;
import com.Hibernate.SessionFactory;

public class FindAction extends Action {
private static final String role="admin";

private void buildMenuPermissions(HttpServletRequest request) {
PermissionsAdapter permession = new PermissionsAdapter() {
public boolean isAllowed(MenuComponent menu) {
if(role.equals("贾00")){
return !"我".equalsIgnoreCase(menu.getName());
}
if(role.equals("我")){
return !"贾00".equalsIgnoreCase(menu.getName());
}
return true;
}
};
request.setAttribute("examplesPermession", permession);
}

public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
//权限控制
buildMenuPermissions(request);
//创建连接
Session session=SessionFactory.currentSession();
//创建事务
Transaction tx=session.beginTransaction();
//创建对话
Query query=session.createQuery("FROM MenuItem m order by id");
List list=query.list();
//事务提交
tx.commit();
if(list.size()<0)
return mapping.getInputForward();
MenuRepository repository = new MenuRepository();
HttpSession httpsession=(HttpSession)request.getSession();
ServletContext application=(ServletContext)httpsession.getServletContext();
MenuRepository defaultRepository = (MenuRepository)application.getAttribute(MenuRepository.MENU_REPOSITORY_KEY);
repository.setDisplayers(defaultRepository.getDisplayers());
for (int i=0; i < list.size(); i++) {
MenuComponent mc = new MenuComponent();
MenuItem mi=(MenuItem) list.get(i);
String name = mi.getName();
mc.setName(name);
String parent = (String) mi.getParentName();
System.out.println(name + ", parent is: " + parent);
if (parent != null) {
MenuComponent parentMenu = repository.getMenu(parent);
if (parentMenu == null) {
parentMenu = new MenuComponent();
parentMenu.setName(parent);
repository.addMenu(parentMenu);
}
mc.setParent(parentMenu);
}
String title = (String)mi.getTitle();
mc.setTitle(title);
String location = (String) mi.getLocation();
mc.setLocation(location);
repository.addMenu(mc);
}
request.setAttribute("repository", repository);
return mapping.findForward("okGo");
}


}
menu-config.xml 配置如下:

<?xml version="1.0" encoding="UTF-8" ?>

<MenuConfig>

<Displayers>
<Displayer name="DropDown"
type="net.sf.navigator.displayer.DropDownMenuDisplayer"/>
<Displayer name="Simple"
type="net.sf.navigator.displayer.SimpleMenuDisplayer"/>
<Displayer name="CoolMenu"
type="net.sf.navigator.displayer.CoolMenuDisplayer"/>
<Displayer name="CoolMenu4"
type="net.sf.navigator.displayer.CoolMenuDisplayer4"/>
<Displayer name="MenuForm"
type="net.sf.navigator.example.PermissionsFormMenuDisplayer"/>
<Displayer name="ListMenu"
type="net.sf.navigator.displayer.ListMenuDisplayer"/>
<Displayer name="TabbedMenu"
type="net.sf.navigator.displayer.TabbedMenuDisplayer"/>
<Displayer name="Velocity"
type="net.sf.navigator.displayer.VelocityMenuDisplayer"/>
</Displayers>

<Menus>

</Menus>

</MenuConfig>

struts.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards >
<forward name="okGo" path="/ok.jsp" />

</global-forwards>

<action-mappings >
<action path="/find" type="com.test.struts.action.FindAction" />

</action-mappings>

<message-resources parameter="com.test.struts.ApplicationResources" />
<plug-in className="net.sf.navigator.menu.MenuPlugIn">
<set-property property="menuConfig" value="/WEB-INF/menu-config.xml" />
</plug-in>
</struts-config>

menu.jsp如下:

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ taglib uri="/WEB-INF/struts-menu.tld" prefix="menu" %>
<%@ taglib uri="/WEB-INF/struts-menu-el.tld" prefix="menu-el" %>
<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Dynamic, Database-driven Menu</title>
<link rel="stylesheet" type="text/css" media="all"
href="<c:url value="/styles/menuExpandable.css"/>" />
<script type="text/javascript"
src="<c:url value="/scripts/menuExpandable.js"/>"></script>
<link rel="stylesheet" type="text/css" media="all"
href="<c:url value="/styles/xtree.css"/>" />
<script type="text/javascript"
src="<c:url value="/scripts/xtree.js"/>"></script>
<link rel="stylesheet" type="text/css" media="all"
href="<c:url value="/styles/global.css"/>" />

</head>
<body>
<div class="dynamicMenu">
<menu:useMenuDisplayer name="ListMenu" permissions="examplesPermession" bundle="examplesBundle" repository="repository">
<menu:displayMenu name="屈驾"/>
<menu:displayMenu name="贾媛媛"/>
</menu:useMenuDisplayer>
</div>

</body>
</html>
来自: http://hi.baidu.com/bnln1/blog/item/eb9cc1fae318a76c024f56f5.html
分享到:
评论

相关推荐

    使用Struts-menu轻松实现网页菜单.doc

    如下拉菜单(`DropDownMenu`)、简单菜单(`SimpleMenu`)、酷炫菜单(`CoolMenu`)、权限表单菜单(`PermissionsFormMenu`)、列表菜单(`ListMenu`)、标签式菜单(`TabbedMenu`)、模板引擎驱动菜单(`...

    struts-menu文件

    7. **权限控制**:Struts-menu支持与Spring Security或Apache Shiro等权限管理框架集成,可以实现菜单项的动态显示,根据用户的权限来决定哪些菜单可以被看到或点击。 8. **自定义扩展**:除了基本功能,开发者还...

    Struts-Menu实例教程

    Struts-Menu是一个基于Apache Struts框架的菜单生成库,它可以帮助开发者轻松地在Web应用中创建动态、可配置的菜单结构。这个实例教程将深入介绍如何使用Struts-Menu来构建用户界面的导航系统。 1. **Struts框架...

    struts-menu集成struts2.3.1例子以及注意的地方

    `struts-menu`是一个开源项目,用于生成基于JSP的动态菜单。它支持多种格式的数据源,如XML、数据库等,可以方便地与Struts2的Action和结果类型结合,为Web应用提供自定义的导航结构。集成`struts-menu`能够使开发者...

    struts-menu权限按钮(项目例子)

    3. **动态生成菜单**:当用户请求页面时,Struts-menu会根据用户的权限信息,动态生成用户可以访问的菜单项和按钮。未授权的菜单和按钮将不会显示在用户界面上,从而实现了权限控制。 4. **模板渲染**:Struts-menu...

    struts-menu例子

    - **权限控制**:结合Spring Security或Struts2的拦截器实现菜单的动态显示,根据用户权限过滤菜单项。 - **优化性能**:考虑缓存策略,减少每次请求时的菜单构建开销。 - **响应式设计**:针对不同的设备(如...

    Struts-menu例子加视频

    4. **动态菜单**:Struts-menu支持动态生成菜单,这意味着菜单内容可以根据用户角色、权限或业务状态动态变化。这在多用户、多权限的复杂应用中非常实用。 5. **视频教程**:“速动画教程第十四集.exe”和“.rtf”...

    项目开发过程中使用Struts-menu

    Struts-menu是一个开源项目,主要用于在基于Struts的Web应用程序中生成动态菜单。它提供了多种显示样式,并且可以根据用户权限进行动态控制。以下是对Struts-menu集成和使用的详细说明: 首先,集成Struts-menu需要...

    struts-menu实例

    在实际应用中,`strutsMenu`这个文件可能是整个实例的源码或者示例项目的打包文件。它可能包含了以下内容: - `struts-menu.xml`:配置文件,定义了菜单结构。 - `MenuAction.java`:可能是一个处理菜单逻辑的...

    struts-menu-2.0

    这个组件包含了一些核心的JAR文件(如struts-menu-core-2.0.jar),这些文件包含了实现菜单功能所需的所有类和方法。同时,它还提供了一些示例代码和配置文件,帮助开发者快速理解和使用这个组件。 在lib目录下,你...

    Struts-menu源码分析(转贴).rar

    通过以上分析,我们可以了解到Struts-menu如何在Struts框架下实现动态菜单功能,同时加深对Struts、MVC模式、自定义标签等概念的理解。实际操作中,阅读和理解源码能帮助我们更好地定制和维护这样的组件,提升开发...

    struts-menu

    5. **权限控制**:通过集成Spring Security或其他权限框架,Struts-menu可以实现对菜单项的权限检查,确保用户只能访问他们被授权的功能。 6. **可扩展性**:Struts-menu的设计允许开发者添加新的菜单类型和行为,...

    Struts-Menu.jar

    4. **权限控制**:StrutsMenu支持基于角色的访问控制(RBAC),可以通过配置指定只有拥有特定角色的用户才能看到或访问某些菜单项。 5. **定制**:StrutsMenu的灵活性很高,开发者可以通过自定义样式和JavaScript来...

    权限控制(struts2+hibernate+spring+struts-menu+valuelist)

    接下来,struts-menu是一个专门用于生成动态菜单的插件,它根据用户的权限动态生成显示的菜单项。在项目中,struts-menu会基于用户的角色和权限信息,生成仅包含用户有权访问的菜单,这样可以确保用户界面的简洁性和...

    struts-menu-2.4.3-src

    在实际开发中,Struts Menu 提供了动态生成菜单的能力,可以根据用户的权限和应用状态自动生成相应菜单,这在多用户角色和复杂权限控制的系统中尤其有用。同时,它支持国际化,可以方便地适应不同语言环境。此外,...

    xtree一个关于Struts-menu的项目

    Struts-menu在没有权限控制时最简单,只需配置文件就可以生成需要的菜单;在要菜单权限控制时,可以和Tomcat(或其他J2EE容器)的认证机制结合实现权限控制,也可以利用后台数据库的方式实现权限控制。

    Struts——Menu示例教程

    6. **动态Menu**:为了提高灵活性,还可以考虑实现动态生成Menu的功能,这可能涉及到权限控制,即根据用户角色和权限动态决定哪些菜单项可见。 在提供的文件列表中,"速动画教程第十四集.exe"和"速动画教程第十四集...

    基于数据库的struts-menu.rar

    这个"基于数据库的struts-menu.rar"学习例子旨在教你如何在Struts框架中实现动态菜单,这些菜单数据是从数据库中获取的,而不是硬编码在程序中。这增加了应用的灵活性,使得管理员能够通过数据库来管理和更新菜单项...

    J2EE 0.4—加入批量CRUD功能、加入框架页面、加入struts-menu等

    3. **Struts Menu**:Struts Menu 是一个开源的Apache Struts插件,用于生成动态菜单。它根据用户权限和业务数据自动生成Web应用的导航菜单,简化了开发过程。Struts Menu 可以与Hibernate、EJB等持久层技术集成,...

Global site tag (gtag.js) - Google Analytics