根据一个CSDN上的文档例子做的,取之与CSDN,还之与CSDN
----------------------------------------------------------
类似 MSDN CSDN 导航树效果,JSP + JavaScript 实现! <!-- Tree.jsp -->
<%@ page contentType ="text/html;charset=gb2312" %> 
<%@ page import="java.util.*;" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
<TITLE> New Document </TITLE> 
<META NAME="Generator" CONTENT="EditPlus"> 
<META NAME="Author" CONTENT=""> 
<META NAME="Keywords" CONTENT=""> 
<META NAME="Description" CONTENT=""> 
</HEAD> 
<BODY> 
<iframe width="100%" height="100" id="hiddenframe"></iframe> 
<script> 
function ExpandNode(ParentNode,ParentId){ 
var NodeX = eval(ParentNode.id + '_0'); 
if (NodeX.style.display == 'none') 
 {
  NodeX.style.display="block"; 
  if (NodeX.loaded == 'no') 
     { 
      document.frames['hiddenframe'].location.replace("subtree.jsp?PID=" + ParentId + "&PNode=" + ParentNode.id); 
      NodeX.loaded = 'yes'; 
    } 
 } 
else 
 { 
  NodeX.style.display='none'; 
 } 

</script> 
<CENTER> 
<TABLE border="1" width="20%" height="60%"> 
<TR> 
<TD> 
<DIV style="OVERFLOW: auto;WIDTH: 100%;HEIGHT: 100%"> 
<TABLE width="300%"> 
<TR> 
<TD> 
<% 
 java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
//  java.sql.Connection ConnectionX = java.sql.DriverManager.getConnection("jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\Resin\\doc\\examples\\Tree\\tree.mdb","admin", ""); 
//  java.sql.Statement StatementX = ConnectionX.createStatement(); 
 java.sql.ResultSet ResultSetX = java.sql.DriverManager.getConnection("jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=e:\\resin-2.1.6\\doc\\examples\\Tree\\tree.mdb","admin", "").createStatement().executeQuery("select *,(select count(*) from tree where parentid = T.id) as children from tree T where parentid = 0"); 
 int i=0; 
 int children; 
 int ID; 
 while (ResultSetX.next()) 
       { 
children=ResultSetX.getInt("children"); 
ID=ResultSetX.getInt("id"); 
%> 
<div id='Node_<%= i %>'><a href='#' 
        <% if (children >0) 
              {%> 
                 onClick='ExpandNode(Node_<%= i %>,<%=ID %>)'>+</a> 
              <%;} 
            else {%> 
                >-</a><%;}%> 
        <a href='#' 
        <% if (children >0) 
                {%> 
                    onDblClick='ExpandNode(Node_<%= i %>,<%=ID%>)' 
                <%}  %>   
                > 
                <%=ResultSetX.getString("re")%></a> 
</div> 
         
<div id='Node_<%= i %>_0' style='display: none' loaded='no'> 
          正在加载 ... 
   </div> 
 <% 
 i++; 
 } 
 %> 
</BODY>
</HTML> <!-- SubTree.jsp -->
<%@ page contentType ="text/html;charset=gb2312" %> 
<%@ page import="java.util.*;" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
<TITLE> New Document </TITLE> 
<META NAME="Generator" CONTENT="EditPlus"> 
<META NAME="Author" CONTENT=""> 
<META NAME="Keywords" CONTENT=""> 
<META NAME="Description" CONTENT=""> 
</HEAD> 
<% 
String ParentNode = request.getParameter("PNode"); 
int i; 
int j; 
String nSpace=""; 
j= ParentNode.length()- ParentNode.replaceAll("_","").length(); 
for (i=0;i<j;i++) 
   nSpace = nSpace + "  "; 
String sHTML =""; 
i=0;  java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
//  java.sql.Connection ConnectionX = java.sql.DriverManager.getConnection("jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\Resin\\doc\\examples\\Tree\\tree.mdb","admin", ""); 
//  java.sql.Statement StatementX = ConnectionX.createStatement(); 
 java.sql.ResultSet ResultSetX = java.sql.DriverManager.getConnection("jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=e:\\resin-2.1.6\\doc\\examples\\Tree\\tree.mdb","admin", "").createStatement().executeQuery("select *,(select count(*) from tree where parentid =T.id ) as Children from tree T where parentid = " + request.getParameter("PID")); 
 int children; 
 int ID; 
 while (ResultSetX.next()) 
 {    children=ResultSetX.getInt("children"); 
      ID=ResultSetX.getInt("id"); 
      sHTML = sHTML + "<div id='" + ParentNode + "_" + (i + 1) + "'>" + nSpace + "<a href='#'"; 
  if (children >0) 
     sHTML = sHTML + " onClick='ExpandNode(" + ParentNode + "_" + (i + 1) + "," + ID + ")'>+"; 
  else sHTML = sHTML + ">-"; 
      sHTML = sHTML + "</a>\\n" + "<a href='#'"; 
  if (children >0) 
     sHTML = sHTML + " onDblClick='ExpandNode(" + ParentNode + "_" + (i + 1) + "," + ID + ")'"; 
  sHTML = sHTML + ">" + ID + ": " + ResultSetX.getString("re") + "</a></div>"; 
  if (children >0) 
     sHTML = sHTML + "<div id='" + ParentNode + "_" + (i + 1) + "_0' style='display: none' loaded='no'>" + nSpace + "  正在加载 ...</div>"; 
 %>
 <% i++;
    }%>
<BODY>
<script>
   var x = eval('parent.' + '<%= ParentNode + "_0"%>' ) ; 
   x.innerHTML="<%= sHTML %>"; 
</script>
</BODY>
</HTML>