- 浏览: 985466 次
- 性别:
- 来自: 山西
-
文章分类
最新评论
-
白小默:
你好 可以提供下源码DEMO吗,不知为何,我导出来的excel ...
jxls 使用模板文件导出生成excel -
zkzqzzz:
博主威武!
让微信二维码扫描您的APK -
zkzqzzz:
感谢博主 原来那些类都不是必须的 或者自己写!!博主真棒 ...
抢红包插件实现原理浅析 -
zkzqzzz:
博主 请问你的其他类在哪里呢?
抢红包插件实现原理浅析 -
zkzqzzz:
其他类在哪呢?
抢红包插件实现原理浅析
使用dtree构建动态树型菜单
dtree是一个免费的javascript脚本,只需定义有限的几个参数,就可以做出漂亮的树型菜单。下载目录:http://www.destroydrop.com/javascripts/tree/ 以下是dtree的用法示例:
1)初始化菜单
< src="CodeHighter/prettify.js" type=text/javascript>
Copy code
<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)调用函数
< src="CodeHighter/prettify.js" type=text/javascript>
Copy code
<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动态实现
分以下步骤实现动态的树型菜单:
1)在数据库建tree_info表,有nodeId,parentNodeId,nodeName,nodeUrl四个字段,来存储节点信息。
2)编写java类,用于从数据库找出节点信息,并且生成javascript脚本。
3)编写tag类。用于封装逻辑,简化jsp的开发。
4)建一个web程序进行测试。
3. 详细过程
1)在数据库建表,脚本如下:
< src="CodeHighter/prettify.js" type=text/javascript>
Copy code
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`)
)
Quote:
我使用mysql数据库,如果脚本细节有出入,请自行修改
按照上面的dTree示例插入数据
2)编写TreeInfo.java,这个类用于封装节点信息
< src="CodeHighter/prettify.js" type=text/javascript>
Copy code
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,用于从数据库得到节点信息,封装到TreeInfo对象,并生成javascript脚本
TreeUtil.java
< src="CodeHighter/prettify.js" type=text/javascript>
Copy code
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("//-->");
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)编写标签类
InitTreeTag.java
< src="CodeHighter/prettify.js" type=text/javascript>
Copy code
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
< src="CodeHighter/prettify.js" type=text/javascript>
Copy code
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("//-->\n"); sb.append("</script>\n"); sb.append("</div>\n"); return sb; } }
标签的tld
< src="CodeHighter/prettify.js" type=text/javascript>
Copy code
<?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进行测试。
index.jsp
< src="CodeHighter/prettify.js" type=text/javascript>
Copy code
<%@ 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>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/carefree31441/archive/2008/07/28/2724615.aspx
发表评论
-
npm介绍与cnpm介绍
2017-12-07 15:22 392npm介绍 说明:npm(nod ... -
Electron学习笔记Part3-利用Electron builder应用打包EXE
2017-12-06 17:44 1249HelloWorld写完并能够成功运行了,接下来将这个He ... -
利用electron-packager打包exe程序
2017-12-06 17:41 960一、安装 electron-packager PS:安装之 ... -
使用npm安装electron不成功的解决方法
2017-12-06 17:24 3174使用npm安装electron不成功的解决方法 根据官网提 ... -
electron 的混合桌面之路 入门安装
2017-12-06 17:23 688最近有计划去写桌面程序,所以呢,我打算写一篇博客来记录 ... -
formValidator的一些验证实例
2016-12-21 11:14 405$(function () { try { ... -
JS中onmouseover与onmouseout的bug/js避免onmouseover onmouseout多次触发
2016-11-16 15:33 1042在Javascript中,父元素包含子元素,当给父元素设置 ... -
一周APP UI交互设计动效灵感
2016-08-09 17:53 560一个好的动效设计可以提升UI界面与用户的交互体验,让枯燥的界 ... -
让界面动起来!移动动效设计必备灵感网站
2016-08-09 17:50 623扁平化的兴起,现在越来越流行动效设计,特别对于移动端,对交互 ... -
「添加购物」功能交互演示
2016-09-13 10:46 485几平每个购物网站都会有一个购物车功能,它可以算是不可缺少的 ... -
功能性动画UX设计:优秀的过渡转场效果(Transtion)
2016-08-09 17:43 490功能性动画(functional animation)是一种 ... -
表单动画 jQuery 插件:Form Animation Plugin
2016-08-09 17:35 500今天为大家分享的表单动画 jQuery 插件:Form An ... -
JS中的RegExp对象
2013-09-17 16:31 476JavaScript提供了一个RegExp对象来完成有 ... -
js获取项目根路径
2013-09-17 16:26 488//js获取项目根 ... -
javascript 中string转换int方法汇总
2012-07-12 16:38 878方法一: <script> var ... -
javascript中判断IP地址格式
2011-12-30 15:44 988function checkIp(ip){var ip ... -
input type=file的清空(javascript)
2011-12-29 10:26 1128<input name="f1" v ... -
Google 排名中的 10 个最著名的 JavaScript 库
2011-11-30 16:37 807JavaScript 是 Web 开发与设计中不可或缺的东西, ... -
js加载倒计时
2011-11-30 09:15 1118<script> var loadt ... -
js去掉前后空格
2011-11-28 11:54 749js实现TRIM功能<SCRIPT LA ...
相关推荐
本文将深入探讨如何使用dtree来构建JavaScript树型菜单,并分享相关知识点。 首先,了解dtree的基本概念。dtree是一个纯JavaScript编写的组件,不需要依赖其他库如jQuery,这使得它在各种环境下都能运行良好。它的...
总之,在Java中构建树型菜单,结合JavaScript库如Dtree和Xtree,可以实现动态、交互性强的用户界面。通过合理的设计和优化,可以为用户提供直观且高效的导航工具,提升Web应用的整体体验。在实践中,务必关注性能和...
在本案例中,我们讨论的是一款名为"dtree"的JavaScript库,它能够帮助开发者创建具有动态效果的树型菜单。下面将详细介绍这款菜单的实现原理和关键知识点。 首先,`dtree.js`是核心JavaScript文件,包含了树型菜单...
在这个场景下,"js动态树型结构 树型菜单"指的是使用JavaScript实现的可以动态加载、展示和操作的树状菜单系统。 树型结构是一种数据表示形式,由节点和边组成,每个节点可以有零个或多个子节点。在JavaScript中,...
《JSP树型菜单DTree深度解析》 在Web开发中,树型菜单是一种常见的界面元素,用于组织和展示层次化的数据。JSP(JavaServer Pages)中的DTree是一款高效且灵活的树型菜单实现,它结合了HTML、JavaScript以及CSS技术...
总的来说,这个Java JSP实例提供了构建动态树型菜单的一个完整解决方案,涵盖了前端的样式设计、API文档、示例代码以及必要的图像资源。通过学习和使用这个实例,开发者可以掌握如何在自己的Java Web应用中实现类似...
在网页开发中,构建交互式的树型菜单是常见的需求,用于组织和展示层次结构的数据。在本主题中,我们将深入探讨“dtree”、“xtree”以及“jquery-treeview”这三个JavaScript插件,它们都是用来创建这样的菜单的...
4. **dtree.js**:这是DTree的核心JavaScript文件,包含了实现树型菜单功能的代码。这个文件可能包含了构造树形结构、处理用户交互、动态加载数据等功能。开发者可以通过查看源码来深入理解DTree的内部工作机制,...
在example01.html中,你可以看到如何在JSP页面中引入DTree.js和相关的CSS样式文件(dtree.css)以构建树型菜单。dtree.css负责菜单的布局和美化,确保在不同的浏览器和设备上都能有良好的显示效果。 DTree的使用...
【标题解析】 "基于Java的源码-JSP树型菜单 DTree.zip" 这个标题揭示了我们正在处理一个与Java编程相关的项目,具体来说是JSP(Java ...对于希望深入理解或使用DTree树型菜单的开发者来说,这些都是不可或缺的知识。
总结来说,`dTree` 是一款强大的JavaScript库,适用于构建无限级、可刷新的树型菜单,其丰富的功能、良好的性能和易用性使得它在网页开发中具有广泛的应用价值。无论是在企业级项目还是个人作品中,`dTree` 都能成为...
"无限级可刷新Js树型菜单 dTree" 是一个JavaScript库,用于在Web应用中创建能够无限层级展开和刷新的树形菜单。这个标题表明该库特别适用于那些需要展示复杂层次结构数据的场景,比如组织结构、文件系统或者导航菜单...
这个压缩包"基于Java的实例源码-JSP树型菜单 DTree.zip"包含了一个使用Java技术构建的JSP树型菜单应用。这个菜单系统被称为DTree,它在Web应用程序中常用于展示层次结构的数据,例如目录结构、组织架构或者多级分类...
在前端开发中,Dtree和Xtree是两种常见的JavaScript实现树型菜单的库。下面将详细介绍这两个库以及相关知识点。 1. Dtree(Dynamic Tree) Dtree是一个轻量级的JavaScript库,它提供了创建动态树形菜单的功能。这...
JavaScript dTree 是一个轻量级的库,用于创建具有复选框功能的交互式树形菜单。这种类型的菜单在Web应用程序中广泛使用,特别是在需要层级结构数据展示和多选操作的场景下。dTree 提供了一种高效且灵活的方式来组织...
使用Dtree创建树型菜单的步骤如下: 1. **初始化HTML结构**:首先,在HTML文档中添加一个容器元素,用于存放树型菜单。可以是一个`<div>`标签,设置相应的ID,如`#dtree`。 2. **准备JSON数据**:定义菜单的层级...
其次,`api.html`通常包含的是DTree组件的API文档,为开发者提供了使用这个树型菜单的指南。在这里,开发者可以了解到如何初始化菜单、添加、删除、修改节点,以及如何响应用户的交互事件,如点击、展开、收缩等。...
在给定的"dtree"文件中,可能包含了一个实现树型菜单动态加载的JavaScript库或者示例代码。这个库可能提供了创建、操作和管理树型菜单的功能,并且集成了Ajax请求以实现动态加载。通常,这样的库会提供API接口,如...
其中JavaScript部分使用了一个名为dTree的库来创建和管理树型菜单。dTree是一个轻量级的JavaScript插件,它提供了一系列API用于构建和操作树形结构的数据。 #### 2. HTML结构 HTML部分定义了页面的基本结构,包括...
总结来说,这个“很经典的OA树型菜单源代码”包含了构建树型菜单的前端展示和交互处理。理解树型菜单的工作原理、HTML与JavaScript的结合以及相关库的使用,对于开发人员来说,是提高用户体验和优化OA系统功能的重要...