自动登录小demo报空指针异常(NullPointerException)

自动登录小demo报空指针异常(NullPointerException)

这是一个登录小demo 密码用户名是固定的 然后利用session实现自动登录功能
前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="lo.do" method="post">
        <table>
            <tr>
                <td>姓名</td>
                <td><input type="text" name="user"></td>
            </tr>
            <tr>
                <td>密码</td>
                <td><input type="password" name="password"></td>
            </tr>
            <tr>
                <td><input type="submit" value="登录"> </td>
            </tr>
        </table>
    </form>
</body>
</html>

自动登录url servlet

package cn.baidu.c_autologin;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/In.do")
public class IndexServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        //判断是否有session,如果有值,登录,没有就登陆界面 
        //获取session对象,非创建方式
        HttpSession session = request.getSession();
        //判断存在session的对象和存储的信息
        String name = (String)session.getAttribute("name");
        //登陆的session name 盖亚  因为是简单测试 所以默认只要用户名对就自动登录
        if(session !=null && name.equals("盖亚")){
           String html="<font size='7' color='green'>欢迎铁子来到直播间</font><a href='login.html'> <input type='button' value='注销'></a>";
			//登录成功以后假设到一个页面成功
           response.getWriter().append(html);
        }else {
           //如果 session里面没有值的话 说明 之前没有登陆过 重定向到登录界面
           response.sendRedirect(request.getContextPath()+"/login.html");
        }
    }
}

错误图:

在这里插入图片描述知道了这里的错误是在

 if(session !=null && name.equals("盖亚")){

解决方案

 if(session !=null && "盖亚".equals(name)){

错误原因:

session.getAttribute("name"); //我们这个时候如果还没有存入 name 的话  会得到 null
//而我后来也用
String name="";
System.out.println(name.equals("盖亚"));  //测试发现 结果就是空指针异常

所以下回我们在使用equals()方法的时候要尽量确定前面的值一定不能为空

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值