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 /WebContent/register_new_user.jsp at line 5249:     finally
50:     {
51:         //关闭数据库链接
52:         stmt.close();
53:         conn.close();
54:     }
55:     //设置session属性
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:426)
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 java.lang.NullPointerException
org.apache.jsp.WebContent.register_005fnew_005fuser_jsp._jspService(register_005fnew_005fuser_jsp.java:105)
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:384)
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)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.10 logs.
--------------------------------------------------------------------------------Apache Tomcat/6.0.10

解决方案 »

  1.   


    java.lang.NullPointerException 
    可能是你的 stmt还没有用,也就是没有初始化,你就给关闭了
      

  2.   

    空指针。看看你的stmt在执行stmt.close之前是否为空
      

  3.   

    建议你在finally里面也try catch。其次,请用if判断一下两者是否为空。或者干脆注释掉一句,看还报错不。报错的话就是没注释的有问题,没报错就是注释的有问题。
      

  4.   

    <%@page contentType="text/html;charset=gbk" %>
    <%@page language="java" import="java.sql.*" %>
    <%
        //获得用户提交表单
        String sUsername, sPassword;
        sUsername=request.getParameter("username");
        sUsername=sUsername.replaceAll("'","''");
        sPassword=request.getParameter("password");
        sPassword=sPassword.replaceAll("'","''");
        
        //检索该用户输入信息是否正确
        String query = "select * from player_info where username='"
                     + sUsername + "' and password = '" + sPassword + "'";    Connection conn=null;
        Statement stmt=null;
        ResultSet rs =null;
        try
        {
            //获取数据库链接
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = DriverManager.getConnection("jdbc:mysql://localhost/ch02?user=jspdb&password=jspdb");  
            //创建statement
            stmt = conn.createStatement();
            //执行查询
            rs = stmt.executeQuery(query);
            
            if( rs.next() )
            {
                //往session中设置相关属性
                session.setAttribute("username", rs.getString("username"));
                session.setAttribute("realname", rs.getString("realname"));
                //重定向到入口页面
                response.sendRedirect("entry.jsp");
            }
            else
            {
                //如果用户名密码错误
                response.sendRedirect("welcom.htm");
            }
       
        }catch(SQLException ex) 
        {
            ex.printStackTrace();
            response.sendRedirect("welcom.htm");
            return;
        }
        finally
        {
            //关闭数据库链接
            stmt.close();
            conn.close();
        }
     %>
      

  5.   

           stmt为空
      

  6.   

    建议在finally里面改写成
    finally
    {
        if (stmt != null)
            stmt.close();
        if (conn != null)
            conn.close();
    }另外你也可以打印一下看看到底stmt是不是为空
      

  7.   

    最好从开始连接的时候开始检查
    看下CONN 是不是空,依次下来 stmt是不是空
    先不要RS的操作看下
      

  8.   

    问题就出在stmt和conn这两个对象上,先判定他们是否为null,在调用close()方法
    如: if (stmt != null)
            {
      stmt.close();
      stmt = null;
    }
    if (con != null)
    {
      conn.close();
      conn = null;
    }
    这种问题很常见的,
      

  9.   

    看你的代码不像会报错的样子 呵呵
    debug一下吧
        finally 
        { 
            //关闭数据库链接 
            if(stmt!=null)
              stmt.close(); 
           if(conn!=null)
             conn.close(); 
        } 
      

  10.   

    我觉得你应该看看编译后的jsp  52 行 是啥玩意
      

  11.   


    ...
    finally {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                //Log
            } finally {
                stmt = null;
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                //Log
            } finally {
                conn = null;
            }
        }
    }
    ...
      

  12.   

    stmt  为空 检查下原因 就OK了
      

  13.   

    stmt = conn.createStatement(); 
            //执行查询 
    rs = stmt.executeQuery(query);
     
    改一下,试试
    stmt = conn.createStatement(query); 
            //执行查询 
    rs = stmt.executeQuery(); 
      

  14.   

    不报上面的错了。
    又报错如下:
    org.apache.jasper.JasperException: An exception occurred processing JSP page /WebContent/register_new_user.jsp at line 6360:     session.setAttribute("realname", sRealname);   
    61:     
    62:     //注册成功即意味着登录成功,迁移到游戏选择画面
    63:     response.sendRedirect("entry.jsp");  
    64: %>
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:420)
    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 java.lang.IllegalStateException
    org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
    org.apache.jsp.WebContent.register_005fnew_005fuser_jsp._jspService(register_005fnew_005fuser_jsp.java:116)
    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:384)
    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)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.10 logs.