如何在项目开发过程中使用Struts-menu
2007-01-31 16:22
736 查看
在Struts作为表示层框架的应用中,我们可以使用其众多的Strutsplug-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的调用。
[align=left]
5、修改struts-config.xml加入plugin描述
6、配置menu-config.xml,如:[/align]
[align=left]
说明:断描述了Strut-menu将采用的显示方式,可以在jsp文件中选择Displayer;进行了相关菜单项目的配置,可以在jsp文件中选择显示的菜单。
7、在jsp文件(如Struts-tiles中使用了menu.jsp)中加入,可以通过对useMenuDisplayer来设置菜单的显示风格。
8、可以在浏览其中显示了。
方式二:数据库验证方式
基本配置与方式一一致,只是在JSP中动态构建Menus。
采用数据库验证的方式,后台数据与你的其他数据库验证菜单类似。下面的示例代码中假设从后台数据中得到权限列表ArrayList:res,我下面的示例中的res是在Action中传入的SQLExecutor的结果SQLResults(其实就是ArrayList);ImportStruts的类库:net.sf.navigator.menu.*。菜单显示部分如下:[/align]
[align=left]
这样的调用,详细用法可以参考Struts-menu,当然有兴趣的朋友可以把以上代码包装成特定的Javabeans,方便灵活调用。
玩了一阵struts-menu,总体感觉他的xml配置和权限处理,是我最喜欢的部分。但是他在页面展示上不够灵活,这是他的缺点。
这里推荐一个简单配置权限的方式。就是在楼主介绍的方法一的基础上,利用struts-menuadpater的概念,只要在jsp上加上如下代码:[/align]
[align=left]
其中MenuBO取出的是权限允许的菜单名字。
DropDownPermissionAdapter实现了如下:[/align]
http://www.javabc.com/
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,如:[/align]
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="Showsusageofthe menudisplayersusingdefaults." page="/menutest1.jsp"/> toolTip="Showscustomized menudisplays." page="/menutest2.jsp"/> toolTip="Showsmenuusing CoolMenu3" page="/coolmenu1.jsp"/> toolTip="Showsmenuusing CoolMenu3withforms." page="/coolmenu2.jsp"/> toolTip="Exampleuseofmenu disableandpermissionchecking withCoolMenus." page="/permissionsForm.jsp"/> toolTip="ShowsmenuusingCoolMenu4" page="/coolmenu4.jsp"/> toolTip="ShowsExpandableDHTMLlist" page="/dhtmlExpandable.jsp"/> toolTip="ShowsDropdownDHTMLlist" page="/dhtmlDropdown.jsp"/> |
说明:断描述了Strut-menu将采用的显示方式,可以在jsp文件中选择Displayer;进行了相关菜单项目的配置,可以在jsp文件中选择显示的菜单。
7、在jsp文件(如Struts-tiles中使用了menu.jsp)中加入,可以通过对useMenuDisplayer来设置菜单的显示风格。
8、可以在浏览其中显示了。
方式二:数据库验证方式
基本配置与方式一一致,只是在JSP中动态构建Menus。
采用数据库验证的方式,后台数据与你的其他数据库验证菜单类似。下面的示例代码中假设从后台数据中得到权限列表ArrayList:res,我下面的示例中的res是在Action中传入的SQLExecutor的结果SQLResults(其实就是ArrayList);ImportStruts的类库:net.sf.navigator.menu.*。菜单显示部分如下:[/align]
MenuRepositoryrepository =newMenuRepository(); //Gettherepositoryfrom theapplicationscope-andcopythe //DisplayerMappingsfromit. MenuRepositorydefaultRepository =(MenuRepository) application.getAttribute (MenuRepository.MENU_REPOSITORY_KEY); repository.setDisplayers (defaultRepository.getDisplayers()); for(inti=0;i<res.getRowCount(); i++) { MenuComponentmc=newMenuComponent(); Stringname=res.getString(i,"name"); mc.setName(name); Stringparent= res.getString(i,"parent_name"); //System.out.println (name+",parentis:"+parent); if(parent!=null) { MenuComponentparentMenu =repository.getMenu(parent); if(parentMenu==null) { System.out.println ("parentMenu'"+parent+" 'doesn'texist!"); //createatemporaryparentMenu parentMenu=newMenuComponent(); parentMenu.setName(parent); repository.addMenu(parentMenu); } mc.setParent(parentMenu); }else{ topMenuList.add(name); } Stringtitle=(String) res.getString(i,"title"); mc.setTitle(title); Stringlocation=(String) res.getString(i,"location"); mc.setLocation(location); repository.addMenu(mc); } pageContext.setAttribute ("repository",repository); |
这样的调用,详细用法可以参考Struts-menu,当然有兴趣的朋友可以把以上代码包装成特定的Javabeans,方便灵活调用。
玩了一阵struts-menu,总体感觉他的xml配置和权限处理,是我最喜欢的部分。但是他在页面展示上不够灵活,这是他的缺点。
这里推荐一个简单配置权限的方式。就是在楼主介绍的方法一的基础上,利用struts-menuadpater的概念,只要在jsp上加上如下代码:[/align]
<% try{ DropDownPermissionAdapteradapter=newDropDownPermissionAdapter(request); IMenuBOmenuBO=newMenuBO(); TreeSetmenuTree= menuBO.getAllowedMenuList("hello"); adapter.initializeMenu(menuTree); request.getSession() .getServletContext().setAttribute( "AtdMenuAdapter",adapter); }catch(Exceptione) { e.printStackTrace(); } %> <menu:useMenuDisplayer name="TestDropDownDisplayer" bundle="org.apache.struts.action.MESSAGE" permissions="AtdMenuAdapter"> <menu:displayMenuname="01"/> </menu:useMenuDisplayer> |
其中MenuBO取出的是权限允许的菜单名字。
DropDownPermissionAdapter实现了如下:[/align]
publicclassDropDownPermissionAdapter implementsPermissionsAdapter { protectedTreeSetmenuTree=null; ; /** *菜单初始化的时候调用 *@throwsException */ publicvoidinitializeMenu (TreeSetts)throwsException { this.menuTree=ts; } publicbooleanisAllowed (MenuComponentmenu) { if(menuTree==null|| menuTree.contains(menu.getName())) { returntrue; } else{ returnfalse; } } } |
相关文章推荐
- 如何在项目开发过程中使用Struts-menu
- 使用maven开发的项目,如何更方便地提取第三方包
- windows开发平台下本地项目如何使用git管理
- 如何使用Worktile进行敏捷项目开发管理
- iOS项目开发实战——如何使用Autoresizing进行屏幕适配
- 使用Eclipse-Maven-git做Java开发(5)--Eclipse的Java项目的创建过程
- Linux 下 Qt Creator 的安装,并使用它开发你的第一个 Qt 项目全过程
- 如何使用区块链开发一个落地项目?这位实战大牛手把手教会你
- 在Eclipse3.1中如何使用Lomboz3.1开发struts
- android 开发过程中,两个包名相同的项目如何上传到同一个应用商城
- IOS开发过程中如何简单快速使用storyboard(不需要考虑适配问题)
- Objective-c开发教程--如何在项目中使用AFNetworking
- 浅谈使用Eclipse和Tomcat开发项目过程中的文件操作
- 开发过程使用Tomcat Maven插件持续快捷部署Web项目
- 如何看待项目开发过程中基于度量结果的绩效考评
- 使用SpringSide 3.1.4.3开发Web项目的全过程(下)
- 如何配置基于eclipse的easy structs插件,并介绍了如何结合使用easy structs和eclipes来开发struts的应用
- 使用maven开发的项目,如何更方便地提取第三方包
- 使用SpringSide 3.1.4.3开发Web项目的全过程(二)
- 使用手动配置的方式开发第一个Struts项目的步骤以及实例