HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
org.jingguan.lohas.jdbc.DBConn.insertUser(DBConn.java:41)
org.jingguan.lohas.bo.ReUser.doPost(ReUser.java:30)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
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.
--------------------------------------------------------------------------------Apache Tomcat/6.0.13
org.jingguan.lohas.jdbc.DBConn.insertUser(DBConn.java:41)
org.jingguan.lohas.bo.ReUser.doPost(ReUser.java:30)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
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.
--------------------------------------------------------------------------------Apache Tomcat/6.0.13
然后我刚刚新建了WEB项目,又写了SERVLET和JDBC。会不会跟这个有关?
<body>
<form action = "servlet/ReUser" method="post">
<table width="672" height="267" align="center" >
<tr><td align="center"><br><br><br>用户注册<br><br><br><br><br></td></tr>
<tr><td>昵称:<input type="text" name="userName"/> * 昵称由2到24个字符组成</td></tr>
<tr><td> 密 码: <input type="password" name="userPwd"/> * 密码必须是6到16个字符,建议使用英文和符号混合</td></tr>
<tr><td align="center"> <input type="submit" name="userName" value="注册新用户"/> <input type="reset" name="userName" value="重写"/></td></tr> </table>
</form>
</body>
ReUser.java
public class ReUser extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L; public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName = request.getParameter("userName");
String userPwd = request.getParameter("userPwd");
DBConn conn = new DBConn();
conn.getConn();
conn.insertUser(userName,userPwd);
conn.closeConn();
} }
这里出现空指针,去看看谁是空的,修改过来就成啦
没有空指针啊。。
public void insertUser(String userName, String userPwd) {
try {
stmt = conn.createStatement();
stmt.execute("insert into users(userName,userPwd)values" + "('"
+ userName + "','" + userPwd + "')");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
楼主你的conn对象应该没有附上值。如果这个方法里面有空指针的话,唯一可能为空的就是conn对象,检查一下获取conn的方法,以及conn对象的传递过程。
寻找太累人了,建议楼主debug跟踪一下,很容易就找到问题所在了。
org.jingguan.lohas.jdbc.DBConn.insertUser(DBConn.java:41)
很明显的错误啊,楼主查一下看看那个地方有哪些可能出现null错误
package org.jg.lohas.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;//1.加载厂商驱动
//2.加载jdbc包
//3.载入驱动对象
public class DBConn {
// 4.将驱动对象加载到内存中去
private Connection conn;
private Statement stmt;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} // 5.建立连接
public void getConn() {
try {
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "root", "");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} // 6.执行操作
public void insertUser(String userName, String userPwd) {
try {
stmt = conn.createStatement();
stmt.execute("insert into users values" + "('" + userName + "','" + userPwd + "')");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean IsUser(String userName, String userPwd) {
boolean flag = false;
try {
stmt = conn.createStatement();
ResultSet rs = stmt
.executeQuery("select * from users where userName='"
+ userName + "' and userPwd='" + userPwd + "'");
if (rs != null && rs.next()) {
flag = true;
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
public void insertLog(String titleName,String contents){
try {
stmt = conn.createStatement();
stmt.execute("insert into blog(titleName,contents)values" + "('"
+ titleName + "','" + contents + "')");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 关闭
public void closeConn() {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
// 5.建立连接
public Connection getConn() {
try {
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "root", "");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
// 6.执行操作
public void insertUser(String userName, String userPwd) {
try {
stmt = this.getConn().createStatement();
stmt.execute("insert into users values" + "('" + userName + "','" + userPwd + "')");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}改成方法直接返回conn对象试试,我还是觉得conn是null.