源码如下<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);
%>
<table>
   <% while(rs.next())  {  %>
    <tr>
        <td width="70" 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='"+<%=rs.getString("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>错误信息如下:type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 28 in the jsp file: /menu_3.jsp
Generated servlet error:
C:\Tomcat 5.0\work\Catalina\localhost\infosite\org\apache\jsp\menu_005f3_jsp.java:84: illegal start of expression
String m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+<%=rs.getString("ClassID")
                                                                                                   ^
An error occurred at line: 32 in the jsp file: /menu_3.jsp
Generated servlet error:
C:\Tomcat 5.0\work\Catalina\localhost\infosite\org\apache\jsp\menu_005f3_jsp.java:89: cannot resolve symbol
symbol  : variable m_rs 
location: class org.apache.jsp.menu_005f3_jsp
 while(m_rs.next())  {  
       ^
An error occurred at line: 35 in the jsp file: /menu_3.jsp
Generated servlet error:
C:\Tomcat 5.0\work\Catalina\localhost\infosite\org\apache\jsp\menu_005f3_jsp.java:94: cannot resolve symbol
symbol  : variable m_rs 
location: class org.apache.jsp.menu_005f3_jsp
      out.print(m_rs.getString("CategoryID"));
                ^
An error occurred at line: 36 in the jsp file: /menu_3.jsp
Generated servlet error:
C:\Tomcat 5.0\work\Catalina\localhost\infosite\org\apache\jsp\menu_005f3_jsp.java:100: cannot resolve symbol
symbol  : variable m_rs 
location: class org.apache.jsp.menu_005f3_jsp
if(m_rs.next()){
   ^
An error occurred at line: 38 in the jsp file: /menu_3.jsp
Generated servlet error:
C:\Tomcat 5.0\work\Catalina\localhost\infosite\org\apache\jsp\menu_005f3_jsp.java:104: cannot resolve symbol
symbol  : variable m_rs 
location: class org.apache.jsp.menu_005f3_jsp
      out.print(m_rs.getString("CategoryID"));
                ^
An error occurred at line: 38 in the jsp file: /menu_3.jsp
Generated servlet error:
C:\Tomcat 5.0\work\Catalina\localhost\infosite\org\apache\jsp\menu_005f3_jsp.java:107: cannot resolve symbol
symbol  : variable m_rs 
location: class org.apache.jsp.menu_005f3_jsp
      out.print(m_rs.getString("CategoryName"));
                ^
6 errors org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

解决方案 »

  1.   

    <%
    String m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+<%=rs.getString("ClassID")%>+"'";
    ResultSet m_rs = stmt.executeQuery(m_sql);
    %>
    应该为
    <%
    String m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+rs.getString("ClassID")+"'";
    ResultSet m_rs = stmt.executeQuery(m_sql);
    %>
      

  2.   

    改了出现这种错误 
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: [Microsoft][SQLServer JDBC Driver]Invalid operation for the current cursor position.
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.menu_005f3_jsp._jspService(menu_005f3_jsp.java:122)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.sql.SQLException: [Microsoft][SQLServer JDBC Driver]Invalid operation for the current cursor position.
    com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    com.microsoft.jdbc.base.BaseResultSet.validateCursorPosition(Unknown Source)
    com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
    com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
    org.apache.jsp.menu_005f3_jsp._jspService(menu_005f3_jsp.java:83)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
      

  3.   

    <%
    String m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+“----this <%”=rs.getString("ClassID")“%>-----this”+"'";
    ResultSet m_rs = stmt.executeQuery(m_sql);
    %>
    <%%>里面需要再嵌套<%%>吗?
      

  4.   

    <%if(m_rs.next()){%> 这一句应该不需要了
    因为你前面已经判断了 <% while(m_rs.next())  {  %>
      

  5.   

    Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();改为:Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver");
    应该可以了
      

  6.   


    以改成现在这样:
    <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);%>
    <table>
       <% while(rs.next())  {  %>
        <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='"+rs.getString("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>
    错误信息如下:
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: [Microsoft][SQLServer JDBC Driver]Invalid operation for the current cursor position.
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.menu_005f3_jsp._jspService(menu_005f3_jsp.java:123)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.sql.SQLException: [Microsoft][SQLServer JDBC Driver]Invalid operation for the current cursor position.
    com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    com.microsoft.jdbc.base.BaseResultSet.validateCursorPosition(Unknown Source)
    com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
    com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
    org.apache.jsp.menu_005f3_jsp._jspService(menu_005f3_jsp.java:84)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      

  7.   

    String m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+rs.getString("ClassID")+"'";你的第一个rs已经到来最后为什么这里rs.getString("ClassID") 还有这个操作呢
      

  8.   

    这样改吧<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 id = null ; 
    %>
    <table>
       <% while(rs.next())  {  
           <%id = 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='"+rs.getString("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>//
      

  9.   

    String m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+id+ "'";
    不好意思sql改成这样
      

  10.   

    <% 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>
       <%}%>
    这一段好像有问题,你屏蔽掉看看会不会报错先,你要学会调试代码呀
      

  11.   

    你的sqlserver都没有连接都有问题,最好先单独测试一下.
      

  12.   


    万能的楼主啊怎么不好好检查下代码<%
    String m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+<%=rs.getString("ClassID")%>+"'";
    ResultSet m_rs = stmt.executeQuery(m_sql);
    %>连续使用两个JSP表达式<%<%,<%
    String m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+rs.getString("ClassID")+"'";
    ResultSet m_rs = stmt.executeQuery(m_sql);
    %>建议用JSP编辑器吧,代码错误比较容易看出来
      

  13.   

    楼上!建议用rs.getString(index)用字段序列号,不用rs.getString("字段名")
      

  14.   

    脚本符合:<%和%>使用有误
    看的我头昏,最好的办法还是你自己在编辑器里调试
      

  15.   

    给个建议,你最好是把数据库访问封装都javaBean里面。这样就不会显得那么混乱,也更容易定位错误。
      

  16.   

    <%
    String m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+<%=rs.getString("ClassID")%>+"'";
    ResultSet m_rs = stmt.executeQuery(m_sql);
    %>
    改成:
    <%
    String strClassID=rs.getString("ClassID");
    String m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+strClassID+"'";
    ResultSet m_rs = stmt.executeQuery(m_sql);
    %>
    祝你好运!
      

  17.   

    !!!!   <% while(rs.next())  {  %>
        <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='"+rs.getString("ClassID")+"'";
    ResultSet m_rs = stmt.executeQuery(m_sql);
    %>
    在这一句,上面一个while(rs.next())已经把rs指到最后一条EOF的字录.你在下面再用rs.getString("ClassID")就会有问题了.不然你先用rs.first()等试下