|
||||||||||||
|
|
| 在项目中使用Struts-menu |
| 时间:22/04/2007 作者:网络 来源:网络 |
| 小提示→点这里把文章加入您的收藏夹,方便下次查看 |
| 设置文章字体大小:[大 中 小] |
|
如果你正在为设计权限系统而烦恼,可以看看下面的文章 在Struts项目中使用Struts-menu- - 在Struts作为表示层框架的应用中,我们可以使用其众多的Struts plug-ins来丰富其功能。大家使用比较多的是使用Struts-Tiles、Struts-Validator,这里我给大家介绍一下Struts-menu,很好用,在没有权限控制时最简单,只需配置文件就可以了;在要菜单权限控制时,可以和Tomcat(或其他J2EE容器)的认证机制结合实现权限控制,也可以利用后台数据库的方式实现权限控制,这里主要介绍数据库方式,比较灵活,本人一直以为容器验证的方式太死板,不易扩充。 Struts-menu是sourceforge的一个项目,可以直接到sourceforge.net下载。下面介绍一下在Struts项目中如何集成Struts-menu。 方式一:先介绍没有权限控制的方式使用: 1. 将 /lib/struts-menu.jar 拷贝到 WEB-INF/lib/目录下; 2. 将 /lib/struts-menu.tld拷贝到WEB-INF/lib/目录下; 3. 将struts-menu.war中的scripts、styles、images目录拷贝到你的应用"/"目录下 4. 修改 web.xml 加入 taglib 的调用 /WEB-INF/struts-menu.tld /WEB-INF/struts-menu.tld 5. 修改 struts-config.xml 加入 plugin描述 6. 配置menu-config.xml,如: type="net.sf.navigator.displayer.DropDownMenuDisplayer"/> type="net.sf.navigator.displayer.SimpleMenuDisplayer"/> type="net.sf.navigator.displayer.CoolMenuDisplayer"/> type="net.sf.navigator.displayer.CoolMenuDisplayer4"/> type="net.sf.navigator.example.PermissionsFormMenuDisplayer"/> type="net.sf.navigator.displayer.ListMenuDisplayer"/> type="net.sf.navigator.displayer.TabbedMenuDisplayer"/> type="net.sf.navigator.displayer.VelocityMenuDisplayer"/> toolTip="Shows usage of the menu displayers using defaults." page="/menutest1.jsp"/> toolTip="Shows customized menu displays." page="/menutest2.jsp"/> toolTip="Shows menu using CoolMenu3" page="/coolmenu1.jsp"/> toolTip="Shows menu using CoolMenu3 with forms." page="/coolmenu2.jsp"/> toolTip="Example use of menu disable and permission checking with CoolMenus." page="/permissionsForm.jsp"/> toolTip="Shows menu using CoolMenu4" page="/coolmenu4.jsp"/> toolTip="Shows Expandable DHTML list" page="/dhtmlExpandable.jsp"/> toolTip="Shows Dropdown DHTML list" page="/dhtmlDropdown.jsp"/> 说明:断描述了Strut-menu将采用的显示方式,可以在jsp文件中选择Displayer; 进行了相关菜单项目的配置,可以在jsp文件中选择显示的菜单。 7. 在jsp文件(如Struts-tiles中使用了menu.jsp)中加入 可以通过对useMenuDisplayer来设置菜单的显示风格。 8. 可以在浏览其中show啦! 方式二:数据库验证方式 基本配置与方式一一致,只是在JSP中动态构建Menus。 采用数据库验证的方式,后台数据与你的其他数据库验证菜单类似。下面的示例代码中假设从后台数据中得到权限列表ArrayList:res,我下面的示例中的res是在Action中传入的SQLExecutor的结果SQLResults(其实就是ArrayList); Import Struts 的类库:net.sf.navigator.menu.*。 菜单显示部分如下: MenuRepository repository = new MenuRepository(); // Get the repository from the application scope - and copy the // DisplayerMappings from it. MenuRepository defaultRepository = (MenuRepository) application.getAttribute(MenuRepository.MENU_REPOSITORY_KEY); repository.setDisplayers(defaultRepository.getDisplayers()); for (int i=0; i < res.getRowCount(); i++) { MenuComponent mc = new MenuComponent(); String name = res.getString(i, "name"); mc.setName(name); String parent = res.getString(i,"parent_name"); //System.out.println(name + ", parent is: " + parent); if (parent != null) { MenuComponent parentMenu = repository.getMenu(parent); if (parentMenu == null) { System.out.println("parentMenu '" + parent + "' doesn't exist!"); // create a temporary parentMenu parentMenu = new MenuComponent(); parentMenu.setName(parent); repository.addMenu(parentMenu); } mc.setParent(parentMenu); } else { topMenuList.add(name); } String title = (String)res.getString(i,"title"); mc.setTitle(title); String location = (String)res.getString(i,"location"); mc.setLocation(location); repository.addMenu(mc); } pageContext.setAttribute("repository", repository); 这样的调用,详细用法可以参考Struts-menu,当然有兴趣的朋友可以把以上代码包装成特定的Javabeans,方便灵活调用。 玩了一阵struts-menu,总体感觉他的xml配置和权限处理,是我最喜欢的部分。但是他在页面展示上不够灵活,这是他的缺点。 这里推荐一个简单配置权限的方式。就是在楼主介绍的方法一的基础上,利用struts-menu adpater的概念,只要在jsp上加上如下代码: <% try { DropDownPermissionAdapter adapter = new DropDownPermissionAdapter(request); IMenuBO menuBO = new MenuBO(); TreeSet menuTree = menuBO.getAllowedMenuList("hello"); adapter.initializeMenu(menuTree); request.getSession().getServletContext().setAttribute( "AtdMenuAdapter", adapter); }catch(Exception e) { e.printStackTrace() ; } %> <menu:useMenuDisplayer name="TestDropDownDisplayer" bundle="org.apache.struts.action.MESSAGE" permissions="AtdMenuAdapter"> <menu:displayMenu name="01"/> </menu:useMenuDisplayer> 其中MenuBO取出的是权限允许的菜单名字。 DropDownPermissionAdapter 实现了如下: public class DropDownPermissionAdapter implements PermissionsAdapter{ protected TreeSet menuTree = null; ; /** * 菜单初始化的时候调用 * @throws Exception */ public void initializeMenu(TreeSet ts) throws Exception { this.menuTree =ts; } public boolean isAllowed(MenuComponent menu) { if (menuTree == null || menuTree.contains(menu.getName())) { return true; } else { return false; } } } |
|
上一篇:StarSuite6.0 & sdk安装及配置指南-- linux篇 (以redhat8.0/bash为例)
下一篇:大道至简-Java之23种模式一点就通 |
| 【返回】 【顶部】 【关闭】 |
| Copyright © 2005-2010 www.594k.com All Rights Reserved. |
| 版权所有:JAVA学习网
备案序号:皖ICP备06004238号 |