空間站

          北極心空

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
          dtree是一個(gè)免費(fèi)的javascript腳本,只需定義有限的幾個(gè)參數(shù),就可以做出漂亮的樹型菜單。下載目錄:http://www.destroydrop.com/javascripts/tree/
           以下是dtree的用法示例:
           1)初始化菜單
           <script type="text/javascript">
            <!--
            var Tree = new Array;
            // nodeId | parentNodeId | nodeName | nodeUrl
            Tree[0]  = "1|0|Page 1|#";
            Tree[1]  = "2|1|Page 1.1|#";
            Tree[2]  = "3|1|Page 1.2|#";
            Tree[3]  = "4|3|Page 1.2.1|#";
            Tree[4]  = "5|1|Page 1.3|#";
            Tree[5]  = "6|2|Page 1.1.1|#";
            Tree[6]  = "7|6|Page 1.1.1.1|#";
            Tree[7]  = "8|6|Page 1.1.1.2|#";
            Tree[8]  = "9|1|Page 1.4|#";
            Tree[9]  = "10|9|Page 1.4.1|#";
            Tree[10] = "11|0|Page 2|#";
            //-->
           </script>
           2)調(diào)用函數(shù)
           <div class="tree">
            <script type="text/javascript">
            <!--
             createTree(Tree,1,7);  // starts the tree at the top and open it at node nr. 7
            //-->
            </script>
           </div>
           
          2。jsp動(dòng)態(tài)實(shí)現(xiàn)
             分以下步驟實(shí)現(xiàn)動(dòng)態(tài)的樹型菜單:
             1)在數(shù)據(jù)庫建tree_info表,有nodeId,parentNodeId,nodeName,nodeUrl四個(gè)字段,來存儲(chǔ)節(jié)點(diǎn)信息。
             2)編寫java類,用于從數(shù)據(jù)庫找出節(jié)點(diǎn)信息,并且生成javascript腳本。
             3)編寫tag類。用于封裝邏輯,簡(jiǎn)化jsp的開發(fā)。
             4)建一個(gè)web程序進(jìn)行測(cè)試。
          3。詳細(xì)過程
             1)在數(shù)據(jù)庫建表,腳本如下:
             CREATE TABLE `test`.`tree_info` (
             `node_id` INTEGER UNSIGNED NOT NULL DEFAULT -1,
             `parent_id` INTEGER UNSIGNED NOT NULL DEFAULT -1,
             `node_name` VARCHAR(45) NOT NULL,
             `ref_url` VARCHAR(45) NOT NULL,
             PRIMARY KEY(`node_id`)
           )
           我使用mysql數(shù)據(jù)庫,如果腳本細(xì)節(jié)有出入,請(qǐng)自行修改
              按照上面的dTree示例插入數(shù)據(jù)
             2)編寫TreeInfo.java,這個(gè)類用于封裝節(jié)點(diǎn)信息
               package com.diegoyun.web.tree;
            /**
             * @author Diegoyun
             * @version 1.0
             */
            public class TreeInfo {
             private int nodeId = -1;//node id
             private int parentId = -1;//parentId
             private String nodeName = null;//node name
             private String url = null;//url references
             public int getNodeId() {
              return nodeId;
             }
             public void setNodeId(int nodeId) {
              this.nodeId = nodeId;
             }
             public int getParentId() {
              return parentId;
             }
             public void setParentId(int parentId) {
              this.parentId = parentId;
             }
             public String getNodeName() {
              return nodeName;
             }
             public void setNodeName(String nodeName) {
              this.nodeName = nodeName;
             }
             public String getUrl() {
              return url;
             }
             public void setUrl(String url) {
              this.url = url;
             }
            }
             編寫TreeUtil.java,用于從數(shù)據(jù)庫得到節(jié)點(diǎn)信息,封裝到TreeInfo對(duì)象,并生成javascript腳本
             TreeUtil.java
             package com.diegoyun.web.tree;
            import java.util.Collection;
            import java.util.ArrayList;
            import java.util.Iterator;
            import java.util.List;
            import java.sql.PreparedStatement;
            import java.sql.ResultSet;
            import java.sql.Connection;
            import java.sql.DriverManager;
            /**
             * @author Diegoyun
             * @version 1.0
             */
            public class TreeUtil {
             public static List retrieveNodeInfos(){
              List coll = new ArrayList();
              String driverName = "com.mysql.jdbc.Driver";
              String host = "localhost";
              String port = ":3306";
              String serverID = "test";
              String userName = "root";
              String userPwd = "root";
              String url = "jdbc:mysql://" + host + port + "/" + serverID ;
              Connection conn = null ;
              PreparedStatement ps = null;
              ResultSet rs = null;
              try{
               Class.forName(driverName).newInstance();
               conn = DriverManager.getConnection(url , userName , userPwd);
               String sql = "select * from tree_info";
               ps = conn.prepareStatement(sql);
               rs = ps.executeQuery();
               TreeInfo info = null;
               while(rs!=null && rs.next()){
                info = new TreeInfo();
                info.setNodeId(rs.getInt(1));
                info.setParentId(rs.getInt(2));
                info.setNodeName(rs.getString(3));
                info.setUrl(rs.getString(4));
                coll.add(info);
               }
            //            if(rs!=null){
            //                rs.close();
            //                rs=null;
            //            }
            //            if(ps!=null){
            //                ps.close();
            //                ps=null;
            //            }
              }catch(Exception e){
               System.out.println(e);
              }

              return coll;
             }
             public static String createTreeInfo(List alist){
              StringBuffer contents = new StringBuffer();
              contents.append("<!--\n");
              contents.append("var Tree = new Array;");//create a array in javascript
              TreeInfo info =null;
              for(int max = alist.size(),i=0;i<max;i++){
               info = (TreeInfo)alist.get(i);
               //define elements of array
               contents.append("Tree[");
               contents.append(i);
               contents.append("]=\"");
               contents.append(info.getNodeId());
               contents.append("|");
               contents.append(info.getParentId());
               contents.append("|");
               contents.append(info.getNodeName());
               contents.append("|");
               contents.append(info.getUrl());
               contents.append("\";");
              }
              contents.append("http://-->");
              return contents.toString();
             }
             public static void main(String[]args){
              List alist = TreeUtil.retrieveNodeInfos();
            //        TreeInfo info = null;
            //        for(Iterator i = c.iterator();i.hasNext();){
            //            info = (TreeInfo)i.next();
            //            System.out.println("*****" + info.getNodeName());
            //        }
              System.out.println(TreeUtil.createTreeInfo(alist));
             }
            }
           3)編寫標(biāo)簽類
           InitTreeTag.java
           package com.diegoyun.web.taglibs;
           import com.diegoyun.web.tree.TreeUtil;
           import javax.servlet.jsp.tagext.TagSupport;
           import javax.servlet.jsp.JspException;
           import java.io.IOException;
           /**
            * @author Diegoyun
            * @version 1.0
            */
           public class InitTreeTag extends TagSupport{
            public int doEndTag() throws JspException {
             StringBuffer tree = new StringBuffer();
             tree.append("<script type=\"text/javascript\">\n");
             tree.append(TreeUtil.createTreeInfo(TreeUtil.retrieveNodeInfos()));
             tree.append("</script>\n");
             try{
              pageContext.getOut().println(tree.toString());
             }catch(IOException ioe){
              ioe.printStackTrace();
             }
             return super.doEndTag();
            }
           }
           ShowTreeTag.java : 
           package com.diegoyun.web.taglibs;
           import javax.servlet.jsp.tagext.TagSupport;
           import javax.servlet.jsp.JspException;
           import java.io.IOException;
           /**
            * @author Diegoyun
            * @version 1.0
            */
           public class ShowTreeTag extends TagSupport{
            public int doEndTag() throws JspException {
             StringBuffer buffer = showTree();
             try {
              pageContext.getOut().println(buffer.toString());
             }
             catch (IOException ioe) {
              ioe.printStackTrace();
             }
             return super.doEndTag();
            }
            private StringBuffer showTree(){
             StringBuffer sb = new StringBuffer();
             sb.append("<div class=\"tree\">\n");
             sb.append("<script type=\"text/javascript\">\n");
             sb.append("<!--\n");
             sb.append("createTree(Tree,1,7);\n");
             sb.append("http://-->\n");
             sb.append("</script>\n");
             sb.append("</div>\n");
             return sb;
            }   
           }
           標(biāo)簽的tld如下:
           <?xml version="1.0" encoding="ISO-8859-1" ?>
           <!DOCTYPE taglib
             PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
             "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
           <taglib>
            <tlib-version>1.0</tlib-version>
            <jsp-version>1.2</jsp-version>
            <short-name>tree</short-name>
            <!--initTreeTag-->
            <tag>
             <name>init</name>
             <tag-class>com.diegoyun.web.taglibs.InitTreeTag</tag-class>
             <body-content>empty</body-content>
            </tag>
            <!--ShowTreeTag-->
            <tag>
             <name>show</name>
             <tag-class>com.diegoyun.web.taglibs.ShowTreeTag</tag-class>
             <body-content>empty</body-content>
            </tag>
           </taglib>
           4)建立web過程,編寫jsp進(jìn)行測(cè)試。
           index.jsp如下:
           <%@ page language="java"%>
           <%@ taglib uri="/WEB-INF/tlds/tree.tld" prefix="tree"%>

           <html>
           <head>
            <title>Tree example</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            <link rel="StyleSheet" href="tree.css" type="text/css">
            <script type="text/javascript" src="tree.js"></script>
            <tree:init/>
           </head>
           <body>

           <b>Tree example :</b><br /><br />
           <tree:show/>
           <br /><br />
           
           </body>
           </html>
          posted on 2007-09-30 09:48 蘆葦 閱讀(3524) 評(píng)論(6)  編輯  收藏 所屬分類: HTML & Script

          Feedback

          # re: 使用dtree構(gòu)建動(dòng)態(tài)樹型菜單 2008-09-25 12:41 SS
          完全綠春不對(duì)馬嘴,轉(zhuǎn)帖吧,沒測(cè)試過吧  回復(fù)  更多評(píng)論
            

          # re: 使用dtree構(gòu)建動(dòng)態(tài)樹型菜單 2008-10-10 11:21 蘆葦
          @SS

          的確是轉(zhuǎn)貼的,沒看到最下面的說明嗎?這是我的收藏,覺得沒用就請(qǐng)你離開  回復(fù)  更多評(píng)論
            

          # re: 使用dtree構(gòu)建動(dòng)態(tài)樹型菜單 [未登錄] 2009-07-02 11:42 a
          根本就不行  回復(fù)  更多評(píng)論
            

          # re: 使用dtree構(gòu)建動(dòng)態(tài)樹型菜單 [未登錄] 2010-01-20 11:08 billy
          還有這種不要臉的人專門收集別人的垃圾文章騙人。  回復(fù)  更多評(píng)論
            

          # re: 使用dtree構(gòu)建動(dòng)態(tài)樹型菜單 2010-02-23 11:32 蘆葦
          我知道這些代碼是有問題的,而且也是我轉(zhuǎn)別人的文章,但是我使用的時(shí)候就是參考這個(gè)弄出來的,一個(gè)正常的代碼,你拷貝過去完全正常使用,你還能學(xué)到什么?只有出錯(cuò)了,你自己解決了,你才學(xué)到了東西.
          另外:這里是我的私人博客,是我收集一些資料的地方,沒有你想要的東西很正常啊,請(qǐng)不要出口傷人!
            回復(fù)  更多評(píng)論
            

          # <tree:init/>語句沒有執(zhí)行 2010-02-28 12:02 garyme
          請(qǐng)問<tree:init/>語句沒有執(zhí)行,而<tree:show/>正常,該怎么解決?謝謝  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 册亨县| 北碚区| 北安市| 万宁市| 南乐县| 醴陵市| 阿勒泰市| 张掖市| 读书| 崇明县| 广元市| 泸水县| 阿克| 宁武县| 开化县| 崇明县| 浙江省| 扬中市| 张家口市| 邢台市| 都兰县| 平罗县| 阳新县| 绩溪县| 奇台县| 蓬溪县| 抚顺县| 新宾| 清水县| 乌兰浩特市| 贡觉县| 陵川县| 溧水县| 井研县| 海原县| 友谊县| 仙桃市| 玉门市| 西藏| 手游| 广南县|