threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with

2023-11-05

异常描述:空值异常,java.lang.NullPointerException 这是因为我自己在拦截器拦截的时候进行的登录判断时通过session获取到一个空的user并使用这个实体类的getUserName方法获取用户名出现了错误,这是因为我还没有登录,并没有session保存所以出现了异常。这是程序本身设计错误,当然有时候其他的可能也会出现空值异常。

严重: Servlet.service() for servlet [dispatcherServlet] in context with path [/ssm-demo2] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
    at com.liangfufeng.interceptor.LoginInterceptor.preHandle(LoginInterceptor.java:40)
    at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:134)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:958)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

出现错误没修改之前的代码如下:

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        //创建session
        HttpSession session=request.getSession();
        //无需登录可以访问的地址
        String [] allowUrls=new String[]{"toLogin","/login"};
        //获取当前请求地址
        String url=request.getRequestURL().toString();
        //获取session中的用户
        User user=(User) session.getAttribute("user");
        System.out.println(user);
        //判断是否已经登录
        for (String strUrl : allowUrls) {  
            if(url.contains(strUrl))  
            {  
                return true;  
            } 
        }  
        if(user.getUserName()==null){
            request.getRequestDispatcher("/login").forward(request, response);
            return false;
        }
        return true;

    }

错误出现在:

user.getUserName()==null

修改思路:
直接使用user作判断而不是使用的的userName属性

user==null

修改后的代码如下:

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        //创建session
        HttpSession session=request.getSession();
        //无需登录可以访问的地址
        String [] allowUrls=new String[]{"toLogin","/login"};
        //获取当前请求地址
        String url=request.getRequestURL().toString();
        //获取session中的用户
        User user=(User) session.getAttribute("user");
        System.out.println(user);
        //判断是否已经登录
        for (String strUrl : allowUrls) {  
            if(url.contains(strUrl))  
            {  
                return true;  
            } 
        }  
        if(user==null){
            request.getRequestDispatcher("/login").forward(request, response);
            return false;
        }
        return true;

    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with 的相关文章

随机推荐

  • 数据清洗有哪些方法?

    随着大数据时代的发展 越来越多的人开始投身于大数据分析行业 当我们进行大数据分析时 我们经常听到熟悉的行业词 如数据分析 数据挖掘 数据可视化等 然而 虽然一个行业词的知名度不如前几个词 但它的重要性相当于前几个词 即数据清洗 顾名思义 数
  • LeetCode 算法题 - 判断根结点是否等于子结点之和(简单)

    题目 Definition for a binary tree node type TreeNode struct Val int Left TreeNode Right TreeNode func checkTree root TreeN
  • 关于WebSocket的心跳重连机制(详解)

    前言 遇到的问题 实时聊天过程中 1 websocket连接后 长时间远端和客户端不发消息 服务端会把websocket给断开 2 所以就需要一种机制来检测客户端和服务端是否处于正常的链接状态 3 因此就有了websocket的 心跳监测
  • Vue element-ui form 表单 前端提交和后端的接收

    一 前端 1 新建弹窗dialog
  • Flink java wordcount案例(批处理、流处理)

    基本思路 首先构造pom xml 构造数据源 把数据都写在文件中 批处理 使用import org apache flink api java DataSet 读取数据 流处理 使用import org apache flink strea
  • 九十五.深度优先搜索DFS(深入递归(二))

    题一 数独游戏 你一定听说过 数独 游戏 如图 玩家需要根据9 9盘面上的已知数字 推理出所有剩余空格的数字 并满足每一行 每一列 每一个同色九宫内的数字均含1 9 不重复 数独的答案都是唯一的 所以 多个解也称为无解 本图的数字据说是芬兰
  • QT中使用函数指针

    想仿命令行 所以定义了一个类 让一个String 对应一个 function 将两者输入list容器 类中定义了 QString commandStr void MainWindow commandFun void 一个QString 一个
  • Protege新手入门(基础篇)

    通过制作一个简单的动物本体 来使大家了解protege建立owl的基础用法 步骤1 建立新的项目 打开protege 然后会出现对话框 点击Create New Project 出现Create New Project对话框后 选择OWL
  • 【kali】kali换了root权限后无法打开firefox浏览器

    从普通权限换成root权限后发现火狐进不去鸟 终端报错 Running firefox as root in a regular user s sessin is not supported HOME is home miehahaha w
  • redis(1)-hiredis-Windows下的编译

    1 linux编译说明文档 GitHub sewenew redis plus plus Redis client written in C 2 hiredis 编译 2 1 hiredis下载 https github com redis
  • hdu 1060

    Given a positive integer N you should output the leftmost digit of N N Input The input contains several test cases The f
  • Linux下进程内存空间组成/进程的内存映像

    http blog csdn net yusiguyuan article details 45155035 http javathinker iteye com blog 1733058 前言 在偏底层的开发中 需要了解程序的是如何存储的
  • ddl是什么意思网络语_DDL是什么意思

    1 It is necessary to accurately monitor location of gas water interface in annular between casing and test tube for pres
  • Java实现设计模式之——单例模式

    目录 1 什么是单例模式 2 单例模式的实现 2 1 饿汉式单例模式 2 2 懒汉式单例模式 3 线程安全的单例模式 3 1 版本 1 3 2 版本 2 双重检测 3 3 版本 3 禁止指令重排 1 什么是单例模式 单例模式是 Java 中
  • H2RBox:HORIZONTAL BOX ANNOTATION IS ALL YOU NEED FOR ORIENTED OBJECT DETECTION(读论文)

    H2RBOX HORIZONTAL BOX ANNOTATION IS ALL YOU NEED FOR ORIENTED OBJECT DETECTION 文章目录 H2RBOX HORIZONTAL BOX ANNOTATION IS
  • 拆分——nim游戏

    题目 给定 n 堆石子 两位玩家轮流操作 每次操作可以取走其中的一堆石子 然后放入两堆规模更小的石子 新堆规模可以为 0 且两个新堆的石子总数可以大于取走的那堆石子数 最后无法进行操作的人视为失败 问如果两人都采用最优策略 先手是否必胜 输
  • 三、Redis_12(笔记)

    文章目录 Redis Redisd的简介 Redisd的特点 NoSQL技术 Redis 的安装 Redis 的分类 Redis 的常 命令 基本命令 字符串相关命令 Hash 相关命令 List 相关命令 Set 相关命令 ZSet 相关
  • CKA真题分析-2023年度

    补充信息 补全 apt install bash completion source lt kubectl completion bash kubectl config get contexts cat kube config grep c
  • python 自定义类支持缓冲协议_Python编程技巧整理

    过滤列表中的数据 实际案例 过滤掉列表里面的负数 案例分析 filter function or None iterable py2返回一个列表 py3返回一个迭代器 列表解析 使用timeit来测试函数的运行时间 案例代码 python3
  • threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with

    异常描述 空值异常 java lang NullPointerException 这是因为我自己在拦截器拦截的时候进行的登录判断时通过session获取到一个空的user并使用这个实体类的getUserName方法获取用户名出现了错误 这是