其实我要实现的功能很简单,就是像这个网站     http://www.nasa168.com     左边的商品分类菜 单,程序分别检索大类与小类的表,并显示出来。可是程我的序只显示了大类的信息,小类的确 显示不出来,请高手帮看看是怎么回事,是我的逻辑错误,还是其他原因,谢谢先!!! 源码如下: 
<meta   http-equiv= "Content-Type "   content= "text/html;   charset=gb2312 "> 
<%@   page   contentType= "text/html;   charset=gb2312 "   language= "java "   import= "java.sql.* "   errorPage= " "   %> 
<%@   page   import= "java.util.* "   %> 
<%@   page   import= "java.sql.* "   %> 
<% 
Class.forName(   "com.microsoft.jdbc.sqlserver.SQLServerDriver ").newInstance(); String     url= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=eshopDB ";         String     user= "sa ";         
String     password= "dba ";     
Connection     conn=DriverManager.getConnection(url,user,password);   
Statement   stmt   =conn.createStatement(); String   sql= "select   *     from   ProductClass "; ResultSet   rs   =   stmt.executeQuery(sql); 
String   classID   =   null   ;   
%> 
<table> 
<!----------一级分类------------> 
      <%   while(rs.next())     {     
              classID=   rs.getString( "ClassID "); 
%> 
        <tr> 
                <td   width= "120 "   colspan= "2 ">   
                          <a   href= "hello.jsp?ID= <%=rs.getString( "ClassID ")%> "> <%=rs.getString( "ClassName ")%> </a>   
<%}%> 
</td> 
        </tr> <!----------二级分类------------> 
<% 
String   m_sql= "Select   CategoryID,CategoryName,ClassID   from   ProductCategory   where   ClassID= ' "+classID+ " ' "; 
ResultSet   m_rs   =   stmt.executeQuery(m_sql); 
%> 
  <%   while(m_rs.next())     {     %> 
        <tr> 
                <td   width= "70 ">   
                          <a   href= "hello.jsp?ID= <%=m_rs.getString( "CategoryID ")%> "> <%=rs.getString( "CategoryName ")%> </a>   
  <%if(m_rs.next()){%> 
                </td> 
<td   width= "70 "> <a   href= "hello.jsp?ID= <%=m_rs.getString( "CategoryID ")%> "> <%=m_rs.getString( "CategoryName ")%> </a>   
<%}%> 
</td> 
        </tr> 
      <%}%> 
      <!-----------------------------------------------------------------> 
</table> 

解决方案 »

  1.   

    既然.NET那么简单就可以实现,LZ何必用java?!这不是自找苦吃?!
      

  2.   

    似乎用惯了.Net的人应该用JSF而不是JSP。
    LZ的代码是比较原始的了,看起来很费力。好像用了二重循环的。看得头晕,属于典型的JSP页面代码混杂反模式实例。
    确定可能有点问题的是上述代码while中用next方法步进了记录指针,然后循环体中if又用next步进了记录指针,应该会造成跳行。
      

  3.   

    赫赫,很简单的逻辑错误,赫赫。在于classID= rs.getString( "ClassID ");  的利用上面,因为你的第一级菜单,你用了<% while(rs.next()) {   的处理,但是这个处理里面,你没有对相关的两级菜单处理。等到你的第一个WHILE结束了,classID就是最后一个一级菜单的classID,
    所以,你的二级菜单,只能显示最后一个一级菜单对应的二级菜单。不是语言的错误,是你在使用上的错误。