运行java程序时出现的错误:" java.lang.NullPointerException”

demonzhong 2010-10-29 08:20:02
各位高手,我用jsp+javabean编写代码,总是出现java.lang.NullPointerException。错误如下:

java.lang.NullPointerException
at dbase.Dbconn.getpreparedStatement(Dbconn.java:64)
at action.UserLogin.loginck(UserLogin.java:37)
at servlet.UserLoginServlet.doGet(UserLoginServlet.java:69)
at servlet.UserLoginServlet.doPost(UserLoginServlet.java:28)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
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:619)


其中用红字标出的错误在原文中要么是注释部分,要么是我屏蔽掉的部分。然后我就把那些全给删了,但是还是显示如上所示的错误,我真是不知道该怎么办了。望各位大哥大姐们帮帮忙,不甚感激,好几天了都!!高手救命呀!!

其中第二行异常在原文中是一个没有任何文字的行;
第四行异常在原文中对应的代码是“response.sendRedirect("/abc/login.jsp");”
...全文
1061 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
demonzhong 2010-10-29
  • 打赏
  • 举报
回复
现在的错误是,
1.这个类public class UserLogin { }中的loginck()函数的判断语句: if (user.getusername().equals(rs.getString("username"))的空指针错误;

2.public class UserLoginServlet extends HttpServlet {}中的boolean bool=model.loginck(admin)(这一行在倒数);的空指针错误。
demonzhong 2010-10-29
  • 打赏
  • 举报
回复
现在又出新问题了,不管我输入的用户信息是否正确,下面显示在页面上的都是按fail.jsp 显示,从不显示login.jsp???

public class UserLoginServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String username = request.getParameter("username");
String password = request.getParameter("password");
String Weight = request.getParameter("Weight");
Userbean admin = new Userbean();
admin.setusername(username);
admin.setpassword(password);
admin.setWeight(Weight);
UserLogin model = new UserLogin();
boolean bool=model.loginck(admin);

if(bool) {
response.sendRedirect("/abc/login.jsp");
} else{
request.getRequestDispatcher("/fail.jsp").forward(request, response);
}

}


判断输入信息的代码(判断过程很不合理,我只是想解决一下刚开始的问题,所以还是可以用的,望各位高手不要取笑小弟了。呵呵..):

package action;

import java.sql.*;



import bean.Userbean;
import dbase.Dbconn;

public class UserLogin {


public Dbconn dbc = new Dbconn();

public UserLogin(){


}
public boolean loginck(Userbean user) {

String sql = "SELECT * FROM UserMangeInfo";

Connection conn=dbc.getCon();

try{
PreparedStatement pstmt=conn.prepareStatement(sql);

ResultSet rs =pstmt.executeQuery();



if (rs.next()){

if (user.getusername().equals(rs.getString("username"))
&&user.getpassword().equals(rs.getString("password"))
&&user.getWeight().equals(rs.getString("Weight"))){

return true;
}
}
}catch (Exception e) {

e.printStackTrace();

}finally{

dbc.close();
}

return false;

}

}



demonzhong 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chainhou 的回复:]
楼主,我感觉原因有如下两点,一是你删除了但是tomcat里的work目录下仍然是以前的东西,故有错,试着清空了再运行试试。二是你先保证你的数据库连接conn传过来的时候不为空,可以debug运行时观察一下,如果这都没问题了应该就没什么问题了,照你的错误信息看好像是conn为空,所以preparedStatement无法创建。Good luck!
[/Quote]

谢谢!不过我的第一错误行在代码里面是一个空行,第三行错误在代码里面是一行注释,而且是那种软件自动生成的那种注释。

对于conn问题,我直接在.jsp页面上读数时可以实现(这个时候有调用用于连接数据库的类Dbconn()),但是一加上servlet文件就不行了。
chainhou 2010-10-29
  • 打赏
  • 举报
回复
楼主,我感觉原因有如下两点,一是你删除了但是tomcat里的work目录下仍然是以前的东西,故有错,试着清空了再运行试试。二是你先保证你的数据库连接conn传过来的时候不为空,可以debug运行时观察一下,如果这都没问题了应该就没什么问题了,照你的错误信息看好像是conn为空,所以preparedStatement无法创建。Good luck!
demonzhong 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ylongshao1987 的回复:]
空指针只可能是传值吗,看看你的传值了
[/Quote]


是什么意思,不太明白?请教了!
ylongshao1987 2010-10-29
  • 打赏
  • 举报
回复
空指针只可能是传值吗,看看你的传值了
demonzhong 2010-10-29
  • 打赏
  • 举报
回复
这是我javabean里面定义的信息,我也没找到有什么不一样的地方呀?:


public class Userbean {

private String username;

private String password;

private String Weight;

public String getusername() {
return username;
}

public void setusername(String username) {
username = this.username;
}

public String getpassword() {
return password;
}

public void setpassword(String password) {
password = this.password;
}

public String getWeight() {
return Weight;
}

public void setWeight(String Weight) {
Weight = this.Weight;
}

}
demonzhong 2010-10-29
  • 打赏
  • 举报
回复
这个是我前台的.jsp页面:

<%@ page language="java" pageEncoding="gbk" contentType= "text/html;charset=gb2312 "%>
<html lang="true">
<head>


<title>登陆页面</title>

</head>

<body>
<form action="servlet/UserLoginServlet" method="post" name="userloginForm" ><br><table border="0">
<tr>
<td>用户名:</td>
<td><input type=text name="username"/></td>
</tr>
<tr>
<td>密码:</td>
<td><input type=password name="password"/></td>
</tr>
<tr>
<td>权限:</td>
<td>
<select name="Weight">
<option value="2">
普通用户
</option>
<option value="1">
管理员
</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="right"><input value="登陆" type="submit"/></td>
<td colspan="2" align="right"><input value="重置" type="reset"/></td>
</tr>
</table>
</form>

</body>
</html>
m690192206 2010-10-29
  • 打赏
  • 举报
回复
NullPointerException
空异常,也就是说你的JSP页面的数据没有传到你的Servlet里面去而不错,原因有一,你的JSP页面的name属性和你的javabean属性不一致,请你仔细检查,
demonzhong 2010-10-29
  • 打赏
  • 举报
回复
最要命的是原文怎么改,即使是把一些删了,换了,错误却怎么也不变!!

81,092

社区成员

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

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