tomcat连接jsp文件出错。我找了很久,不知道错误在哪。

这是什么问题呢?大家帮忙解决一下。[code="java"]type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
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:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.NullPointerException
com.tools.ConnDB.executeQuery(ConnDB.java:55)
com.dao.ScripDao.query(ScripDao.java:25)
com.action.ScripAction.scripQuery(ScripAction.java:43)
com.action.ScripAction.execute(ScripAction.java:26)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
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:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.

[/code]

试试,看哪一行为空?
[code="java"] public ResultSet executeQuery(String sql) {
try { // 捕捉异常
conn = getConnection();
System.out.println("conn:"+conn);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
System.out.println("stmt:"+stmt);
rs = stmt.executeQuery(sql);
System.out.println("rs:"+rs);
} catch (SQLException ex) {
System.err.println(ex.getMessage()); // 输出异常信息
}
return rs; // 返回结果集对象
}
[/code]

com.tools.ConnDB.executeQuery(ConnDB.java:55)

把这个方法代码贴出来,

在这个办法当中com.tools.ConnDB.executeQuery有问题,查询ConnDB类55行是写什么,最好是把executeQuery贴出来。

[code="java"]com.tools.ConnDB.executeQuery(ConnDB.java:55) [/code]
[color=blue][b]
这一句代码,报空指针了。检查该句代码,或者Debug跟踪到此,看看哪一个变量是空的[/b][/color]

应该是这里getConnection is null

[quote]调试不了 [/quote]

为什么??什么状况?

你先能正常获取getConnection。你这段代码差不多跟我写的一样啊。[code="java"]
/**
* 查询一(普通-查询)
*/
public ResultSet executeQuery(String sql) throws Exception{
sql = sql.toLowerCase();
ResultSet rs = null;
PreparedStatement prstmt = null;
Connection conn = null;
try{
conn = getConnection();
if(conn!=null){
prstmt = conn.prepareStatement(sql);
rs = prstmt.executeQuery();

conn.close();
}
}catch(Exception e){
e.printStackTrace();
if(conn!=null){
conn.close();
}
}
return rs;
}
[/code]
我的写法

[quote]1.java.lang.NullPointerException

2. com.dao.ScripDao.query(ScripDao.java:27) [/quote]
贴出代码

根据api的说明文档,可以看到
executeQuery返回值的说明,说明返回值永远不会为null
[quote]Returns:
a ResultSet object that contains the data produced by the given query; never null [/quote]

ResultSet 中next方法返回的类型为Boolean。永远不会为null
[quote]Returns:
true if the new current row is valid; false if there are no more rows [/quote]
再仔细检查错误所在。

你修改一下这段代码
[code="java"]
public ResultSet executeQuery(String sql) {

try { // 捕捉异常

conn = getConnection();

System.out.println("conn:"+conn);

stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);

System.out.println("stmt:"+stmt);

rs = stmt.executeQuery(sql);

System.out.println("rs:"+rs);

} catch (SQLException ex) {

System.err.println(ex.getMessage()); // 输出异常信息

}

return rs; // 返回结果集对象

}

[/code]
测试一下你这段代码
if(rs!=null&&rs.next()){
System.out.println("come on~~");
}

是的,应该是这里出现错误。你测试一下。再告诉我

[code="java"]while(rs.next()) {[/code]
这段代码不可能抛出空指针异常。