源码如下
package com.bjsxt.shopping;import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.sql.Connection;import com.bjsxt.shopping.util.*;public class User {
private int id;
private String username;
private String password;
private String phone;
private String addr;
private Timestamp rdate;
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Timestamp getRdate() {
return rdate;
}
public void setRdate(Timestamp rdate) {
this.rdate = rdate;
}
public String getUserName() {
return username;
}
public void setUserName(String userName) {
this.username = userName;
}
public void save() {
Connection conn = null;
PreparedStatement pStmt = null;
try{
conn = DB.getConn();
String sql = "insert into ruser values(null, ?, ?, ?, ?, ?)";
pStmt = DB.getPrStmt(conn, sql);
pStmt.setString(1, username);
pStmt.setString(2, password);
pStmt.setString(3, phone);
pStmt.setString(4, addr);
pStmt.setTimestamp(5, rdate);
pStmt.executeUpdate();
} catch(SQLException e) {
e.printStackTrace();
} finally {
DB.closeStmt(pStmt);
DB.closeConn(conn);
}
}
}
package com.bjsxt.shopping.util;import java.sql.*;public class DB {
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
private DB() {}
public static Connection getConn() {
Connection conn = null;
try{
conn = DriverManager.getConnection("jdbc:mysql://localhost/8888/shopping?uesr=root&password=root");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void closeConn(Connection conn) {
if(conn != null) {
try {
conn.close();
conn = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static Statement getStmt(Connection conn) {
Statement stmt = null;
try {
stmt = conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
return stmt;
}
public static PreparedStatement getPrStmt(Connection conn, String sql) {
PreparedStatement pStmt =null;
try {
pStmt = conn.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return pStmt;
}
public static void closeStmt(Statement stmt) {
if(stmt != null) {
try {
stmt.close();
stmt = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static ResultSet executeQuery(Statement stmt, String sql) {
ResultSet rs = null;
try {
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public static void closeRs(ResultSet rs) {
if(rs != null) {
try {
rs.close();
rs = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}错误行数 2012-8-10 6:32:13 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at com.bjsxt.shopping.util.DB.getPrStmt(DB.java:49)
at com.bjsxt.shopping.User.save(User.java:60)
at org.apache.jsp.register_jsp._jspService(register_jsp.java:62)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
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:172)
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.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
2012-8-10 6:40:56 org.apache.catalina.core.StandardContext reload
信息: Reloading this Context has started请问是什么问题呢? 谢谢
package com.bjsxt.shopping;import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.sql.Connection;import com.bjsxt.shopping.util.*;public class User {
private int id;
private String username;
private String password;
private String phone;
private String addr;
private Timestamp rdate;
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Timestamp getRdate() {
return rdate;
}
public void setRdate(Timestamp rdate) {
this.rdate = rdate;
}
public String getUserName() {
return username;
}
public void setUserName(String userName) {
this.username = userName;
}
public void save() {
Connection conn = null;
PreparedStatement pStmt = null;
try{
conn = DB.getConn();
String sql = "insert into ruser values(null, ?, ?, ?, ?, ?)";
pStmt = DB.getPrStmt(conn, sql);
pStmt.setString(1, username);
pStmt.setString(2, password);
pStmt.setString(3, phone);
pStmt.setString(4, addr);
pStmt.setTimestamp(5, rdate);
pStmt.executeUpdate();
} catch(SQLException e) {
e.printStackTrace();
} finally {
DB.closeStmt(pStmt);
DB.closeConn(conn);
}
}
}
package com.bjsxt.shopping.util;import java.sql.*;public class DB {
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
private DB() {}
public static Connection getConn() {
Connection conn = null;
try{
conn = DriverManager.getConnection("jdbc:mysql://localhost/8888/shopping?uesr=root&password=root");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void closeConn(Connection conn) {
if(conn != null) {
try {
conn.close();
conn = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static Statement getStmt(Connection conn) {
Statement stmt = null;
try {
stmt = conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
return stmt;
}
public static PreparedStatement getPrStmt(Connection conn, String sql) {
PreparedStatement pStmt =null;
try {
pStmt = conn.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return pStmt;
}
public static void closeStmt(Statement stmt) {
if(stmt != null) {
try {
stmt.close();
stmt = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static ResultSet executeQuery(Statement stmt, String sql) {
ResultSet rs = null;
try {
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public static void closeRs(ResultSet rs) {
if(rs != null) {
try {
rs.close();
rs = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}错误行数 2012-8-10 6:32:13 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at com.bjsxt.shopping.util.DB.getPrStmt(DB.java:49)
at com.bjsxt.shopping.User.save(User.java:60)
at org.apache.jsp.register_jsp._jspService(register_jsp.java:62)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
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:172)
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.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
2012-8-10 6:40:56 org.apache.catalina.core.StandardContext reload
信息: Reloading this Context has started请问是什么问题呢? 谢谢
这个DB类49行是哪一行code
是不是pStmt = conn.prepareStatement(sql);
如果是,检查在执行过程中你的conn是否得到,debug看看conn是不是null
或者System.out.println(conn);看看是不是null
conn = DB.getConn();Connection 是空的没有值;看下MySQL的连接字符串
com.mysql.jdbc.Driverjdbc:mysql://192.168.130.188:3306/数据库名跟密码么
pStmt.setString(2, password);
pStmt.setString(3, phone);
pStmt.setString(4, addr);
pStmt.setTimestamp(5, rdate);
这里你传过去的username等从哪里来的?你的add()方法不需要先传个User对象过来吗?
然后
pStmt.setString(1, user.getUserName());
pStmt.setString(2, user.getPassword());
pStmt.setString(3, user.getPhone());
pStmt.setString(4, user.getAddr());
pStmt.setTimestamp(5, user.getDdate());
这样写,才会得到哪些数据,才能传给数据库进行操作
2:对于所有的外部响应(数据库、WEB 服务、HTTP 响应等)结果进行非空检查
还有,pStmt.setString(1, username);这里也有点问题,username还没赋值,要用user.getUsername().
还有,pStmt.setString(1, username);这里也有点问题,username还没赋值,要用user.getUsername().