一个javax.servlet.ServletException: java.lang.NullPointerException空指针问题  看异常应该是数据库的连接出问题啦
但是感觉配置文件和链接类都没问题呀我的配置文件:#DB_CLASS_NAME(驱动的类的类名)=com.microsoft.jdbc.sqlserver.SQLServerDriver
DB_CLASS_NAME=com.microsoft.jdbc.sqlserver.SQLServerDriver
#DB_URL(要连接数据库的地址)=jdbc(JDBC模式):microsoft(谁提供的):sqlserver(产品)://localhost:1433(SQL SERVER默认端口);DatabaseName=db_database
DB_URL=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_netExam
#DB_USER=用户名
DB_USER=sa
#DB_PWD(用户密码)=
DB_PWD=123这个是连接类:
package com.wgh.core; //将该类保存到com.wgh.core包中import java.io.InputStream; //导入java.io.InputStream类
import java.sql.*; //导入java.sql包中的所有类
import java.util.Properties; //导入java.util.Properties类public class ConnDB {
public Connection conn = null; // 声明Connection对象的实例
public Statement stmt = null; // 声明Statement对象的实例
public ResultSet rs = null; // 声明ResultSet对象的实例
private static String propFileName = "/com/connDB.properties"; // 指定资源文件保存的位置
private static Properties prop = new Properties(); // 创建并实例化Properties对象的实例
private static String dbClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";//定义保存数据库驱动的变量
private static String dbUrl = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_netExam";
private static String dbUser = "sa";
private static String dbPwd = "123";
public ConnDB() { //定义构造方法
try { //捕捉异常
//将Properties文件读取到InputStream对象中
InputStream in = getClass().getResourceAsStream(propFileName);
prop.load(in); // 通过输入流对象加载Properties文件
dbClassName = prop.getProperty("DB_CLASS_NAME"); // 获取数据库驱动
dbUrl = prop.getProperty("DB_URL", dbUrl); //获取URL
dbUser = prop.getProperty("DB_USER", dbUser); //获取登录用户
dbPwd = prop.getProperty("DB_PWD", dbPwd); //获取密码
} catch (Exception e) {
e.printStackTrace(); // 输出异常信息
}
} public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(dbClassName).newInstance();
conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);
} catch (Exception ee) {
ee.printStackTrace();
}
if (conn == null) {
System.err
.println("警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:"
+ dbClassName
+ "\r\n链接位置:"
+ dbUrl
+ "\r\n用户/密码"
+ dbUser + "/" + dbPwd);
}
return conn;
} /*
 * 功能:执行查询语句
 */
public ResultSet executeQuery(String sql) {
try { // 捕捉异常
conn = getConnection(); // 调用getConnection()方法构造Connection对象的一个实例conn
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
System.err.println(ex.getMessage()); // 输出异常信息
}
return rs; // 返回结果集对象
} /*
 * 功能:执行更新操作
 */
public int executeUpdate(String sql) {
int result = 0; // 定义保存返回值的变量
try { // 捕捉异常
conn = getConnection(); // 调用getConnection()方法构造Connection对象的一个实例conn
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
result = stmt.executeUpdate(sql); // 执行更新操作
} catch (SQLException ex) {
result = 0; // 将保存返回值的变量赋值为0
}
return result; // 返回保存返回值的变量
} /*
 * 功能:关闭数据库的连接
 */
public void close() {
try { // 捕捉异常
if (rs != null) { // 当ResultSet对象的实例rs不为空时
rs.close(); // 关闭ResultSet对象
}
if (stmt != null) { // 当Statement对象的实例stmt不为空时
stmt.close(); // 关闭Statement对象
}
if (conn != null) { // 当Connection对象的实例conn不为空时
conn.close(); // 关闭Connection对象
}
} catch (Exception e) {
e.printStackTrace(System.err); // 输出异常信息
}
}}感觉都没问题但始终异常 
javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.lang.NullPointerException
com.wgh.core.ConnDB.executeQuery(ConnDB.java:57)
com.wgh.dao.StuResultDAO.query(StuResultDAO.java:21)
com.wgh.action.StuResult.stuResultQueryS(StuResult.java:45)
com.wgh.action.StuResult.execute(StuResult.java:25)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)请高手们指点指点一下很急

解决方案 »

  1.   

    com.wgh.core.ConnDB.executeQuery(ConnDB.java:57) 
      

  2.   

    很常见的错误,一步一步检查 要细心  再有 就是用System.out.println 输出值 看是否获取到了  再就是用Eclipse DeBug检查点调试 看那部出错。
      

  3.   

    ConnDB 不用继承Properties?可能是这个
      

  4.   

    Class.forName(dbClassName).newInstance();
    conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); 
    是不是conn 没有实例化成功,调试下看看,可能是你读配置文件错误
      

  5.   

    楼主代码①处是不是多了个“/”? propFileName = "com/connDB.properties"; 
    ②处应该是getClass().getClassLoader().getResourceAsStream(propFileName);当然我的意思是在获取properties时出错,如果调试时能将以下变量值打印出来,就不是这里出错了。
    dbClassName = prop.getProperty("DB_CLASS_NAME"); // 获取数据库驱动 
    dbUrl = prop.getProperty("DB_URL", dbUrl); //获取URL 
    dbUser = prop.getProperty("DB_USER", dbUser); //获取登录用户 
    dbPwd = prop.getProperty("DB_PWD", dbPwd); //获取密码 
    System.out.println(dbClassName);//is null?
    System.out.println(dbUrl);
    System.out.println(dbUser);
    System.out.println(dbPwd);
      

  6.   

    1、Class.forName(dbClassName).newInstance(); //这里需要newInstance()吗?2、
    if (conn == null) { 
    System.err 
    .println("警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:" 
    + dbClassName 
    + "\r\n链接位置:" 
    + dbUrl 
    + "\r\n用户/密码" 
    + dbUser + "/" + dbPwd); 

    这里打印了吗?如果没输出,改成System.out,System.err是在出错是输出,而if后面它是正常的。3、SQL Server打补丁了吗?SQL Server 2000好像需要打SP2以上的补丁才可以正常连接
      

  7.   

    这个问题已经解决了 但是出现了这个异常  我明明把struts1.2的jar包都放lib目录下了 为什么还会报这个异常呢
    javax.servlet.ServletException: Servlet execution threw an exception
    root cause java.lang.Error: Unresolved compilation problems: 
    The import org.apache.struts cannot be resolved
    RequestProcessor cannot be resolved to a type com.wgh.action.SelfRequestProcessor.<init>(SelfRequestProcessor.java:3)
    sun.reflect.GeneratedConstructorAccessor23.newInstance(Unknown Source)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    java.lang.reflect.Constructor.newInstance(Unknown Source)
    java.lang.Class.newInstance0(Unknown Source)
    java.lang.Class.newInstance(Unknown Source)
    org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:145)
    org.apache.struts.action.ActionServlet.getRequestProcessor(ActionServlet.java:573)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1162)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      

  8.   

    谢谢各位的帮忙  问题已解决  是我的Tomact  没有将那些包给正常编译。。
      

  9.   

    exception org.apache.jasper.JasperException
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause java.lang.NullPointerException
    org.apache.jsp.startExam_jsp._jspService(startExam_jsp.java:93)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      

  10.   

    我做的是一个在线考试系统,其他功能页面测试都没问题,每当运行到startExam.jsp时浏览器窗口就关闭了,什么也不显示。单独调试此页面时,报出以上异常信息。
    在网上查了半天,很多遇到相同问题的,却没找到解决办法。看到楼上的说已经解决了,特来请教!我才刚开始学,希望讲得详细些,感激不尽!!!
      

  11.   

    控制台信息:
    java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:418)
    at java.util.Properties.load0(Properties.java:337)
    at java.util.Properties.load(Properties.java:325)
    at com.wgh.core.ConnDB.<init>(ConnDB.java:25)
    at com.wgh.dao.TaoTiDAO.<init>(TaoTiDAO.java:11)
    at org.apache.jsp.startExam_jsp._jspService(startExam_jsp.java:86)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:834)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
    at java.lang.Thread.run(Thread.java:619)
    2010-8-31 15:24:04 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet jsp threw exception
    java.lang.NullPointerException
    at org.apache.jsp.startExam_jsp._jspService(startExam_jsp.java:93)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:834)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
    at java.lang.Thread.run(Thread.java:619)