呵呵,结合JSP和JAVASCRIPT,可惜我没有,关注!

解决方案 »

  1.   

    下面是我用的代码,给你参考一下
    主目录:
    <%@ page language="java" contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.Connection,com.data.DBConnect"%>
    <html>
    <head>
    <title>网站结构</title>
    <style type="text/css">
    <!--
    .txt1 {
    font-size: 9pt;
    color: #000000;
    text-decoration: none;
    }
    .txt2 {
    font-size: 9pt;
    color: #669999;
    text-decoration: none;
    }
    .tr1 {
    margin: 0px;
    padding: 0px;
    border: none;
    left: 0px;
    top: 0px;
    right: 0px;
    bottom: 0px;
    clip:  rect(0px 0px 0px 0px);
    }
    -->
    </style>
      <script language="JScript">
    function turnit(ss,ii,aa)
    {
     if (ss.style.display=="none") 
      {
        ss.style.display="";
        ii.src="/tree/t2.gif";
        aa.style.display="";
       }
     else
      {
        ss.style.display="none"; 
        ii.src="/tree/t1.gif";
        aa.style.display="none";
       }
      }
      function maingo(part_id,part_name)
      {
      parent.mainFrame.location="/part/part_util.jsp?part_id="+part_id;
      }
      function mainto()
      {
      parent.mainFrame.location="/part/part_util.jsp?part_id=-1";
      }
    </script>
    </head>
    <body onLoad="mainto()">
    网站结构
    <%
    Connection con=new DBConnect().getConn();
    request.setAttribute("con",con);
    request.setAttribute("part_main_id","-1");
    request.getRequestDispatcher("part.jsp").include(request,response);
    %>
    </body>
    </html>//part.jsp
    <%@ page language="java" contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.Connection,com.model.*,com.database.*"%>
    <table width="100%" border="0" cellpadding="3" cellspacing="2" bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="tr1">
      <%
    String part_main_id=(String)request.getAttribute("part_main_id");//?鬣???ID
    String imgnum=(String)request.getAttribute("imgstr");
    Connection con=(Connection)request.getAttribute("con");
    PartDB pd=new PartDB();
    String imgstr="";
    if(imgnum==null||imgnum.equals(""))
    {
    imgstr="";
    }
    PartVector pv=pd.executeQueryMain(con,part_main_id);
    PartModel pm=null;
    for(int i=0;i<pv.size();i++)
    {
    pm=pv.get(i);
    String part_id=pm.getPart_id();
    String part_name=pm.getPart_name();
    String issubschema=pm.getIssubschema();
    if(issubschema!=null&&issubschema.equals("0")){//?T左???2|囗
    %>
        <tr>
        <td height="26" bgcolor="#E1E1E1" class="txt2"><%=imgstr%><img src="/tree/treeimg/dot.gif" width="12" height="12"></td>
        <td width="505" bgcolor="#E1E1E1" onClick="maingo('<%=part_id%>','<%=part_name%>')" style="cursor:'hand'"><%=part_name%></td>
        </tr> 
    <%}else{//驞左???2|囗
    String content1="content"+part_id;
    String img1="img"+part_id;
    String aux1="aux"+part_id;%>
    <tr>

        <td height="26" bgcolor="#E1E1E1" class="txt1" style="cursor:'hand';" onmouseup="turnit(<%=content1%>,<%=img1%>,<%=aux1%>);" language="JScript"> 
          <%=imgstr%><img src="/tree/t1.gif" width="12" height="12" ID="<%=img1%>"> 
        </td>
        <td bgcolor="#E1E1E1" onClick="maingo('<%=part_id%>','<%=part_name%>')" style="cursor:'hand'"><%=part_name%></td>
       </tr>
    <tr>

        <td width="22" height="26" bgcolor="#E1E1E1" class="tr1" ID="<%=aux1%>" STYLE="Display:'none';"> 
        </td>

        <td bgcolor="#E1E1E1" ID="<%=content1%>" STYLE="Display:'none';"> 
          <%
    request.setAttribute("con",con);
    request.setAttribute("imgstr","1");
    request.setAttribute("part_main_id",part_id);
    request.getRequestDispatcher("/tree/part.jsp") .include(request,response);
    %>
        </td> 
    </tr> 
    <%}
    }
    %>
    </table>
      

  2.   

    有四个字段,一个ID(part_id),一个它的上级ID(part_main_id),一个它是否有儿子(issubschema),一个它的名字(part_name):
    我把最开始的ID设为-1,即:上级ID为-1的是第一级的,
    也就是这句是开头:
    Connection con=new DBConnect().getConn();
    request.setAttribute("con",con);//连数据库比较费时,所以我把所有的页面用一个连接,而把连接传递过去.
    request.setAttribute("part_main_id","-1");
    request.getRequestDispatcher("part.jsp").include(request,response);
    //也就是先找到上级ID是-1的儿子part.jsp的作用就是找到相应上级ID相应的所有儿子.在part.jsp中也有一句:
    先检测该栏目是否有儿子(我用的这个的目的主要是为了显示不同图片时用的,不想检索数据库太多次,如果都显示成一样的图片处理,这一块可以不要,而检测这一上级ID的栏目的记录是否存在,如果不存在就不往下递归).如果有
    request.setAttribute("con",con);
    request.setAttribute("imgstr","1");
    request.setAttribute("part_main_id",part_id);
    request.getRequestDispatcher("/tree/part.jsp") .include(request,response);//它是递归用的,如果有子栏目,那么就再递归找到它的儿子.
      

  3.   

    其它地方都是获得数据的地方,你看一看应该找得到各自对应的,把你的数据换进去就可以了.
    part.jsp中的解释一下:String part_main_id=(String)request.getAttribute("part_main_id");//获得上级ID,是从上面传来的.
    String imgnum=(String)request.getAttribute("imgstr");//获得显示图片,根据情况,可以自己定,也可以不要.
    Connection con=(Connection)request.getAttribute("con");//获得链接,由上面传来.
    PartDB pd=new PartDB();
    String imgstr="";
    if(imgnum==null||imgnum.equals(""))
    {
    imgstr="";
    }
    PartVector pv=pd.executeQueryMain(con,part_main_id);//获得数据,你可以替换成自己的数据.这可以是成批的,我用Vector
    PartModel pm=null;//单个数据.
    for(int i=0;i<pv.size();i++)
    {
    pm=pv.get(i);//获得记录中的一个,你可以替换成你的.
    String part_id=pm.getPart_id();//ID
    String part_name=pm.getPart_name();//名字
    String issubschema=pm.getIssubschema();//是否有儿子
    if(issubschema!=null&&issubschema.equals("0")){//如果没有儿子.
    ......
    }else{
    //如果有儿子
    .....
    request.setAttribute("con",con);
    request.setAttribute("imgstr","1");
    request.setAttribute("part_main_id",part_id);//把本ID作为下一级的上级ID递归下去.
    request.getRequestDispatcher("/tree/part.jsp") .include(request,response);
    ......
    }
      

  4.   

    xiaofenguser(风雨)
    兄弟,你的页面代码中有乱码哦。不过至少我看出了点思路。谢谢先。
      

  5.   

    呵呵,页面是用DreamweaverMX写的,再用editplus打开,注释的地方就`*#(*&#@
    看后面写的解释比较好点,代码写的乱.
      

  6.   

    简单说一个递归程序!栏目id     父栏目FatherID  栏目名称name
    根据一个或者多个栏目,将他们和他们的字栏目显示出来,不能够重复栏目!我曾经做过这个用java写成类或者bean比较好!循环会很多!
      

  7.   

    xiaofenguser(风雨)大哥,能不能给上传一份 源码外加数据库表,拜托了.e-mail:[email protected],
      

  8.   

    能不能也给我一份,[email protected],
    另外,100分我结贴的时候会给你。
      

  9.   

    望能给小弟我发一份,[email protected].拜托!!!