<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-208  評(píng)論-469  文章-30  trackbacks-0


    動(dòng)畫教程第十四集

     

    使用struts-menu制作樹型菜單實(shí)例


    下載:http://oksonic.kc100.net/download/sonic014.rar
     

    制作人:速

     

    新建j2ee工程,工程名稱為:struts-menu

    Context root URL: /menu

    選中Add JSTL libraries to WEB-INF/lib forlder? JSTL版本(隨意)

     

    以下所有的文件可以從源代碼中拷貝

    拷貝文件中的以下內(nèi)容到工程的webroot目錄中

    images、scripts、stylestemplates 四個(gè)文件夾

     

    拷貝以下文件到 /WEB-INF/ 目錄

    struts-menu.tld

    struts-menu-el.tld

    menu-config.xml

     

    拷貝以下文件到 /WEB-INF/lib/ 目錄

    struts-menu-2.3.jar

    velocity-1.4.jar

    velocity-tools-view-1.0.jar

     

    拷貝以下文件到 /src/ 目錄

    globalMacros.vm

     

    拷貝以下文件到 /WEB-INF/lib/ 目錄,此文件是在使用j2ee1.4版本創(chuàng)建工程時(shí)才需要

    commons-lang-2.0.jar         ,此文件將在錄像包中提供

     

    刷新工程

     

    創(chuàng)建Struts框架

     

    按下Ctrl + N ,使用向?qū)略?struts 插件

     

    Plugin class: net.sf.navigator.menu.MenuPlugIn

    點(diǎn)擊 add 按鈕,在對(duì)話框中填入以下內(nèi)容

    Property:menuConfig

       Value:/WEB-INF/menu-config.xml

     

     

    按下Ctrl + N ,使用向?qū)略?Action

    Use case:find

    其它使用默認(rèn)值

     

    在WebRoot目錄中新建兩個(gè)jsp文件,index.jsp ok.jsp

     

    創(chuàng)建一個(gè) Forward

    name:okGo

    Path:/ok.jsp

     

    修改 index.jsp 文件,內(nèi)容如下:

    <html>

      <head>

        <title>ok</title>

      </head>

      <body>

        <a href="find.do">Find</a>

      </body>

    </html>

     

    修改 ok.jsp 文件,內(nèi)容如下:

    <%@ page contentType="text/html;charset=UTF-8" language="java"%>

    <%@ taglib uri="/WEB-INF/struts-menu.tld" prefix="menu" %>

    <%@ taglib uri="/WEB-INF/struts-menu-el.tld" prefix="menu-el" %>

    <%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

    <head>

        <title>Dynamic, Database-driven Menu</title>

        <link rel="stylesheet" type="text/css" media="all"

            href="<c:url value="/styles/menuExpandable.css"/>" />

        <script type="text/javascript"

            src="<c:url value="/scripts/menuExpandable.js"/>"></script>

        <link rel="stylesheet" type="text/css" media="all"

            href="<c:url value="/styles/xtree.css"/>" />

        <script type="text/javascript"

            src="<c:url value="/scripts/xtree.js"/>"></script>

        <link rel="stylesheet" type="text/css" media="all"

            href="<c:url value="/styles/global.css"/>" />

        <script type="text/javascript">

            /* Function for showing and hiding elements that use 'display:none' to hide */

            function toggleDisplay(targetId) {

                if (document.getElementById) {

                    target = document.getElementById(targetId);

                    if (target.style.display == "none"){

                        target.style.display = "";

                    } else {

                        target.style.display = "none";

                    }

                }

            }

        </script>

    </head>

    <body>

        <div class="dynamicMenu">

            <menu:useMenuDisplayer name="ListMenu" repository="repository">

                <menu:displayMenu name="DatabaseMenu"/>

                <menu:displayMenu name="StandaloneMenu"/>

            </menu:useMenuDisplayer>

        </div>

        <div class="dynamicMenu tree">

        <script type="text/javascript">

            <menu:useMenuDisplayer name="Velocity" config="/templates/xtree.html"

                repository="repository">

              <c:forEach var="menu" items="${repository.topMenus}">

                <menu-el:displayMenu name="${menu.name}"/>

              </c:forEach>

            </menu:useMenuDisplayer>

        </script>

        </div>

    </body>

    </html>

     

    創(chuàng)建數(shù)據(jù)庫表

    CREATE TABLE `menu_item` (

      `id` bigint(20) NOT NULL default '0',

      `parent_name` varchar(30) default NULL,

      `name` varchar(30) default NULL,

      `title` varchar(30) default NULL,

      `description` varchar(50) default NULL,

      `location` varchar(255) default NULL,

      `target` varchar(10) default NULL,

      `onclick` varchar(100) default NULL,

      `onmouseover` varchar(100) default NULL,

      `onmouseout` varchar(100) default NULL,

      `image` varchar(50) default NULL,

      `altImage` varchar(30) default NULL,

      `tooltip` varchar(100) default NULL,

      `roles` varchar(100) default NULL,

      `page` varchar(255) default NULL,

      `width` varchar(5) default NULL,

      `height` varchar(5) default NULL,

      `forward` varchar(50) default NULL,

      `action` varchar(50) default NULL,

      PRIMARY KEY  (`id`)

    );

    INSERT INTO menu_item (id, name, title) VALUES (1,'DatabaseMenu','Database Menu');

    INSERT INTO menu_item (id, parent_name, name, title, location) VALUES (2,'DatabaseMenu','Yahoo','Yahoo Mail','http://mail.yahoo.com');

    INSERT INTO menu_item (id, parent_name, name, title, location) VALUES(3,'DatabaseMenu','JavaBlogs','JavaBlogs','http://javablogs.com');

    INSERT INTO menu_item (id, name, title, location) VALUES (4,'StandaloneMenu','Standalone Menu','http://raibledesigns.com');

     

     

    創(chuàng)建 Hibernate 框架,配置數(shù)據(jù)庫連接,關(guān)于數(shù)據(jù)庫連接的配置就不做介紹了,如果不知道如何配置的話請(qǐng)參考以前發(fā)布的錄像!

    記得點(diǎn)擊 Copy JDBC Driver and add to classpath 鏈接

     

    打開 MyEclipse Database Explorer 視圖,創(chuàng)建 menu_item 的映射文件

     

    修改 FindAction.java 文件,內(nèi)容如下:

    import java.util.List;

    import javax.servlet.ServletContext;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    import javax.servlet.http.HttpSession;

    import net.sf.navigator.menu.MenuComponent;

    import net.sf.navigator.menu.MenuRepository;

    import org.apache.struts.action.Action;

    import org.apache.struts.action.ActionForm;

    import org.apache.struts.action.ActionForward;

    import org.apache.struts.action.ActionMapping;

    import org.hibernate.Query;

    import org.hibernate.Session;

    import org.hibernate.Transaction;

    import com.Hibernate.MenuItem;

    import com.Hibernate.SessionFactory;

     

    public class FindAction extends Action {

     

        public ActionForward execute(

            ActionMapping mapping,

            ActionForm form,

            HttpServletRequest request,

            HttpServletResponse response) {

            //創(chuàng)建連接

                       Session session=SessionFactory.currentSession();

            //創(chuàng)建事務(wù)

                       Transaction tx=session.beginTransaction();

            //創(chuàng)建對(duì)話

                       Query query=session.createQuery("FROM MenuItem m order by id");

            List list=query.list();

            //事務(wù)提交

                       tx.commit();

            if(list.size()<0)

                return mapping.getInputForward();

            MenuRepository repository = new MenuRepository();

            HttpSession httpsession=(HttpSession)request.getSession();

            ServletContext application=(ServletContext)httpsession.getServletContext();

            MenuRepository defaultRepository = (MenuRepository)application.getAttribute(MenuRepository.MENU_REPOSITORY_KEY);

            repository.setDisplayers(defaultRepository.getDisplayers());

            for (int i=0; i < list.size(); i++) {

                MenuComponent mc = new MenuComponent();

                MenuItem mi=(MenuItem) list.get(i);

                String name = mi.getName();

                mc.setName(name);

                String parent = (String) mi.getParentName();

                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);

                }

                String title = (String)mi.getTitle();

                mc.setTitle(title);

                String location = (String) mi.getLocation();

                mc.setLocation(location);

                repository.addMenu(mc);

            }

            request.setAttribute("repository", repository);

            return mapping.findForward("okGo");

        }

    }

     

    以上代碼是使用了hibernate操作數(shù)據(jù),得到一個(gè)數(shù)據(jù)集,并將數(shù)據(jù)集添加到MenuRepository中

    然后在jsp頁面中使用以下代碼顯示樹型菜單

    <menu:useMenuDisplayer name="ListMenu" repository="repository">

                <menu:displayMenu name="DatabaseMenu"/>

                <menu:displayMenu name="StandaloneMenu"/>

            </menu:useMenuDisplayer>

     

    menu-config.xml 文件中的內(nèi)容已經(jīng)被精減了,如果要使用XML文件來配置菜單的話,請(qǐng)查看struts-menu的示例

    代碼完成,現(xiàn)在進(jìn)行測試!

     

    好了,顯示正常,這集就講到此了,下集再見!??!

    posted on 2006-01-17 19:56 EricWong 閱讀(178) 評(píng)論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 一级免费黄色毛片| 国产AV无码专区亚洲AV蜜芽| 久久精品7亚洲午夜a| 成年女人午夜毛片免费看| 91老湿机福利免费体验| 67194成手机免费观看| 99在线视频免费观看视频| 成年女人免费视频播放体验区| 国产亚洲精品美女久久久| 亚洲欧洲日本国产| 亚洲色欲色欱wwW在线| 看免费毛片天天看| 久久国产一片免费观看| 久久久久国产精品免费看 | 久久久WWW成人免费精品| 97无码免费人妻超级碰碰夜夜| 免费人成激情视频| 国产成人精品日本亚洲专区61| 亚洲妇熟XXXX妇色黄| 亚洲中文无码av永久| 久久精品国产亚洲AV天海翼| 国产免费女女脚奴视频网| 日韩午夜免费视频| 久久亚洲国产成人影院网站| 亚洲精品视频在线| 自拍日韩亚洲一区在线| 一级中文字幕乱码免费| 免费看AV毛片一区二区三区| 亚洲精品无码精品mV在线观看| 精品视频免费在线| 无码国模国产在线观看免费| 国产精品亚洲专区在线观看| 2021国内精品久久久久精免费| 亚洲VA中文字幕不卡无码| 久久久久久久国产免费看| 亚洲国产一区明星换脸| 亚洲美女视频免费| 一级黄色免费毛片| 亚洲国产午夜福利在线播放| 婷婷亚洲综合一区二区| 国产成人青青热久免费精品|