跪求一个空指针错误,所有的传入参数都判断了非空,实在找不到哪里没有赋值了
代码很简单,希望好心人知名错误,必定牢记错误。
代码如下
user类代码:
package shopping.Object;
import java.sql.*;
import shopping.util.*;
public class User {
private int id;
private String username;
private String password;
private String phone;
private String addr;
private Timestamp rdate;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
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 String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public Timestamp getRdate() {
return rdate;
}
public void setRdate(Timestamp rdate) {
this.rdate = rdate;
}
public void save()
{
Connection conn=null;
PreparedStatement pstmt=null;
try {
String sql="insert into ruser values(1,?,?,?,?,?)";
conn = DB.getConn();
if(conn!=null&&sql!=null)
{
pstmt=DB.getPstmt(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 (Exception e) {
e.printStackTrace();
}finally
{
if(pstmt!=null)
{
DB.closeStatement(pstmt);
pstmt=null;
}
if(conn!=null)
{
DB.closeConn(conn);
conn=null;
}
}
}
}
2.DB类代码
package shopping.util;
import java.sql.*;
public class DB {
static
{
try {
Class.forName("Oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConn()
{
Connection conn=null;
try {
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "scott", "124567");
} catch (Exception e) {
}
return conn;
}
public static void closeConn(Connection conn)
{
try {
if(conn!=null)
conn.close();
conn=null;
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Statement getStatement(Connection conn)
{
Statement stmt=null;
try {
if(conn!=null)
stmt=conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
return stmt;
}
public static void closeStatement(Statement stmt)
{
try {
if(stmt!=null)
stmt.close();
stmt=null;
} catch (SQLException e) {
e.printStackTrace();
}
}
public static PreparedStatement getPstmt(Connection conn,String sql)
{
PreparedStatement pstmt=null;
try
{
if(conn!=null)
pstmt=conn.prepareStatement(sql);
}catch (Exception e)
{
e.printStackTrace();
}
return pstmt;
}
public static ResultSet getRs(Statement stmt,String sql)
{
ResultSet rs = null;
try {
if(stmt!=null&&sql!=null)
rs=stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public static void closeResultSet(ResultSet rs)
{
try {
if(rs!=null)
rs.close();
rs=null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3.jsp页面代码
(1)注册页面
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ page import="java.sql.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>欢迎注册新用户</title>
<script type="text/javascript" src="Script/RegisterCheckData.js">
</script>
</head>
<body>
<form action="RegisterOK.jsp" name="form" method="post" onsubmit="return checkData()">
<input type="hidden" name="action" />
<table border="1" name="table" width="750" align="center">
<tr>
<td colspan="2" align="center">用户注册</td>
</tr>
<tr>
<td>用户名</td>
<td><input type="text" name="username"/></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password1"/></td>
</tr>
<tr>
<td>确认密码</td>
<td><input type="password" name="password2"/></td>
</tr>
<tr>
<td>电话</td>
<td><input type="text" name="phone"/></td>
</tr>
<tr>
<td>地址</td>
<td><textarea rows="12" cols="80" name="addr"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="提交"/><input type="reset" value="重置"/></td>
</tr>
</table>
</form>
</body>
</html>
(2)注册成功页面
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ page import="java.sql.*" %>
<%@ page import="shopping.Object.*" %>
<%
request.setCharacterEncoding("GB18030");
String username=request.getParameter("username");
String password=request.getParameter("password1");
String phone=request.getParameter("phone");
String addr=request.getParameter("addr");
User u=new User();
u.setUsername(username);
u.setPassword(password);
u.setPhone(phone);
u.setAddr(addr);
u.setRdate(new Timestamp(System.currentTimeMillis()));
//out.println("注册了");
u.save();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>恭喜,注册成功</title>
</head>
<h1>恭喜,注册成功!</h1>
<body>
</body>
</html>
这是出错的代码
type Exception reportexception string jsp
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
java.lang.NullPointerException
shopping.Object.User.save(User.java:65)
org.apache.jsp.RegisterOK_jsp._jspService(RegisterOK_jsp.java:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.
[解决办法]
测试没发现空指针,发现数据库驱动的写法:
"oracle.jdbc.driver.OracleDriver" 前面的Oracle改为小写,就能运行。