java.lang.NullPointerException我是萌新,刚学了一点点JAVA,哪位大佬帮一下,谢谢

在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>

4个回答

请把第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");

qq_23126581
渊渟无迹静涛君 回复qq_36734182: 那就只能debug跑了,一步一步调试。还有后台代码别写在页面。刚开始学习可以理解,后面就要直接在后台class里写。方便debug,等维护
12 个月之前 回复
qq_36734182
qq_36734182 回复玄元复始道生初,守一无穷尽万物: 鼠标点了出现这个source not found for org.apache.jsp.denglu.jsp
12 个月之前 回复
qq_23126581
渊渟无迹静涛君 回复qq_36734182: 鼠标点到那个错误的地方,ctrl+鼠标点击进去。
12 个月之前 回复
qq_23126581
渊渟无迹静涛君 回复qq_36734182: dengluchuli.jsp 第111行,看你的页面
12 个月之前 回复
qq_36734182
qq_36734182 源代码全部都在上面了,没有111行
12 个月之前 回复

将sql语句拿到mysql里新建查询,看看是否运行成功,返回值是否为空。

用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");
如果是管理员登录不成功,只有这三个地方会抛出空指针的异常。你可以尝试打印出这三个值看看。
看弹出的窗口到哪里,就可以确定是哪个地方报空指针了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐