空指针异常问题
我Myeclipse,Tomcat,Mysql。要做一个能登录的小破网站。已经用程序测试联数据库100%没有问题。希望哥哥们别嫌麻烦,东西有点多……而且我还没有分,真的想...
我Myeclipse,Tomcat,Mysql。
要做一个能登录的小破网站。
已经用程序测试联数据库100%没有问题。
希望哥哥们别嫌麻烦,东西有点多……而且我还没有分,真的想给……
相关文件有几个,分别是DBhandle.java(数据库访问类),User.java(jsp调用类),login.jsp(登录页面),dologin.jsp(登录反应页面)。
就是在浏览login页面时点执行(登录按钮)的时候,出现错误,如下:
type Exception report
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:500)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:428)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NullPointerException
river.User.validate(User.java:43)
org.apache.jsp.dologin_jsp._jspService(dologin_jsp.java:99)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.30 logs.
--------------------------------------------------------------------------------
Apache Tomcat/6.0.30
看起来貌似是User.java的43行出现空指针异常。说实话,我基本是抄书,不过部分有些小变动。我对照书仔细检查了还是没看出什么破绽。希望麻烦大家一下。
User.java
package river;
import java.sql.*;
public class User {
String userName="";
String pwd="";
public void setUserName(String user1Name)
{
this.userName=userName;
}
public String getUserName()
{
return userName;
}
public void setPwd(String pwd)
{
this.pwd=pwd;
}
public String getPwd()
{
return pwd;
}
public boolean validate() throws Exception
{
DBhandle connDB=null;
try
{
connDB=new DBhandle();
String sql="select PWD from user where userName='"+userName+"";
ResultSet rs=connDB.executeQuery(sql);
if(rs.next()&&rs.getString(1).equals(pwd))
return true;
else
return false;
}
finally
{
connDB.closeResource();
}
}
}
第43行就是connDB.closeResource(); 展开
要做一个能登录的小破网站。
已经用程序测试联数据库100%没有问题。
希望哥哥们别嫌麻烦,东西有点多……而且我还没有分,真的想给……
相关文件有几个,分别是DBhandle.java(数据库访问类),User.java(jsp调用类),login.jsp(登录页面),dologin.jsp(登录反应页面)。
就是在浏览login页面时点执行(登录按钮)的时候,出现错误,如下:
type Exception report
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:500)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:428)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NullPointerException
river.User.validate(User.java:43)
org.apache.jsp.dologin_jsp._jspService(dologin_jsp.java:99)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.30 logs.
--------------------------------------------------------------------------------
Apache Tomcat/6.0.30
看起来貌似是User.java的43行出现空指针异常。说实话,我基本是抄书,不过部分有些小变动。我对照书仔细检查了还是没看出什么破绽。希望麻烦大家一下。
User.java
package river;
import java.sql.*;
public class User {
String userName="";
String pwd="";
public void setUserName(String user1Name)
{
this.userName=userName;
}
public String getUserName()
{
return userName;
}
public void setPwd(String pwd)
{
this.pwd=pwd;
}
public String getPwd()
{
return pwd;
}
public boolean validate() throws Exception
{
DBhandle connDB=null;
try
{
connDB=new DBhandle();
String sql="select PWD from user where userName='"+userName+"";
ResultSet rs=connDB.executeQuery(sql);
if(rs.next()&&rs.getString(1).equals(pwd))
return true;
else
return false;
}
finally
{
connDB.closeResource();
}
}
}
第43行就是connDB.closeResource(); 展开
1个回答
展开全部
java.lang.NullPointerException
river.User.validate(User.java:43)
你的User文件的第四十三行,是不是:
if(rs.next()&&rs.getString(1).equals(pwd))
对不对?
我想,可能是你输入的用户名不存在,所以才导致的。因为如果没有查找到结果,rs会是null,这个时候如果你用rs.next(),那么,就会报空指针异常。
你判断一下,看是不是rs为null,可把代码保存成:
if(rs!=nullrs.next()&&rs.getString(1).equals(pwd))
再试试,
还有,你的这段代码没有没有catch部分?只有try/finally
river.User.validate(User.java:43)
你的User文件的第四十三行,是不是:
if(rs.next()&&rs.getString(1).equals(pwd))
对不对?
我想,可能是你输入的用户名不存在,所以才导致的。因为如果没有查找到结果,rs会是null,这个时候如果你用rs.next(),那么,就会报空指针异常。
你判断一下,看是不是rs为null,可把代码保存成:
if(rs!=nullrs.next()&&rs.getString(1).equals(pwd))
再试试,
还有,你的这段代码没有没有catch部分?只有try/finally
追问
大哥我把那句给换了也还是不行,还是提示相同的错误。其实有好几个文件呢,我也不确定是这个文件的错误的问题。我在浏览页面的时候用户名肯定没错,我都输了N遍。我太菜了,你跟据你的经验想想我这是什么原因这样的啊。对了,第43行是connDB.closeResource();,最后的那里了
追答
当时回答得太匆忙了,我刚才也看了你发的另外一个帖子了,
finally
{
connDB.closeResource();
}
这段代码里面,
connDB.closeResource();
在这句前面打印一下connDB
System.out.println(connDB);
看是不是会输出null
如果是这行出现空指针,那就证明就没有new成功。
--------------------------------------
DBhandle这个类是你自己写的么?如果是的话,把他贴给我,或者是connDB.closeResource();这个方法贴给我一下。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询