• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    在項目中使用Struts-menu

    發布: 2007-6-08 17:26 | 作者: 網絡轉載 | 來源: 網絡 | 查看: 348次 | 進入軟件測試論壇討論

    領測軟件測試網  如果你正在為設計權限系統而煩惱,可以看看下面的文章

    在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;
    }
    }
    }

     

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: struts 使用 項目 menu


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>