從http://www.destroydrop.com/javascripts/tree/下載dtree.zip壓縮包,解壓后我們會用到dtree.js、dtree.css和img文件夾。
1.TreeInfo.java
package com.yxx;


public class TreeInfo
{
private int nodeId = -1;
private int parentId = -1;
private String nodeName = null;
private String url = null;
private String target = null;


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


public String getTarget()
{
return target;
}


public void setTarget(String target)
{
this.target = target;
}

}

2.TreeUtil.java
package com.yxx;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;


public class TreeUtil
{


/** *//**
* @從數(shù)據(jù)庫中讀取tree的信息
* @return
*/

public static List<TreeInfo> retrieveNodeInfos()
{
List<TreeInfo> treeInfoList = new ArrayList<TreeInfo>();
String driverName = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";

Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet rs = null;

try
{
Class.forName(driverName).newInstance();
connection = DriverManager.getConnection(url, "root", "1234");
String sql = "select * from tree_info";
preparedStatement = connection.prepareStatement(sql);
rs = preparedStatement.executeQuery();

TreeInfo treeInfo = null;

while (rs != null && rs.next())
{
treeInfo = new TreeInfo();
treeInfo.setNodeId(rs.getInt(1));
treeInfo.setParentId(rs.getInt(2));
treeInfo.setNodeName(rs.getString(3));
treeInfo.setUrl(rs.getString(4));
treeInfoList.add(treeInfo);
}

} catch (Exception e)
{
System.out.println(e);
}

return treeInfoList;
}


/** *//**
* @生成創(chuàng)建tree的腳本
* @param treeInfoList
* @return
*/

public static String createTreeInfo(List<TreeInfo> treeInfoList)
{
StringBuffer contents = new StringBuffer();
contents.append("<script type='text/javascript'>\n");
contents.append("d = new dTree('d');\n");

TreeInfo treeInfo = null;

for (int i = 0; i < treeInfoList.size(); i++)
{
treeInfo = (TreeInfo) treeInfoList.get(i);
contents.append(createOneItem(treeInfo));
}

contents.append("document.write(d);");
contents.append("\n</script>");
return contents.toString();
}


/** *//**
* @生成創(chuàng)建一個條目的腳本
* @param treeInfo
* @return
*/

public static String createOneItem(TreeInfo treeInfo)
{
StringBuffer item = new StringBuffer();
item.append("d.add(");
// 第一個參數(shù),表示當(dāng)前節(jié)點的ID
item.append(treeInfo.getNodeId() + ",");
// 第二個參數(shù),表示當(dāng)前節(jié)點的父節(jié)點的ID,根節(jié)點的值為 -1
item.append(treeInfo.getParentId() + ",");
// 第三個參數(shù),節(jié)點要顯示的文字
item.append("'" + treeInfo.getNodeName() + "',");
// 第四個參數(shù),節(jié)點的Url
item.append("'" + treeInfo.getUrl() + "',");
// 第五個參數(shù),鼠標(biāo)移至該節(jié)點時節(jié)點的Title
item.append("'" + treeInfo.getNodeName() + "',");
// 第六個參數(shù),節(jié)點的target
item.append("'blank',");
// 第七個參數(shù),用做節(jié)點的圖標(biāo),節(jié)點沒有指定圖標(biāo)時使用默認值
item.append("'',");
// 第八個參數(shù),用做節(jié)點打開的圖標(biāo),節(jié)點沒有指定圖標(biāo)時使用默認值
item.append("'',");
// 第九個參數(shù),判斷節(jié)點是否打開
item.append(false);

item.append(");\n");
return item.toString();
}


/** *//**
* @取得腳本
* @return
*/

public String getMenuJS()
{
String js = "";
List<TreeInfo> treeInfoList = TreeUtil.retrieveNodeInfos();
js = TreeUtil.createTreeInfo(treeInfoList);
return js;
}


/** *//**
* @測試生成的JS
* @param args
*/

public static void main(String[] args)
{
List<TreeInfo> treeInfoList = TreeUtil.retrieveNodeInfos();
System.out.println(TreeUtil.createTreeInfo(treeInfoList));
}
}

3.index.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<jsp:useBean id="treeUtil" scope="request" class="com.yxx.TreeUtil" />
<html>
<head>
<title>Tree</title>
<link rel="StyleSheet" href="dtree.css" type="text/css" />
<script type="text/javascript" src="dtree.js"></script>
</head>
<body>
<div class='dtree'>
<%=treeUtil.getMenuJS()%>
</div>
</body>
</html>