这个问题应该是用js生成菜单,用jsp读数据库,然后生成动态菜单
如:
     <SCRIPT language=JavaScript1.2> 
NS4 = (document.layers) ? 1 : 0; 
IE4 = (document.all) ? 1 : 0; 
ver4 = (NS4 || IE4) ? 1 : 0; 
 
if (ver4) { 
    with (document) { 
        write("<STYLE TYPE='text/css'>"); 
        if (NS4) { 
            write(".parent {position:absolute; visibility:visible}"); 
            write(".child {position:absolute; visibility:visible}"); 
            write(".regular {position:absolute; visibility:visible}") 
        } 
        else { 
            write(".child {display:none}") 
        } 
        write("</STYLE>"); 
    } 

 
function getIndex(el) { 
    ind = null; 
    for (i=0; i<document.layers.length; i++) { 
        whichEl = document.layers[i]; 
        if (whichEl.id == el) { 
            ind = i; 
            break; 
        } 
    } 
    return ind; 

 
function arrange() { 
    nextY = document.layers[firstInd].pageY +document.layers[firstInd].document.height; 
    for (i=firstInd+1; i<document.layers.length; i++) { 
        whichEl = document.layers[i]; 
        if (whichEl.visibility != "hide") { 
            whichEl.pageY = nextY; 
            nextY += whichEl.document.height; 
        } 
    } 

 
function initIt(){ 
    if (!ver4) return; 
    if (NS4) { 
        for (i=0; i<document.layers.length; i++) { 
            whichEl = document.layers[i]; 
            if (whichEl.id.indexOf("Child") != -1) whichEl.visibility = "hide"; 
       } 
        arrange(); 
    } 
    else { 
        divColl = document.all.tags("DIV"); 
        for (i=0; i<divColl.length; i++) { 
            whichEl = divColl(i); 
            if (whichEl.className == "child") whichEl.style.display = "none"; 
        } 
    } 

 
function expandIt(el) { 
    if (!ver4) return; 
    if (IE4) { 
        whichEl = eval(el + "Child"); 
        if (whichEl.style.display == "none") { 
            whichEl.style.display = "block"; 
        } 
        else { 
            whichEl.style.display = "none"; 
        } 
    } 
    else { 
        whichEl = eval("document." + el + "Child"); 
        if (whichEl.visibility == "hide") { 
            whichEl.visibility = "show"; 
        } 
        else { 
            whichEl.visibility = "hide"; 
        } 
        arrange(); 
    } 

 
onload = initIt; 
 
</SCRIPT> /////////////
<%   
这里读你的数据库,然后存数组,记下数组的长度i    
for(j=0;j<i;j++)   
{ %>     <DIV class=parent id=<%="KB"+j+"Parent"%>>&nbsp;&nbsp;&nbsp&nbsp&nbsp<A    
      href="http://"    
      onclick="expandIt('<%="KB"+j%>'); return false"><IMG border=0 height=16 src="../images/teach_unit.gif" width=20><font color="#000080" size="2"><%=name[j]%>(一级菜单的名字)</font></A></DIV>   
      <DIV class=child id=<%="KB"+j+"Child"%>>   
<%   //从数据库得到二级菜单
Rst=Stmt.executeQuery("select sub_id,sub_name,sub_student_pass from teach_subject where sub_f_id='"+id[j]+"' order by sub_id");    
while(Rst.next())   
{   
                int sub_id=Rst.getInt("sub_id");
String sub_name=Rst.getString("sub_name");  
String sub_student_pass=Rst.getString("sub_student_pass");
%>   
     
  &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<IMG height=13    
      src="../images/teach_part.gif" width=19>
      <%
        if(sub_student_pass.equals("0"))
{%>
  <A href="sub_menu.jsp?sub_id=<%=sub_id%>">
  <%}
    else{%>
        <A href="sub_pass.jsp?sub_id=<%=sub_id%>" target=main>
<%}%>
  <font size="2"><font color="#000080"><%=sub_name%></font></a></font>   
<BR>     
  <%}%>   
  </DIV>        
    <%}%>  这是一个动态二级菜单的例子,不过比较乱,你凑合这看吧:)