jdk1.6.0_10 + tomcat5.5.30 + MySQL Server 5.1
tomcat已配置成功
错误描述:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:498)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
root cause java.lang.NullPointerException
org.apache.jsp.simpleDBAccess_jsp._jspService(simpleDBAccess_jsp.java:102)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.30 logs.
--------------------------------------------------------------------------------Apache Tomcat/5.5.30源程序:<%@page contentType="text/html;charset=gb2312" %>
<%@page language="java" import="java.sql.*" %>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try
{
    //载入MySQL的JDBC驱动类
    Class.forName("com.mysql.jdbc.Driver");
    //获得数据库连接
    String sConn = "jdbc:mysql://localhost/ch01?user=root&password=****";
    conn = DriverManager.getConnection( sConn );  
    //创建Statement对象
    stmt = conn.createStatement();
    //执行SQL语句
    String query = "select * from user_info";
    rs = stmt.executeQuery( query );
%>
<html>
<head>
  <title>JSP使用JDBC连接MySQL</title>
</head>
<body>
  <table border=1 cellspacing=0 cellpadding=0>
    <tr bgcolor=gray>
      <td>FirstName</td>
      <td>LastName</td>
      <td>NickName</td>
    </tr>
<%
    //循环操作返回的数据集
    while( !rs.isLast() )
    {
       rs.next();
%>
    <tr>
      <td><%=rs.getString("first_name")%></td>
      <td><%=rs.getString("last_name")%></td>
      <td><%=rs.getString("nick_name")%></td>
    </tr>
<%
    }
}
catch(Exception e)
{
    System.out.println("error occured!!");
}
finally
{
    //释放数据库连接
    rs.close();
    stmt.close();
    conn.close();
}
%>
  </table>
</body>
</html>-------------------------------------------
请大家多多指教,谢谢

解决方案 »

  1.   


        while(rs.next())//while( !rs.isLast() )换成前面的
      

  2.   

    这个贴发过了吧? 都说了是空指针 你全写在页面 怎么调试
    JDBC起码 写到.JAVA里吧
      

  3.   

    java.lang.NullPointerException
    org.apache.jsp.simpleDBAccess_jsp._jspService(simpleDBAccess_jsp.java:102)这个异常信息很清楚了呀,
    把simpleDBAccess_jsp.java这个文件找出来,看看102行。另外,建议写JDBC连接的时候,严格按照下面这种结构来写,别觉得麻烦,相反会避免很多麻烦,你的问题有可能是因为这个原因造成的:Connection conn = DriverManager.getConnection( sConn );
    try {
        Statement stmt = conn.createStatement();
        try {
            ResultSet rs = stmt.executeQuery( query );
            try {
                //TODO
            }finally {
                rs.close();
            }
        }finally {
            stmt.close();
        }
    }finally {
        conn.close();
    }
      

  4.   

     <td><%=rs.getString("first_name")%></td>
      <td><%=rs.getString("last_name")%></td>
      <td><%=rs.getString("nick_name")%></td>這樣寫的話 顺序不能错了 
      

  5.   

    <%
      //循环操作返回的数据集
      while( !rs.isLast() )
      {
      rs.next();
    %>
     
    改成<%
      while(rs.next())
    {
    %>
    这个
      

  6.   

    现在都不推荐将SQL写在页面上了,而且现在一般都用Tomcat 6了,你得升级一下了。一个好的页面上是不能出现JAVA代码的
      

  7.   

    while( !rs.isLast() )
      {
      rs.next();
    %>
      <tr>
      <td><%=rs.getString("first_name")%></td>
      <td><%=rs.getString("last_name")%></td>
      <td><%=rs.getString("nick_name")%></td>
      </tr>
    <%
      }
    应该写成
    while( !rs.isLast() )
      {
      %>
      <tr>
      <td><%=rs.getString("first_name")%></td>
      <td><%=rs.getString("last_name")%></td>
      <td><%=rs.getString("nick_name")%></td>
      </tr>
    <%  rs.next();  }
      

  8.   

    simpleDBAccess_jsp.java这个文件找出来,看看102行。
      

  9.   

    看不出来
    是不是这句,密码写成*,数据没法连接啊
      String sConn = "jdbc:mysql://localhost/ch01?user=root&password=****";
      

  10.   

    102行是:finally模块中的rs.close();
      

  11.   

    在写连接的时候要写上端口号吧:3306 我的数据库是 test 密码是空 这样连接,输出正常
      String sConn = "jdbc:mysql://localhost:3306/test?user=root&password=";
      

  12.   

    我测试了你的程序,但从输出结果看,是没问题的
    1 开启mysql服务。
    2 引入jdbc 需要的驱动包
    做好前端的一些工作。
      

  13.   

    代码写jsp里  = =,, 汗
      

  14.   

    回复楼主的,我只在需要端口号的地方加了一下,数据库我的mysql是解压版的,没有设置密码,数据表用我自己的,是可以正确运行的。
      

  15.   

    java.lang.NullPointerException
    空指针异常啊
      

  16.   

     String sConn = "jdbc:mysql://localhost/ch01?user=root&password=****";???