`

DTree生成漂亮的动态树型菜单

阅读更多
核心提示:dtree生成漂亮的动态树型菜单 dtree是一个免费的javascript脚本,只需定义有限的几个参数,就可以做出漂亮的树型菜单。下载目录: http://www.destroydrop.com/javascripts/tree/
DTree生成漂亮的动态树型菜单
dtree是一个免费的javascript脚本,只需定义有限的几个参数,就可以做出漂亮的树型菜单。
以下是dtree的用法示例:
1)初始化菜单

 

  1. <script type="text/javascript">   
  2.    <!--   
  3.    var Tree = new Array;   
  4.    // nodeId | parentNodeId | nodeName | nodeUrl   
  5.    Tree[0]   = "1|0|Page 1|#";   
  6.    Tree[1]   = "2|1|Page 1.1|#";   
  7.    Tree[2]   = "3|1|Page 1.2|#";   
  8.    Tree[3]   = "4|3|Page 1.2.1|#";   
  9.    Tree[4]   = "5|1|Page 1.3|#";   
  10.    Tree[5]   = "6|2|Page 1.1.1|#";   
  11.    Tree[6]   = "7|6|Page 1.1.1.1|#";   
  12.    Tree[7]   = "8|6|Page 1.1.1.2|#";   
  13.    Tree[8]   = "9|1|Page 1.4|#";   
  14.    Tree[9]   = "10|9|Page 1.4.1|#";   
  15.    Tree[10] = "11|0|Page 2|#";   
  16.    //-->   
  17. </script>   

 

2)调用函数

  1. <div class="tree">   
  2.    <script type="text/javascript">   
  3.    <!--   
  4.     createTree(Tree,1,7);   // starts the tree at the top and open it at node nr. 7  
  5.    //-->   
  6.    </script>   
  7. </div>   


2.jsp动态实现
    分以下步骤实现动态的树型菜单:
    1)在数据库建tree_info表,有nodeId,parentNodeId,nodeName,nodeUrl四个字段,来存储节点信息。
    2)编写java类,用于从数据库找出节点信息,并且生成javascript脚本。
    3)编写tag类。用于封装逻辑,简化jsp的开发。
    4)建一个web程序进行测试。
3.详细过程
    1)在数据库建表,脚本如下:

  1.     CREATE TABLE `test`.`tree_info` (   
  2.     `node_id` INTEGER UNSIGNED NOT NULL DEFAULT -1,   
  3.     `parent_id` INTEGER UNSIGNED NOT NULL DEFAULT -1,   
  4.     `node_name` VARCHAR(45) NOT NULL,   
  5.     `ref_url` VARCHAR(45) NOT NULL,   
  6.     PRIMARY KEY(`node_id`)   
  7. )  


我使用mysql数据库,如果脚本细节有出入,请自行修改
     按照上面的dTree示例插入数据
    2)编写TreeInfo.java,这个类用于封装节点信息
 

  1.   package com.diegoyun.web.tree;   
  2. /**  
  3.  * @author Diegoyun  
  4.  * @version 1.0  
  5.  */  
  6. public class TreeInfo {   
  7.  private int nodeId = -1;//node id   
  8.  private int parentId = -1;//parentId   
  9.  private String nodeName = null;//node name   
  10.  private String url = null;//url references   
  11.  public int getNodeId() {   
  12.   return nodeId;   
  13.  }   
  14.  public void setNodeId(int nodeId) {   
  15.   this.nodeId = nodeId;   
  16.  }   
  17.  public int getParentId() {   
  18.   return parentId;   
  19.  }   
  20.  public void setParentId(int parentId) {   
  21.   this.parentId = parentId;   
  22.  }   
  23.  public String getNodeName() {   
  24.   return nodeName;   
  25.  }   
  26.  public void setNodeName(String nodeName) {   
  27.   this.nodeName = nodeName;   
  28.  }   
  29.  public String getUrl() {   
  30.   return url;   
  31.  }   
  32.  public void setUrl(String url) {   
  33.   this.url = url;   
  34.  }   
  35. }   

    编写TreeUtil.java,用于从数据库得到节点信息,封装到TreeInfo对象,并生成javascript脚本
   

  1. TreeUtil.java   
  2.     package com.diegoyun.web.tree;   
  3.    import java.util.Collection;   
  4.    import java.util.ArrayList;   
  5.    import java.util.Iterator;   
  6.    import java.util.List;   
  7.    import java.sql.PreparedStatement;   
  8.    import java.sql.ResultSet;   
  9.    import java.sql.Connection;   
  10.    import java.sql.DriverManager;   
  11.    /**  
  12.     * @author Diegoyun  
  13.     * @version 1.0  
  14.     */  
  15.    public class TreeUtil {   
  16.     public static List retrieveNodeInfos(){   
  17.      List coll = new ArrayList();   
  18.      String driverName = "com.mysql.jdbc.Driver";   
  19.      String host = "localhost";   
  20.      String port = ":3306";   
  21.      String serverID = "test";   
  22.      String userName = "root";   
  23.      String userPwd = "root";   
  24.      String url = "jdbc:mysql://" + host + port + "/" + serverID ;   
  25.      Connection conn = null ;   
  26.      PreparedStatement ps = null;   
  27.      ResultSet rs = null;   
  28.      try{   
  29.       Class.forName(driverName).newInstance();   
  30.       conn = DriverManager.getConnection(url , userName , userPwd);   
  31.       String sql = "select * from tree_info";   
  32.       ps = conn.prepareStatement(sql);   
  33.       rs = ps.executeQuery();   
  34.       TreeInfo info = null;   
  35.       while(rs!=null && rs.next()){   
  36.        info = new TreeInfo();   
  37.        info.setNodeId(rs.getInt(1));   
  38.        info.setParentId(rs.getInt(2));   
  39.        info.setNodeName(rs.getString(3));   
  40.        info.setUrl(rs.getString(4));   
  41.        coll.add(info);   
  42.       }   
  43.    //             if(rs!=null){   
  44.    //                 rs.close();   
  45.    //                 rs=null;   
  46.    //             }   
  47.    //             if(ps!=null){   
  48.    //                 ps.close();   
  49.    //                 ps=null;   
  50.    //             }   
  51.      }catch(Exception e){   
  52.       System.out.println(e);   
  53.      }   
  54.   
  55.      return coll;   
  56.     }   
  57.     public static String createTreeInfo(List alist){   
  58.      StringBuffer contents = new StringBuffer();   
  59.      contents.append("<!--\n");   
  60.      contents.append("var Tree = new Array;");//create a array in javascript   
  61.      TreeInfo info =null;   
  62.      for(int max = alist.size(),i=0;i<max;i++){   
  63.       info = (TreeInfo)alist.get(i);   
  64.       //define elements of array   
  65.       contents.append("Tree[");   
  66.       contents.append(i);   
  67.       contents.append("]=\"");   
  68.       contents.append(info.getNodeId());   
  69.       contents.append("|");   
  70.       contents.append(info.getParentId());   
  71.       contents.append("|");   
  72.       contents.append(info.getNodeName());   
  73.       contents.append("|");   
  74.       contents.append(info.getUrl());   
  75.       contents.append("\";");   
  76.      }   
  77.      contents.append("//-->");   
  78.      return contents.toString();   
  79.     }   
  80.     public static void main(String[]args){   
  81.      List alist = TreeUtil.retrieveNodeInfos();   
  82.    //         TreeInfo info = null;   
  83.    //         for(Iterator i = c.iterator();i.hasNext();){   
  84.    //             info = (TreeInfo)i.next();   
  85.    //             System.out.println("*****" + info.getNodeName());   
  86.    //         }   
  87.      System.out.println(TreeUtil.createTreeInfo(alist));   
  88.     }   
  89.    }   
  90.   


3)编写标签类

  1. InitTreeTag.java   
  2. package com.diegoyun.web.taglibs;   
  3. import com.diegoyun.web.tree.TreeUtil;   
  4. import javax.servlet.jsp.tagext.TagSupport;   
  5. import javax.servlet.jsp.JspException;   
  6. import java.io.IOException;   
  7. /**  
  8.    * @author Diegoyun  
  9.    * @version 1.0  
  10.    */  
  11. public class InitTreeTag extends TagSupport{   
  12.    public int doEndTag() throws JspException {   
  13.     StringBuffer tree = new StringBuffer();   
  14.     tree.append("<script type=\"text/javascript\">\n");   
  15.     tree.append(TreeUtil.createTreeInfo(TreeUtil.retrieveNodeInfos()));   
  16.     tree.append("</script>\n");   
  17.     try{   
  18.      pageContext.getOut().println(tree.toString());   
  19.     }catch(IOException ioe){   
  20.      ioe.printStackTrace();   
  21.     }   
  22.     return super.doEndTag();   
  23.    }   
  24. }   
  25. ShowTreeTag.java :    
  26. package com.diegoyun.web.taglibs;   
  27. import javax.servlet.jsp.tagext.TagSupport;   
  28. import javax.servlet.jsp.JspException;   
  29. import java.io.IOException;   
  30. /**  
  31.    * @author Diegoyun  
  32.    * @version 1.0  
  33.    */  
  34. public class ShowTreeTag extends TagSupport{   
  35.    public int doEndTag() throws JspException {   
  36.     StringBuffer buffer = showTree();   
  37.     try {   
  38.      pageContext.getOut().println(buffer.toString());   
  39.     }   
  40.     catch (IOException ioe) {   
  41.      ioe.printStackTrace();   
  42.     }   
  43.     return super.doEndTag();   
  44.    }   
  45.    private StringBuffer showTree(){   
  46.     StringBuffer sb = new StringBuffer();   
  47.     sb.append("<div class=\"tree\">\n");   
  48.     sb.append("<script type=\"text/javascript\">\n");   
  49.     sb.append("<!--\n");   
  50.     sb.append("createTree(Tree,1,7);\n");   
  51.     sb.append("//-->\n");   
  52.     sb.append("</script>\n");   
  53.     sb.append("</div>\n");   
  54.     return sb;   
  55.    }      
  56. }   

标签的tld如下:

  1. <?xml version="1.0" encoding="ISO-8859-1" ?>  
  2. <!DOCTYPE taglib   
  3.     PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"   
  4.     "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">  
  5. <taglib>  
  6.    <tlib-version>1.0</tlib-version>  
  7.    <jsp-version>1.2</jsp-version>  
  8.    <short-name>tree</short-name>  
  9.    <!--initTreeTag-->  
  10.    <tag>  
  11.     <name>init</name>  
  12.     <tag-class>com.diegoyun.web.taglibs.InitTreeTag</tag-class>  
  13.     <body-content>empty</body-content>  
  14.    </tag>  
  15.    <!--ShowTreeTag-->  
  16.    <tag>  
  17.     <name>show</name>  
  18.     <tag-class>com.diegoyun.web.taglibs.ShowTreeTag</tag-class>  
  19.     <body-content>empty</body-content>  
  20.    </tag>  
  21. </taglib>  


4)建立web过程,编写jsp进行测试。
index.jsp如下:

  1. <%@ page language="java"%>  
  2. <%@ taglib uri="/WEB-INF/tlds/tree.tld" prefix="tree"%>  
  3.   
  4. <html>  
  5. <head>  
  6.    <title>Tree example</title>  
  7.    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
  8.    <link rel="StyleSheet" href="tree.css" type="text/css">  
  9.    <script type="text/javascript" src="tree.js"></script>  
  10.    <tree:init/>  
  11. </head>  
  12. <body>  
  13.   
  14. <b>Tree example :</b><br /><br />  
  15. <tree:show/>  
  16. <br /><br />  
  17. </body>  
  18. </html>    
分享到:
评论
1 楼 360595535 2012-02-15  
<script type="text/javascript" src="tree.js"></script>  这个tree.js在哪?

相关推荐

    js动态树型结构 树型菜单

    在这个场景下,"js动态树型结构 树型菜单"指的是使用JavaScript实现的可以动态加载、展示和操作的树状菜单系统。 树型结构是一种数据表示形式,由节点和边组成,每个节点可以有零个或多个子节点。在JavaScript中,...

    基于Java的实例源码-JSP树型菜单 DTree.zip

    这个压缩包"基于Java的实例源码-JSP树型菜单 DTree.zip"包含了一个使用Java技术构建的JSP树型菜单应用。这个菜单系统被称为DTree,它在Web应用程序中常用于展示层次结构的数据,例如目录结构、组织架构或者多级分类...

    JSP树型菜单 DTree.java源码学习

    在本主题中,我们将深入探讨如何使用DTree.java来实现一个树型菜单。DTree是一个流行的JavaScript库,用于在JSP页面上构建可交互的树形结构,常用于网站导航或数据展示。 首先,DTree.js是这个树型菜单的核心脚本...

    无限级可刷新Js树型菜单

    在这个场景中,`dtree.js`文件很可能就是实现树型菜单功能的JavaScript代码。这个脚本可能包含了构建树形结构、点击节点展开/折叠、异步加载子节点以及刷新菜单等功能。 `dtree.css`文件则是样式表,用于定义树型...

    asp.net 无限递归树型菜单... 采用dTree封装的自定义控件

    this.RecursiveTree1.DataTextField("菜单配置","Menu_ID", "Menu_ParentID", "Menu_Name", "Menu_Url", "Menu_Name","",""); 具体重载方法 说明 添加引用后,控件名.点 自行查看... //这里改写成你的数据库链接.. ...

    PHP递归方法树型菜单

    文件列表中包含了 `dtree.css` 和 `css.css`,这些可能是用来设置树型菜单样式的CSS文件。例如,它们可能会定义菜单的层次感、展开/折叠图标、颜色等。`dtree.js` 可能是一个JavaScript文件,用于实现菜单的交互功能...

    java源码:JSP树型菜单 DTree.zip

    Java源码中的JSP树型菜单DTree是一个经典的应用,常用于构建Web应用程序中的层级结构展示,如组织架构、文件目录或导航菜单等。DTree是基于JavaScript和JSP技术实现的,它通过动态加载和交互来展示树状数据结构。 1...

    基于Java+JSP树型菜单 DTree源码文件

    "基于Java+JSP树型菜单 DTree源码文件"提供了一种解决方案,它利用Java和JSP技术来创建动态的、交互式的树形菜单。下面我们将深入探讨这个主题。 Java是一种广泛使用的后端编程语言,具有跨平台的特性,常用于...

    无限级可刷新JS树型菜单

    在网页设计和开发中,树型菜单是一种常见且实用的用户界面元素,它能有效地组织和展示层次结构的数据。JS树(JavaScript Tree)是利用JavaScript编程语言实现的动态树形菜单,具有交互性强、可扩展性好等特点。本文...

    jquery dtree 实例 动态实现无限树形菜单(增删改查)

    在无限树形菜单的场景中,dTree能够处理大量数据并生成可无限扩展的节点结构,这对于组织和展示层次分明的数据非常有用。 要实现动态的无限树形菜单,首先需要在HTML中创建一个容器元素,然后通过JavaScript或...

    java 创建系统菜单 Dtree.js

    本文将详细介绍如何利用`Dtree.js`在Java环境中构建动态的、交互式的树型菜单,以及这个组件的一些关键特性。 首先,`Dtree.js`是一个轻量级的JavaScript库,它提供了丰富的API和可自定义的选项,使得开发者能够...

    简单使用的js树脚本

    JavaScript作为前端开发的主要语言,可以用来动态生成和操作DOM元素,实现树型菜单的动态效果。`dtree`脚本利用JavaScript的事件监听、DOM操作等特性,实现了菜单的交互功能。 4. **节点图片切换**: 这个脚本的一个...

    javascript+dom树型菜单类,希望朋友们一起进步

    ### JavaScript + DOM 树型菜单类详解 #### 一、概述 在Web开发中,树形菜单是非常常见的一种导航结构,它可以清晰地展示出层级关系,帮助用户更好地理解和导航网站内容。本文将详细介绍一个基于JavaScript和DOM...

    dtree的使用

    在"JavaScript代码配合struts构成一个树型菜单的例子"中,Struts作为一个MVC(Model-View-Controller)框架,负责处理服务器端的业务逻辑和数据管理。而JavaScript作为客户端脚本语言,主要处理用户交互和页面动态...

    Javascript 树型结构集合

    1. **dtree(动态树)**:dtree是一种动态生成的JavaScript树形控件,允许用户交互地展开和折叠节点。它基于HTML和CSS,通常使用DOM操作来创建和管理树结构。用户可以通过点击节点进行展开和收缩,还可以添加、删除...

    架构师成道之路

    例如,我们可以使用以下代码来生成树型菜单: d = new dTree('d'); d.add(0,-1,'菜单'); d.add(1,0,'报表查询','example01.html'); d.add(2,1,'月报','example01.html'); d.add(3,1,'季报','example01.html'); d....

    jsp动态生成目录树

    在提供的文件名`JSP与树型菜单--diegoyun`中,可能包含了一个示例JSP页面和一个用于生成树形菜单的JavaScript库,可以作为学习和实践这个过程的参考。 总结来说,利用JSP和Access数据库生成目录树,能够实现数据的...

    树型目录,权限设置通用JS实例

    为了快速生成树型目录,我们需要实现以下关键功能: 1. **递归构建**:从根节点开始,递归地为每个子节点创建新的对象,并将它们添加到父节点的子节点列表中。 2. **数据绑定**:将后台获取的扁平化数据结构转换为...

Global site tag (gtag.js) - Google Analytics