在MYSQL里创建有用户和管理员表了并且都有数据,测试了用户的,可以登陆成功,到管理员的就不能成功,出现java.lang.NullPointerException空指针;
我的界面没有那么多行代码,他怎么说我111行代码错误呢?下面是源码,求大佬帮忙看一下?谢谢
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030" import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<jsp:useBean id="guanli" class="com.DB" scope="page" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
String username=new String(request.getParameter("username").getBytes("ISO-8859-1"),"GB18030");
String password=new String(request.getParameter("password").getBytes("ISO-8859-1"),"GB18030");
String quanxian=new String(request.getParameter("quanxian").getBytes("ISO-8859-1"),"GB18030");
Connection con=guanli.getCon();
if(quanxian.equals("管理员")){
String sql="select * from login where username='"+username+"' and password='"+password+"'";
ResultSet rs=guanli.GetRs(sql);
if(rs.next()){
//session.setAttribute("jibie",""+quanxian+"");
session.setAttribute("guanliyuan",""+username+"");
out.println("<script lanage='javascript'>alert('登录成功');window.location.href='admin/index.jsp';</script>");
}
else{
out.println("<script lanage='javascript'>alert('登陆错误,请核实用户名和密码是否输入正确,重新输入');javascript:history.go(-1);</script>");
}
guanli.closed();
}
if(quanxian.equals("用户")){
String sql="select * from reg where username='"+username+"' and password='"+password+"'";
ResultSet rs=guanli.GetRs(sql);
if(rs.next()){
//session.setAttribute("bianhao",""+rs.getString("bianhao")+"");
session.setAttribute("ck",""+username+"");
out.println("<script lanage='javascript'>alert('登录成功');window.location.href='huiyuan/h_index.jsp';</script>");
}
else{
out.println("<script lanage='javascript'>alert('登陆错误,请核实用户名和密码是否输入正确,重新输入');javascript:history.go(-1);</script>");
}
guanli.closed();
}
%>
</body>
</html>
将sql语句拿到mysql里新建查询,看看是否运行成功,返回值是否为空。
请把第111行代码放出来。我才好帮你看问题
页面debug 用debugger
在代码上面写。
比如:
debugger
String username=new String(request.getParameter("username").getBytes("ISO-8859-1"),"GB18030");
String password=new String(request.getParameter("password").getBytes("ISO-8859-1"),"GB18030");
String quanxian=new String(request.getParameter("quanxian").getBytes("ISO-8859-1"),"GB18030");
用Notepad++这类能显示代码行数的编辑器打开你的编译后的dengluchuli_jsp.class文件(在eclipse工作空间里的.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\你的工程\dengluchuli_jsp.class),找到第111行看看是哪一行的数据拿到的是null。或者使用debug模式看看后台servlet里定义的变量的值是否获取到了。
String username=new String(request.getParameter("username").getBytes("ISO-8859-1"),"GB18030");
String password=new String(request.getParameter("password").getBytes("ISO-8859-1"),"GB18030");
String quanxian=new String(request.getParameter("quanxian").getBytes("ISO-8859-1"),"GB18030");
如果是管理员登录不成功,只有这三个地方会抛出空指针的异常。你可以尝试打印出这三个值看看。
看弹出的窗口到哪里,就可以确定是哪个地方报空指针了。