java.lang.NullPointerException

luomingchu 2009-11-12 01:31:45
請問我訪問jsp出現如下錯誤,Article article = new Article(); 是調用 article.java . 用的是 tomcat 服務器,在D:\Tomcat 5.5\work\Catalina\localhost\jspRoot\org\apache\jsp\robote 能正常生成 class 文件。 請問如何解決?



HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

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

exception

org.apache.jasper.JasperException: Exception in JSP: /robote/a.jsp:41

38: }else{
39: try{
40: Article article = new Article();
41: article.getAllArticle();
42: idList = article.getIdList();
43: titleList = article.getTitleList();
44: editorList = article.getEditorList();


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
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
cn.robote.logic.Article.getAllArticle(Article.java:104)
org.apache.jsp.robote.a_jsp._jspService(a_jsp.java:89)
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)


article.java

package cn.robote.logic;

import cn.robote.bean.ConnectMySQL;
import java.sql.*;
import java.util.ArrayList;
//import cn.robote.bean.Log; //add by 1.1.0 @2009-11-06


public class Article{

// declare variable
private String id ="";
private String title = "";
private String editor = "";
private String content = "";
private ArrayList idList = new ArrayList();
private ArrayList titleList = new ArrayList();
private ArrayList editorList = new ArrayList();
private ArrayList contentList = new ArrayList();

public void setId(String id){
this.id = id;
}
public void setTitle(String title){
this.title = title;
}
public void setEditor(String editor){
this.editor = editor;
}
public void setContent(String content){
this.content = content;
}


public String getId() {
return id;
}
public String getTitle() {
return title;
}
public String getEditor() {
return editor;
}
public String getContent() {
return content;
}
public ArrayList getIdList() {
return idList;
}
public ArrayList getTitleList() {
return titleList;
}
public ArrayList getEditorList() {
return editorList;
}
public ArrayList getContentList() {
return contentList;
}

public Article(){

}

/*
get all article
*/
public void getAllArticle() throws Exception{ //get article information
// Log log = null; // add @1.0.1
ResultSet rs = null;
Connection conn = null;
Statement stmt = null;

try{
conn = ConnectMySQL.getConnection();
String sql = "SELECT id, title,editor,content FROM article ";
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY );
rs = stmt.executeQuery(sql);


while(rs.next()){
id = rs.getString("id");
title = rs.getString("title");
editor = rs.getString("editor");
content = rs.getString("content");
// log.writeLog(1, "log:title"+title);
if(!title.equals("")){
this.idList.add(id);//get the required lot info
this.titleList.add(title);
this.editorList.add(editor);
this.contentList.add(content);
}
}
if(this.titleList.size()==0){ // no data
this.idList.add("");
this.titleList.add("");
this.editorList.add("");
this.contentList.add("");
}

}catch(Exception e){
throw e;
}finally{
conn.close();
stmt.close();
}
}
...全文
151 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tuoxie119 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhoushijin5201314 的回复:]
article 是null就用了 肯定就空指针了,要调用对象的属性先判断对象是不是为null,要对这个属性进行操作先判断这个属性是不是null,新手经常性错误啊!!!
[/Quote]很有可能
qustgjk 2009-11-13
  • 打赏
  • 举报
回复
我把你的代码拷到myEclipse中,Article的104行是stmt.close(); 你先确定数据库连接正常,会不会是stst没有获取到然后抛出异常,最后finally中关闭的时候因为stmt是空所以出现空指针。 如果数据库连接正常你再调整关闭顺序,记得判断是不是空
qustgjk 2009-11-13
  • 打赏
  • 举报
回复
再补充一下,一般关闭ResultSet, Statement,Connection的时候最好判断一下是不是空,如
if(rs != null){
rs.close();
}
qustgjk 2009-11-13
  • 打赏
  • 举报
回复
我感觉是最后finally中的错误,ResultSet, Statement,Connection的关闭顺序应该是应该是先ResultSet,然后 Statement,最后Connection
zhoushijin5201314 2009-11-13
  • 打赏
  • 举报
回复
article 是null就用了 肯定就空指针了,要调用对象的属性先判断对象是不是为null,要对这个属性进行操作先判断这个属性是不是null,新手经常性错误啊!!!
sangshusen_1988 2009-11-12
  • 打赏
  • 举报
回复
反编译的行数肯定不准啦,你看你源代码中的就对了。
默默_XL 2009-11-12
  • 打赏
  • 举报
回复
article 是null就用了 肯定就空指针了...
luomingchu 2009-11-12
  • 打赏
  • 举报
回复
誰有經驗啊?
luomingchu 2009-11-12
  • 打赏
  • 举报
回复
拋錯104行是最下面一個 } 的位置。
以下是 class 反編譯后的程序。用sql 去找數據,可以找到數據啊。值不為空。

public void getAllArticle() throws Exception {
/* 67*/ ResultSet rs = null;
/* 68*/ Connection conn = null;
/* 69*/ Statement stmt = null;
/* 72*/ try {
/* 72*/ conn = ConnectMySQL.getConnection();
/* 73*/ String sql = "SELECT id, title,editor,content FROM article ";
/* 74*/ stmt = conn.createStatement(1005, 1007);
/* 75*/ for (rs = stmt.executeQuery(sql); rs.next();) {
/* 79*/ id = rs.getString("id");
/* 80*/ title = rs.getString("title");
/* 81*/ editor = rs.getString("editor");
/* 82*/ content = rs.getString("content");
/* 84*/ if (!title.equals("")) {
/* 85*/ idList.add(id);
/* 86*/ titleList.add(title);
/* 87*/ editorList.add(editor);
/* 88*/ contentList.add(content);
}
}
luomingchu 2009-11-12
  • 打赏
  • 举报
回复
程序昨天還好好的,今天就不行了,估計是配置出了問題
closewbq 2009-11-12
  • 打赏
  • 举报
回复
(Article.java:104)
ouyangxiaokang6 2009-11-12
  • 打赏
  • 举报
回复
article是null吧。所以就抛出空指针了,你没有给article放值吧
阁楼上的伟哥 2009-11-12
  • 打赏
  • 举报
回复
自己调试的时候跟踪一下 设置下断点 看看那里抛出的异常。
检查各个属性 是否合法赋值

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧