码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Filter和ThreadLocal结合存储用户id信息


    1. ThreadLocal并不是一个Thread,而是Thread的局部变量。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
    2. ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。
    3. ThreadLocal在使用过程中,若使用完之后,建议在finally中调用remove()方法,手动释放对key和value的引用,避免产生内存泄漏问题。
    4. 在过滤器Filter的filterChain.doFilter(request, response)执行之前进行用户id信息的设置,在filterChain.doFilter(request, response)执行之后进行ThreadLocal的remove方法的操作。
      1. 建立ThreadLocal的操作userId的用户信息类
          1. package com.app.studypro.utils;
          2. /**
          3. * 获取用户信息的工具类
          4. * 采用ThreadLocal存储用户的id信息
          5. * @author Administrator
          6. */
          7. public class UserUtil {
          8. /**
          9. * ThreadLocal存储用户id信息
          10. */
          11. private static ThreadLocal threadLocal=new ThreadLocal<>();
          12. /**
          13. * 获取当前用户的id
          14. * @return 返回long类型的用户id
          15. */
          16. public static Long getCurrentUserId(){
          17. return threadLocal.get();
          18. }
          19. /**
          20. * 设置用户id的信息
          21. * @param userId 用户id
          22. */
          23. public static void setCurrentUserId(Long userId){
          24. threadLocal.set(userId);
          25. }
          26. /**
          27. * 移除ThreadLocal中的当前线程存储的内容信息。请在使用完之后将其移除,避免存在内存泄漏
          28. */
          29. public static void removeCurrentUserId(){
          30. threadLocal.remove();
          31. }
          32. }
      2. 在Filter中将session中用户的登录信息存入或者移除ThreadLocal中的信息
  • 相关阅读:
    微模块-前端业务模块化探索,拆解巨石应用的又一利器
    Win11笔记本耗电太快怎么办?
    C++语法基础:函数指针
    深度学习中端到端的概念
    OpenGL ES EGL 简介
    栈与队列 | 有效的括号、删除字符串中的所有相邻元素、逆波兰表达式求值、滑动窗口的最大值、前K个高频元素 | leecode刷题笔记
    非人脸场景AE模块调试方法及其合理性分析
    矢量场的旋度和散度
    抖音实战~手机号验证码一键注册登录流程(限制手机终端登录)
    如何在小程序首页设置标题栏文字
  • 原文地址:https://blog.csdn.net/weixin_41926152/article/details/134484401
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号