私は、クエリのユーザーとパスワードの単純なJava porjectを実行している間、私はこのエラーメッセージスロー取得:ここerro:java porjectのNullPointerExceptionは、どのように修正するのですか?
type Exception report
message: java.lang.NullPointerException
description The server encountered an internal error that prevented it from fulfilling this request.
java.lang.NullPointerException
DB.DataBaseConnection.close(DataBaseConnection.java:34)
DB.UserDAOImpl.queryAll(UserDAOImpl.java:84)
org.apache.jsp.QueryAll_jsp._jspService(QueryAll_jsp.java:100)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
はQueryAll.jsp
です:ここでは
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="DB.*" %>
<%@ page import="java.util.*" %>
<title>QueryAll</title>
<% request.setCharacterEncoding("utf-8"); %>
<body>
<%
UserDAO userDAo=DAOFcatory.getUserDAOInstance();
//set new user
List<User> all=userDAo.queryAll();
Iterator<User> iter=all.iterator();
%>
<table border="1" bgcolor="#c0c0c0" align="center">
<tr>
<td>Id</td>
<td>Username</td>
<td>Password</td>
</tr>
<%
while(iter.hasNext()){
User user1=iter.next();
%>
<tr>
<td><%=user1.getUserid() %></td>
<td><%=user1.getUsername()%></td>
<td><%=user1.getPassword() %></td>
</tr>
<%
}
%>
</table>
はDataBaseConnection.java
次のとおりです。
package DB;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DataBaseConnection {
private final String driver = "com.mysql.jdbc.Driver";
private final String url = "jdbc:mysql:localhost:3306/javaweb";
private final String user = "root";
private final String pwd = "root";
private Connection conn;
public DataBaseConnection() {
try {
Class.forName(driver);
this.conn = DriverManager.getConnection(url,user,pwd);
}
catch (ClassNotFoundException e){
e.printStackTrace();
}
catch (SQLException e) {
e.printStackTrace();
}
}
public Connection getConnection() {
return this.conn;
}
public void close(){
try {
this.conn.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
User.java
:
はUserDAO.java
次のとおりです。ここで
package DB;
import java.util.*;
public interface UserDAO {
//query by all
public List<User> queryAll() throws Exception;
はUserDAOImpl.java
次のとおりです。ここで
package DB;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import DB.User;
import DB.DataBaseConnection;
public class UserDAOImpl implements UserDAO{
public List<User> queryAll() throws Exception {
List<User> all = new ArrayList<User>();
String sql = "select * from user";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null;
try {
dbc = new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
//query database
ResultSet rs = pstmt.executeQuery();
while(rs.next()) {
User user = new User();
user.setUserid(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
//add data to List
all.add(user);
}
rs.close();
pstmt.close();
}
catch(Exception e) {
e.printStackTrace();
throw new Exception("Erro:operation abnormal");
}
finally {
dbc.close();
}
return all;
}
はDAOFactory.java
です:
package DB;
import DB.*;
public class DAOFcatory {
public static UserDAO getUserDAOInstance() {
return new UserDAOImpl();
}
}
しかし、私はUserDAOImpl.java
からコードをコメントする場合:
throw new Exception("Erro:operation abnormal");
と dbc.close();
odd.Iはノー場所を指す参照を使用しようとすると、多分にもそれが発生し、接続するデータベースを、それをないと思うので、私はinformation.It年代トップナビゲーションバーを取得しますが、ありませんあたかもオブジェクトを参照しているかのようにメモリ(null)に格納されます。しかし、私はnullを見つけることができません。ユーザーIDは不確実性、おそらくこれの手掛かりです。
[NullPointerExceptionとは何ですか?それを修正するにはどうすればいいですか?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) –