做的网页类似新闻网那样点标题跳转另个页面显示相关内容
连接的数据是ACCESS里的··
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 4643:    %>
44:   <tr>
45:     <td height="25">&nbsp;<%=rs.getInt("newsId") %></td>
46:     <td><a href="content.jsp?id=<%=rs.getInt("newsId") %>"><%=rs.getString("title")%></a></td>
47:   </tr>
48:   <%} %>
49: </table>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause javax.servlet.ServletException: java.sql.SQLException: No data found
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.index_jsp._jspService(index_jsp.java:134)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause 

解决方案 »

  1.   

    确定下<%=rs.getInt("newsId") %>是否取到数据了??
      

  2.   

    <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
    <%@page import="sun.jdbc.odbc.JdbcOdbcDriver"%>
    <%@page import="java.sql.Connection"%>
    <%@page import="java.sql.DriverManager"%>
    <%@page import="java.sql.Statement"%>
    <%@page import="java.sql.ResultSet"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <%
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection conn=DriverManager.getConnection("jdbc:odbc:xx","","");
    Statement st=conn.createStatement();
    ResultSet rs=st.executeQuery("select * from news");

     %>
    ···
    <body>
    <table width="54%" border="1" align="center">
      <tr>
        <td>编号</td>
        <td>标题</td>
      </tr>
      <%
       while(rs.next()){
       %>
      <tr>
        <td height="25">&nbsp;<%=rs.getInt("newsId") %></td>
        <td><a href="content.jsp?id=<%=rs.getInt("newsId") %>"><%=rs.getString("title")%></a></td>
      </tr>
      <%} %>
    </table>
    </body>
    </html>
    <%
    conn.close();
    %>
      

  3.   

    不是 String newsId=request.getParameter("id");吗
      

  4.   

    是通过request.getParameter("id");来获取id的值啊
      

  5.   

    javax.servlet.ServletException: java.sql.SQLException: No data found 
      

  6.   

    错误提示:
    在rs获得数据后,对每一个表中的字段只能取一次。
    比如说你news表中有newsId和title俩个字段,那么rs.getInt("newsId")和rs.getString("title")各只能读一次,而且顺序都不能错。每读一次,rs就指向下一个字段,而你的程序读取newsId读了两次,所以出错。
    建议:
    1.你可以用临时变量获取newsId和title的值,然后再传;
    2.将rs声明为可滚动读取字段,ResultSet.TYPE_SCROLL_SENSITIVE。
    试试。
      

  7.   

    <tr>
        <td height="25">&nbsp; <%=rs.getInt("newsId") %> </td>
        <td> <a href="content.jsp?id= <%=rs.getInt("newsId") %>"> <%=rs.getString("title")%> </a> </td>
      </tr> 
    6楼说的对,你连续2次请求了rs.getInt("newsId"),到最后就请求不到数据了。。
      

  8.   

    感觉你这个页面程序设计的不是很好! 应该用面向对象的方法操作数据库!建议把连接数据等有关的操作放到一个DB.java类里面;再建一个与News表相对应的PoJo类,以便对数据进行持久化操作;
    然后再用一个业务逻辑类处理数据添加、删除、查询等操作,并用request.setAttribute()这个方法,把得到rs集合存储并传递到下一个页面,这样在这个显示页面用request.getAttribute()就可以得到集合,并重复取所有字段值了。(包括newsId)。News rs =new  News()
    rs = request.getAttribute();//参数自己加哦<body> 
    <table width="54%" border="1" align="center"> 
      <tr> 
        <td>编号 </td> 
        <td>标题 </td> 
      </tr>   <tr> 
        <td height="25">&nbsp; <%=rs.getInt("newsId") %> </td> 
        <td> <a href="content.jsp?id= <%=rs.getInt("newsId") %>"> <%=rs.getString("title")%> </a>   </td> 
      </tr> 
      <%} %> 
    </table> 
    </body> 需要说明的是:现在的数据库都是面向关系的,而java是面向对象的,这样在操作数据库时就很麻烦,还好现在有了hibernate等一些关系对象模型,建议多了解学习,说不定下一个30年后,主流数据库就都是面向对象的了!个人见解啦
      

  9.   

    你的jsp页面有错误啊!
    <body> 
    <table width="54%" border="1" align="center"> 
      <tr> 
        <td>编号 </td> 
        <td>标题 </td> 
      </tr>   <tr> 
        <td height="25">&nbsp; <%=rs.getInt("newsId") %> </td> 
        <td> <a href="content.jsp?id= <%=rs.getInt("newsId") %>"> <%=rs.getString("title")%> </a>  </td> 
      </tr> 
      <%} %> 
    </table> 
    </body> 
    <%=rs.getInt("newsId") %>"> 
    <%=rs.getString("title")%>
    这里都不能有等号,
    有等号则表示作为
    out = response.getWriter()
    out.println(参数);
    输出
      

  10.   

    两个参数之间要用“&”符号链接。
      

  11.   

    <td height="25">&nbsp; <%=rs.getInt("newsId") %> </td> 
        <td> <a href="content.jsp?id= <%=rs.getInt("newsId") %>"> 
    你连续2次rs.getInt("newsId"),有些Jdbc driver不允许这样