如果你正在为设计权限系统而烦恼,可以看看下面的文章
在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;
}
}
}
<script type="text/javascript"></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
分享到:
相关推荐
6. **集成与使用**:在Struts应用中集成Struts-menu,需要在`struts-config.xml`配置文件中添加相应的配置元素,并确保所有必要的资源文件和库都已正确引入。此外,还需要在JSP页面上使用Struts-menu提供的标签库来...
Struts-Menu是一个基于...通过这个Struts-Menu实例教程,你将学会如何在Struts应用中集成和使用Struts-Menu,创建出符合用户需求的动态菜单系统。实践中,不断调试和完善,你将能够掌握这个工具并提升你的Web开发技能。
1. **放置JAR包**:将`struts-menu-2.4.1.jar`添加至项目的`WEB-INF/lib`目录。 2. **配置插件**:在`struts-config.xml`中添加插件配置,指定菜单配置文件路径。 3. **创建菜单配置文件**:在`WEB-INF`目录下新建`...
2. **TLD文件放置**:将`struts-menu.tld`文件也放入`WEB-INF/lib`目录,这个文件定义了标签库,使得可以在JSP页面中使用Struts-menu的标签。 3. **资源文件拷贝**:将`struts-menu.war`中的`scripts`、`styles`和`...
5. **使用`struts-menu`标签**:在JSP页面中,使用`struts-menu`提供的标签来渲染菜单。这些标签会根据配置的数据源生成HTML代码。 6. **注意事项**:集成过程中可能会遇到的问题包括版本兼容性、资源加载问题、...
在Struts-menu中,menu部分主要负责页面导航和菜单的生成,它与Struts的Action和ActionForm组件协同工作,提供了更方便的方式来管理和呈现网站的菜单结构。 Hibernate是一个强大的对象关系映射(ORM)框架,它简化...
Struts-menu是一个基于Java的开源项目,用于在Struts框架中生成动态菜单。这个例子是Struts-menu的一个实例,提供给需要了解或使用Struts-menu的开发者参考。下面将详细介绍Struts-menu及其在实际开发中的应用,以及...
在Struts-menu中,Menu组件扮演了View的角色,Controller部分则通过Struts的Action类来实现。 2. **配置文件**:在Struts-menu的应用中,需要配置struts-config.xml文件,定义菜单结构和行为。这个配置文件通常包含...
在实际项目中,Struts-menu的使用可以极大地提高开发效率,减少因权限控制导致的代码重复。同时,它使权限管理变得更加直观和易于维护。通过与后台权限框架的集成,如Spring Security,Struts-menu可以提供一个完整...
在实际应用中,`strutsMenu`这个文件可能是整个实例的源码或者示例项目的打包文件。它可能包含了以下内容: - `struts-menu.xml`:配置文件,定义了菜单结构。 - `MenuAction.java`:可能是一个处理菜单逻辑的...
接下来,我们探讨如何在实际项目中使用Struts-menu: 1. **安装和引入**:首先,你需要将struts-menu的依赖库添加到项目的类路径中,这通常是通过Maven或Gradle的依赖管理完成的。 2. **配置菜单**:创建一个XML...
总的来说,"struts-menu-2.4.3-src" 是一个深入了解和定制Struts Menu的重要资源,对于Java Web开发者来说,深入研究这个源码包,不仅可以提升对Struts框架的理解,也能增强在实际项目中构建高效导航菜单的能力。
在StrutsMenu中,它可能被用来优化数据处理,例如组织和过滤菜单项。 StrutsMenu的使用通常涉及以下几个步骤: 1. **配置**:首先,开发者需要在Struts的配置文件(struts-config.xml)中声明StrutsMenu的动作和...
Struts-menu提供了一些标签库(Taglib)供我们在JSP中使用,例如`<sm:menu>`,如下: ```jsp <%@ taglib prefix="sm" uri="http://struts-menu.sourceforge.net/tags-menu" %> <sm:menu id="mainMenu" ...
在项目中,struts-menu会基于用户的角色和权限信息,生成仅包含用户有权访问的菜单,这样可以确保用户界面的简洁性和安全性。 最后,valuelist是实现信息分页的一种机制,它帮助在大量数据列表中分页展示结果,提升...
Struts-menu在没有权限控制时最简单,只需配置文件就可以生成需要的菜单;在要菜单权限控制时,可以和Tomcat(或其他J2EE容器)的认证机制结合实现权限控制,也可以利用后台数据库的方式实现权限控制。
本教程将深入探讨如何在Struts项目中实现和使用Menu。 首先,理解MVC模式至关重要。MVC模式将应用程序分为三个主要部分:模型(Model)处理业务逻辑,视图(View)负责展示数据,控制器(Controller)接收用户请求...
这个"基于数据库的struts-menu.rar"学习例子旨在教你如何在Struts框架中实现动态菜单,这些菜单数据是从数据库中获取的,而不是硬编码在程序中。这增加了应用的灵活性,使得管理员能够通过数据库来管理和更新菜单项...
在探讨《StrutsMenu使用笔记》这一主题时,我们深入解析了StrutsMenu框架的集成与配置过程,以及如何在Web应用中有效利用其提供的菜单功能。以下是对该主题核心知识点的详细阐述: ### StrutsMenu简介 StrutsMenu...