请教:HTTP 500错误。。服务器内部错误,意充分堆栈跟踪的根源是现有的Apache Tomcat/6.0.1不是很明白

teemai 2009-07-24 04:05:39
HTTP Status 500 -

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

type Exception report

message

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
...全文
486 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sooneasy 2009-07-27
  • 打赏
  • 举报
回复

// 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.
teemai 2009-07-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sooneasy 的回复:]
引用 6 楼 huxiweng 的回复:
引用 4 楼 sangshusen_1988 的回复:
org.jingguan.lohas.jdbc.DBConn.insertUser(DBConn.java:41)
这里出现空指针,去看看谁是空的,修改过来就成啦


没有空指针啊。。
Java codepublicvoid 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对象的传递过程。
[/Quote]


赋值了。 这个登录模块和代码都是拷贝的我另外一个项目里面的。我那个项目里能正确和数据库交互。。在这个里就不行。。
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();
}
}

}
teemai 2009-07-27
  • 打赏
  • 举报
回复
问题解决了,谢谢大家。。具体情况不详。。反正我感觉每一步都已经写对了。。前两天都不能,今天早上不能,下午就可以了。。郁闷,。。
sooneasy 2009-07-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 huxiweng 的回复:]
引用 4 楼 sangshusen_1988 的回复:
org.jingguan.lohas.jdbc.DBConn.insertUser(DBConn.java:41)
这里出现空指针,去看看谁是空的,修改过来就成啦


没有空指针啊。。
Java codepublicvoid 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();
}
}
[/Quote]

楼主你的conn对象应该没有附上值。如果这个方法里面有空指针的话,唯一可能为空的就是conn对象,检查一下获取conn的方法,以及conn对象的传递过程。
wuzhongxing 2009-07-26
  • 打赏
  • 举报
回复
java.lang.NullPointerException
org.jingguan.lohas.jdbc.DBConn.insertUser(DBConn.java:41)
很明显的错误啊,楼主查一下看看那个地方有哪些可能出现null错误
code_killer 2009-07-26
  • 打赏
  • 举报
回复
呵呵,这种NullPointerException在开发过程中会经常遇到,靠观察代码
寻找太累人了,建议楼主debug跟踪一下,很容易就找到问题所在了。
cy729215495 2009-07-26
  • 打赏
  • 举报
回复
conn是空的
Zongjianchang 2009-07-24
  • 打赏
  • 举报
回复
你从那个servlet中输出一下前台传过来的值,我看你的submit名字也是userName,你改个别的名字,不要和input 的那个重名
teemai 2009-07-24
  • 打赏
  • 举报
回复
来点人啊。。
teemai 2009-07-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sangshusen_1988 的回复:]
org.jingguan.lohas.jdbc.DBConn.insertUser(DBConn.java:41)
这里出现空指针,去看看谁是空的,修改过来就成啦
[/Quote]

没有空指针啊。。
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();
}
}
mydaiwei11 2009-07-24
  • 打赏
  • 举报
回复
可能是你没有获得连接。
sangshusen_1988 2009-07-24
  • 打赏
  • 举报
回复
org.jingguan.lohas.jdbc.DBConn.insertUser(DBConn.java:41)
这里出现空指针,去看看谁是空的,修改过来就成啦
teemai 2009-07-24
  • 打赏
  • 举报
回复
servlet下的
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();


}



}
teemai 2009-07-24
  • 打赏
  • 举报
回复
register.jsp
<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>
teemai 2009-07-24
  • 打赏
  • 举报
回复
上次我做了个网站,要连接TOMCAT。配置SERVLET,和JDBC
然后我刚刚新建了WEB项目,又写了SERVLET和JDBC。会不会跟这个有关?

81,092

社区成员

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

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