当前位置: 首页 > article >正文

空指针:HttpSession异常,SpringBoot集成WebSocket

异常可能性:

  • 404 : 请检查拦截器是否将请求拦截
  • WebSocket握手期间HttpSession为空

HttpSession为空

方法一 :

网上参考大量的文档,有说跟前端请求域名有关系的。 反正对我来说,没啥用无法连接。

需使用 localhost,不能使用127.0.01 

    var host = window.location.host;
    var url = "ws://"+host+"/chatRoom/null";

方法二 :可以解决

添加监听配置 ,采用spring boot自动装配的方式,创建一个Session。

因为我需要存入数据,所以对我而言,不太ok。

其他原因看:WebSocket获取httpSession空指针异常的解决办法icon-default.png?t=O83Ahttps://blog.csdn.net/csu_passer/article/details/78536060

@WebListener
public class RequestListener implements ServletRequestListener {

    @Override
    public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
    }

    @Override
    public void requestInitialized(ServletRequestEvent servletRequestEvent) {
        ((HttpServletRequest)servletRequestEvent.getServletRequest()).getSession();
    }
}

虽然有Session了,还是连接不上!

方法三 :成功解决

灵感 : 方法2通过监听创建Session。监听最牛逼的不应该是拦截器或者过滤器。

可以从拦截器中获取到我需要的数据,在request里面配置,应该更好。从request中getSession,存点东西进去试试。

@WebFilter(urlPatterns = "/*")
public class ArticleFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{
        long start = System.currentTimeMillis();

        // 存入session
        System.out.println("存入session");
        ((HttpServletRequest) request).getSession().setAttribute("name", 123);

        // 封装请求信息存储到请求上下文
        chain.doFilter(request, response);
        long end = System.currentTimeMillis();
        System.out.println("请求耗时:" + (end - start) + "ms");
    }
}


http://www.kler.cn/a/503354.html

相关文章:

  • HarmonyOS NEXT开发进阶(六):HarmonyOS NEXT实现嵌套 H5 及双向通信
  • 学习笔记-Kotlin
  • 如何当前正在运行的 Elasticsearch 集群信息
  • 微信小程序中 隐藏scroll-view 滚动条 网页中隐藏滚动条
  • Web前端:JavaScript标识符与变量
  • 语音技术与人工智能:智能语音交互的多场景应用探索
  • tmux 中鼠标滚动异常:^[[A和^[[B是什么以及如何解决
  • 51c~Pytorch~合集4
  • 【按钮防抖】el-button和普通按钮防抖,点击一次禁用一秒再恢复
  • 9分布式微服务架构
  • Windows安装HDC工具及鸿蒙手机开启HDC调试
  • Java开发关键步骤:Windows与macOS系统环境变量详细配置指南
  • 一种ESP8266+OLED时间天气显示
  • 前端进程和线程及介绍
  • 初阶数据结构【双链表及其接口的实现】
  • 安装MySQL在Linux环境下
  • 深入解析Alertmanager启动命令行参数及其作用
  • zookeeper-配置
  • [Git] 深入理解 Git 的客户端与服务器角色
  • 通信网络安全分层及关键技术解决
  • 深圳观澜森林公园及五指耙森林公园边坡自动化监测
  • C# HslCommunication库
  • java 组合框
  • Flutter(Dart)的集合类型List、Set 和 Map
  • open3d+opencv实现矩形框裁剪点云操作(C++)
  • 【动态规划-矩阵】5.下降路径最小和