严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at dao2.impl.Dao2impl.select(Dao2impl.java:13)
at org.apache.jsp.dobookUser_jsp._jspService(dobookUser_jsp.java:84)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1778)
at java.lang.Thread.run(Thread.java:619)

解决方案 »

  1.   

    package dao2.impl;import java.sql.SQLException;public class Dao2impl extends BaseDao { public int select(String name, String pwd) {
    int count = 0;
    String sql = "select count(*) as c from bookUser where name='" + name
    + "' and password='" + pwd + "'";
    //System.out.println(sql);
    try {
    pstmt = con.prepareStatement(sql);
    rs = pstmt.executeQuery();
    while(rs.next()) {
    count=rs.getInt(1);

    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return count;
    }}
      

  2.   

    package dao2.impl;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;public class BaseDao {
    private String className = "oracle.jdbc.driver.OracleDriver";
     private String url="jdbc:oracle:thin:@localhost:1521:orcl";
     private String user="scott";
     private String password="123";
    protected Connection con = null;
    protected PreparedStatement pstmt = null;
    protected ResultSet rs = null; // 打开数据库链接
    public void open() {
     try {
     Class.forName(className);
     con=DriverManager.getConnection(url,user,password);
     } catch (ClassNotFoundException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     } }
    }
      

  3.   

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@page import="dao2.impl.Dao2impl"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>My JSP 'bookUser.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    --> </head> <body> <form action="dobookUser.jsp" method="post">

    用户名<input type="text" name="user1"/><br/>
    密码<input type="text" name="pwd1"/><br/>
    <input type="submit" value="登陆"/>
    </form>
    </body>
    </html>
      

  4.   

    at dao2.impl.Dao2impl.select(Dao2impl.java:13) 
    Dao2impl.java 的第13行附近有空指针,debug一下。
      

  5.   

    是不是conn没创建就使用了?(顺便安利下我的公众号:Java北京,微信添加java_bj)
      

  6.   

    pstmt = con.prepareStatement(sql); con 为空,没有调过void open()  方法吧
      

  7.   

    用debug好好调试一下,前台输入用户名,密码后跳转到后台再一步一步走,很明显是空指针异常了。
    pstmt = con.prepareStatement(sql);
    这个代码之前应该调用一下open()方法获得con的值,或者open方法返回con,然后在Dao2impl 类里面调用open方法获取con实例再执行pstmt = con.prepareStatement(sql);
      

  8.   

    很明显没有调用conn的创建方法