JSP实现无限级分类的算法
大家好,有在B/S开发中做过无限级分类的吗?请讲述一下算法(最好是JSP的),谢谢 
 就是类似这种: 
 电脑产品 
       |_硬件 
             |_CPU 
       |_软件 
             |_应用软件   
 这种模式的,有思路的请讲一下,谢谢
------解决方案-------------------- <html>  
  <head>      
  <meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">  
  <title> 无限级菜单显示 </title>  
  </head>  
  <body>  
  <script Language= "JavaScript ">    
     var name=new Array(); 
  <% 
       for(int i=0;i <parrStsUserList.size();i++) 
       { 
         pobjCp = (Cp)parrStsUserList.get(i); 
         out.println( "name[ "+i+ "]=new Array( ' "+pobjCp.getCpID()+ " ', ' "+pobjCp.getCpname()+ " ', ' "+pobjCp.getCpuseid()+ " '); "); 
 } //这是从数据库中读出的数据,下面的只是静态页面时的测试数据 
 %>   
 name[0]=new Array( '1 ', 'ggg ', '0 '); 
 name[1]=new Array( '2 ', 'aaa ', '1 '); 
 name[2]=new Array( '3 ', 'bbb ', '1 '); 
 name[3]=new Array( '4 ', 'ccc ', '2 '); 
 name[4]=new Array( '5 ', 'ddd ', '2 '); 
 name[5]=new Array( '6 ', 'eee ', '3 '); 
 name[6]=new Array( '7 ', 'fff ', '3 '); 
 name[7]=new Array( '8 ', 'hhh ', '2 '); 
 name[8]=new Array( '9 ', 'ggg1 ', '0 '); 
 name[9]=new Array( '10 ', 'aaa1 ', '9 '); 
 name[10]=new Array( '11 ', 'bbb1 ', '9 '); 
 name[11]=new Array( '12 ', 'ccc1 ', '11 '); 
 name[12]=new Array( '13 ', 'ddd1 ', '12 '); 
 name[13]=new Array( '14 ', 'eee1 ', '13 '); 
 name[14]=new Array( '15 ', 'fff1 ', '14 '); 
 name[15]=new Array( '16 ', 'hhh1 ', '15 '); 
   function check(userid,i,ddd) 
 { 
 ddd= "  "+ddd; 
     for(i=0;i <name.length;i++) 
     { 
            if(name[i][2]==userid) 
           { 
            document.write(ddd+name[i][1]+ <br> ); 
             check(name[i][0],0,ddd); 
           } 
      } 
   } 
     check(0,0, " <img src= '你菜单项前面的图片地址 '>  "); 
  </script>  
  </body>  
  </html>  
 JS改为JSP很好改的
------解决方案--------------------每个分类总归有个id吧, 
 那么在数据库里建个表,至少包含两个字段,parentid和childid,通过一个顶层id,可以把所有的child搜出来,还可以知道当前id属于第几层,代码可以考虑用递归。
------解决方案--------------------一般是建一张表 
 基本字段如下: 
 ID        PK, 
 PARENT_ID  父ID, 
 CODE      编号, 
 NAME      名称, 
 URL       连接地址,   
 当然还可以加入其他一些你需要的字段。   
 显示的时候做个递归或者循环,就能把所有字段都查询出来 
------解决方案--------------------树算法有几种, 
 一种是bbs常用数字类 
    parentId,就是以上各位所说的。   
 另一种常用的则是以字符串来表示,比如每级3位 
 则 001 第一层 
    001001 第二层。 
 这个用一个 id like  '001% ' 就可以很方便的找到任意级的所有子对象,对于小型系统货物分类来说比较方便。但性能比上面那种要差。   
 不过在10w级的数据量上性能是可以接受的,差别最多在1秒左右。