seasun  
在不断模仿、思考、总结中一步一步进步!
公告
  •     我的blog中的部分资源是来自于网络上,如果您认为侵犯了您的权利,请及时联系我我会尽快删除!E-MAIL:shiwenfeng@aliyun.com和QQ:281340916,欢迎交流。

日历
<2009年10月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

常用链接

随笔分类

good blog author

积分与排名

  • 积分 - 80689
  • 排名 - 698

最新评论

阅读排行榜

 

一、介绍
        Struts-menu是一个基于Struts框架的菜单生成应用框架,它是开源软件,可以从http://www.sourceforge.net上获 得。Struts-menu在没有权限控制时最简单,只需配置文件就可以生成需要的菜单;在要菜单权限控制时,可以和Tomcat(或其他J2EE容器)的认证机制结合实现权限控制,也可以利用后台数据库的方式实现权限控制。
       从sourceforge.net获得Struts-menu后,将其解压,可以得到如下图1所示的一些文件:

  1. 其中struts-menu-2.3.jar为其核心包,struts-menu.tld为其对应的标签;struts-menu.war为Struts-menu自带的sample;doc目录下为帮助文档。

    二、使用Struts-menu(无权限控制)
    1.        将struts-menu.jar拷贝到WEB-INFlib目录下;
    2.        将struts-menu.tld拷贝到WEB-INF目录下;
    3.        将struts-menu.war中的scripts、styles、images目录拷贝到你的应用"/"目录下;
    4.        此外,Struts-menu需要Log4j的支持,因此需要将log4j的包也拷贝到WEB-INF/lib;
    5.        修改 web.xml 加入 taglib 的调用:
    <taglib>
        <taglib-uri>/WEB-INF/struts-menu.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-menu.tld</taglib-location>
    </taglib>
    6.        修改struts-config.xml,在其中添加如下plugin代码:
    <plug-in className="net.sf.navigator.menu.MenuPlugIn">
        <set-property property="menuConfig" value="/WEB-INF/menu-config.xml" />
    </plug-in>
    7.        配置menu-config.xml(此文件位于WEB-INF目录下)
    <?xml version="1.0" encoding="UTF-8" ?>
    <MenuConfig>
    <Displayers>
    <Displayer name="CoolMenu" type="net.sf.navigator.displayer.CoolMenuDisplayer"/>
    <Displayer name="ListMenu" type="net.sf.navigator.displayer.ListMenuDisplayer"/>
    <Displayer name="DropDown" type="net.sf.navigator.displayer.DropDownMenuDisplayer"/>
    <Displayer name="Simple" type="net.sf.navigator.displayer.SimpleMenuDisplayer"/>
    <Displayer name="CoolMenu4" type="net.sf.navigator.displayer.CoolMenuDisplayer4"/>
    <Displayer name="MenuForm" type="net.sf.navigator.example.PermissionsFormMenuDisplayer"/>
    <Displayer name="TabbedMenu" type="net.sf.navigator.displayer.TabbedMenuDisplayer"/>
    <Displayer name="Velocity" type="net.sf.navigator.displayer.VelocityMenuDisplayer"/>
    </Displayers>
    <Menus>
     <!========  To Do List Menus   ==============>
      <Menu name="ToDoListMenuFile" title="OPERATOR" description="this is a file menu test" width="50" >
        <Item name="TDLnew" title="ADMIN">
          <Item name="TDLnewcase" title="GO TO ADMIN PAGE" image="images/case-new.png" location="/webModule/admin/admin.jsp"/>
          <Item name="TDLnewitem" title="NEW ITEM" image="images/item-new.png" location="index.jsp"/>
          <Item name="TDLnewparty" title="NEW PARTY" image="images/party-new.png" location="index.jsp"/>
            <Item name="TDLopen" title="OPEN">
         <Item name="TDLopencase" title="OPEN CASE" image="images/case-open.png" location="index.jsp"/>
          <Item name="TDLopenitem" title="OPEN ITEM" image="images/item-open.png" location="index.jsp"/>
          <Item name="TDLopenparty" title="OPEN PARTY" image="images/party-open.png" location="index.jsp"/>
        </Item>
        <Item name="TDLexit" title="EXIT" image="images/exit.png" location="index.jsp"/>
      </Menu>
    <! ===========  To Do List Menu Edit   =============>
      <Menu name="ToDoListMenuEdit" title="EDIT">
        <Item name="TDLselect" title="SELECT_ALL" image="images/select-all.png" location="index.jsp" width="100"/>
        <Item name="TDLprefs" title="USER_PREFERENCES" image="images/prefs.png" location="index.jsp" width="150"/>
      </Menu>
    <!============  Permissions Menu   ==========>
      <Menu  name="Permissions" title="Permissions">
        <Item title="Change" location="permissionsForm.jsp?username='test'" />
      </Menu>
    </Menus>
    </MenuConfig>
      注解:
     <Displayers>与</Displayers>之间的代码定义了菜单的格式。
    <Menus>与</Menus>之间的代码定义了要显示的菜单
    <Menu>与<Menu>之间的代码具有定义一个菜单的各种属性,如:
    <Menu name="ToDoListMenuFile" title="OPERATOR" description="this is a file menu test" width="50" >
          其中name指定了在JSP页面上显示此菜单时使用的name,title属性定义了菜单的显示名称,description属性定义了当鼠标移动到此菜单上时显示的描述信息,width属性定义了此菜单所占的宽度。
    在<Menu>下的<Item/>标记用于定义此菜单的子项,如:
    <Item title="Change" location="permissionsForm.jsp?username='test'" />
    其中title为子项显示的名称,location为当点击此项时所要执行的操作,如此处当点击“Change”菜单时,它将转向permissionsForm.jsp页面。
    8.        在JSP页面中加入如下代码:
    <menu:useMenuDisplayer name="ListMenu" bundle="org.apache.struts.action.MESSAGE">
        <menu:displayMenu name="ToDoListMenuFile"/>
              <menu:displayMenu name="ToDoListMenuEdit"/>
        <menu:displayMenu name="Permissions"/>
    </menu:useMenuDisplayer>
    注解:
    name属性指定要显示菜单的外观样式,由<Displayers></Displayers>中指定。
    bundle为显示的菜单名称,必须为org.apache.struts.action.MESSAGE。
    <menu:displayMenu />定义要显示的菜单,此处的name为要显示菜单的名称,由<Menu/>指定。
    此外,对于各种不同的菜单外观,需要引用其指定的CSS及JavaScript代码。
           效果如下图所示:

三、基于Tomcat的权限控制的菜单显示
在Struts中要启用基于容器的安全认证:
1.        需要在web.xml中进行配置(请参考Struts相关书籍):
<security-constraint>
    <web-resource-collection>
      <web-resource-name>AdminPages</web-resource-name>
      <description>Administroat only access</description>
      <url-pattern>/security.jsp</url-pattern>
      <http-method>POST</http-method>
      <http-method>GET</http-method>
    </web-resource-collection>
    <auth-constraint>
      <role-name>tomcat</role-name>
      <role-name>role1</role-name>
      <role-name>admin</role-name>
    </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>adminRealm</realm-name>
  </login-config>
  <security-role>
    <description>Administrator</description>
    <role-name>tomcat</role-name>
  </security-role>
  <security-role>
    <description>A Second Role (to prove a comma-delimited list works)</description>


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/donkeyzheng/archive/2006/03/28/640821.aspx

posted on 2009-10-30 17:03 shiwf 阅读(421) 评论(0)  编辑  收藏 所属分类: 1.10 struts-menu

只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © shiwf Powered by: 博客园 模板提供:沪江博客