java 动态树_使用dtree构建动态树型菜单
dtree是一个免费的javascript脚本,只需定义有限的几个参数,就可以做出漂亮的树型菜单。下载目录:
以下是dtree的用法示例:
1)初始化菜单
2)调用函数
2。jsp动态实现
分以下步骤实现动态的树型菜单:
1)在数据库建tree_info表,有nodeId,parentNodeId,nodeName,nodeUrl四个字段,来存储节点信息。
2)编写java类,用于从数据库找出节点信息,并且生成javascript脚本。
3)编写tag类。用于封装逻辑,简化jsp的开发。
4)建一个web程序进行测试。
3。详细过程
1)在数据库建表,脚本如下:
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数据库,如果脚本细节有出入,请自行修改
按照上面的dTree示例插入数据
2)编写TreeInfo.java,这个类用于封装节点信息
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
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("");
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
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("
tree.append(TreeUtil.createTreeInfo(TreeUtil.retrieveNodeInfos()));
tree.append("\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("
sb.append("
sb.append("\n");
sb.append("\n");
sb.append("
\n");
return sb;
}
}
标签的tld如下:
taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"">
1.0
1.2
tree
init
com.diegoyun.web.taglibs.InitTreeTag
empty
show
com.diegoyun.web.taglibs.ShowTreeTag
empty
4)建立web过程,编写jsp进行测试。
index.jsp如下:
Tree example
Tree example :
本文出自 51CTO.COM技术博客
java 动态树_使用dtree构建动态树型菜单相关推荐
- chartjs 动态数据_使用ChartJS构建动态仪表板
chartjs 动态数据 今天,我们将通过ChartJS的功能使用实时图表创建一个动态仪表板. ChartJS是一个功能强大的,无依赖项JavaScript库,可通过canvas元素构建图形. 最重要 ...
- 120帧手机动态壁纸_小英雄高清动态壁纸app下载-小英雄高清动态壁纸v2.6手机下载...
小英雄高清动态壁纸,下面由小编给大家介绍一下这款软件,该软件是一款专业的手机壁纸大全,汇集了多种专业的壁纸样式,包含了风景.卡通.可爱.美女和热门的壁纸素材,包含了静态壁纸和动态壁纸,所有的壁纸素材像 ...
- axure内联框架和动态面板_【Axure】动态面板的理解与下拉列表的联动
刚开始学axure,发现入门还是蛮简单的,所以从现在开始写一些自己体会的内容,以后忘记了也可以来翻阅一下. 因为是入门,所以内容肯定是很简单的,但是本文也不会致力于写教程一样那么详细,还是侧重于自己的 ...
- java中动态输入_根据特定输入动态生成字符串的代码 - java
我想根据特定的输入动态生成字符串 如果输入= 1,则字符串输出= 00000 如果它= 10,则输出= 0000a 输入= 16,输出= 00010 等等 . 生成的字符串是从0到9的数字和从a到f的 ...
- java 后台输出_将后台输出动态打输出到前台并且显示
我想把如: for(int i,i<1000,i++) System.out.println("内容") 这段代码会输出1000个"内容",我想把它输出的 ...
- sql java web动态曲线图_使用Echarts实现动态曲线图表
最近做的一个在线气象观测网站要实现一个需求:使用图表展示最近五天温湿度等气象要素的曲线变化 图示如下(2016-5-25日的数据): 下面就详述一下实现过程吧(注:相较于原网页我隐去了很多内容,本实现 ...
- 创建父需求子需求构建需求树_用pc构建DIY计算集群(超级计算机)
----------------------------------------------------------------- 用pc构建DIY计算集群 目录 /构建计算集群 0. |-- /0前 ...
- java构建继承树_java - 使用继承构建通用树 - 堆栈内存溢出
我正在构建一个通用的Tree类,它支持子树的继承. 但我遇到了一些问题. 请你帮帮我吗? 描述 让我们定义Tree类和BlueTree类,其中BlueTree extends Tree . 让我们定义 ...
- android ndk 动态库_百度经验,android ndk 动态库
android ndk开发经常遇到了动态库的问题,本文主要介绍: ① 动态链接库的生成: ② 在Java和C混合编程的情况下如何调用第三方动态链接库: ③ 通过jar包的方式间接调用第三方动态链接库: ...
最新文章
- Android开发之模板模式初探
- python3实现汉字转拼音
- Nginx初学第一步
- Mysql事务和锁原理
- 订阅基础:RSS、ATOM、FEED、聚合、供稿、合烧与订阅
- python 全栈开发,Day51(常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍)...
- 垃圾回收算法简单介绍——JVM读书笔记lt;二gt;
- C语言const关键字—也许该被替换为readolny
- git 理解 HEAD^与HEAD~
- 前端每日实战:73# 视频演示如何用纯 CSS 创作一只卡通狐狸
- python-引用/模块
- 【一步一步】Spring 源码环境搭建
- Arcmap坐标系转换通用教程【简单明了】
- c语言读取含特定开头的文件,C#中获取指定路径下特定开头和后缀的所有文件
- PDF转HTML常用方法分享
- Centos7安装WPS
- WSL环境下使用RV-LINK下载和调试GD32VF103程序视频教程
- 第一章 计算机网络概述(计算机网络韩立刚)
- esri默认底图的加载
- JS基础 Set 用于存储任何类型的唯一值
热门文章
- css选择器_css入门必学,基础重难点,css选择器
- python给内置函数重命名_python – 以Pandas Groupby函数重命名列名
- html模拟在线股票走势,用HTML5实现全套股票行情图
- 远程协助计算机是灰色的,服务器远程协助是灰色的
- linux需要多少空间安装mysql_如何安装MySQL
- flutter 拖拽布局_Flutter 史上最牛拖动控件 Draggable
- java xml 表达式语言_中级Java开发工程师笔试题
- java helper 设计模式_必知必会的 Java 设计模式入门知识(十):外观模式
- ajax 连接java,如何使用Ajax连接到Java servlets?
- python是动态还是静态_python之静态方法和动态方法介绍