`
happyqing
  • 浏览: 3198020 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用ThreadLocal存储Session,方便其他地方调用用户信息

阅读更多

 

package com.urt.core.web;

import javax.servlet.http.HttpSession;

import com.urt.core.authority.entity.User;

/** 
 * 用户Session存储器,方便在Controller层以外获取用户
 * @author happyqing
 * @date 2015-4-25
 */
public class UserSession {
	private static final ThreadLocal<HttpSession> userSession = new ThreadLocal<HttpSession>();
	
	public static void setUserSession(HttpSession session) {
		userSession.set(session);
    }
  
    public static HttpSession getUserSession() {
        return userSession.get();
    }
    
    public static User getUser(){
		return (User)userSession.get().getAttribute("user");
	}
    
    public static void setAttribute(String key, Object value){
    	userSession.get().setAttribute(key, value);
	}
    
    public static Object getAttribute(String key){
    	return userSession.get().getAttribute(key);
	}

}

 

分享到:
评论

相关推荐

    通向架构师的道路(第七天)之漫谈使用ThreadLocal改进你的层次的划分

    此外,ThreadLocal还有其他应用场景,比如在Web开发中,可以用来存储请求相关的上下文信息,如用户会话、线程安全的计数器等,避免在多线程环境中的数据污染问题。 总之,ThreadLocal是Java多线程编程中的一种有效...

    java中ThreadLocal类的使用

    2. **请求上下文**:在Web应用中,可以使用`ThreadLocal`保存HttpServletRequest或Session对象,方便在同一个请求处理链路中访问。 3. **线程状态**:记录线程执行过程中的状态,例如事务管理、计数器等。 然而,...

    JAVA ThreadLocal类深入

    Hibernate框架在处理数据库操作时,使用ThreadLocal来管理Session,确保每个线程都有自己独立的Session对象。这样,即使多个线程并发执行,每个线程也不会干扰其他线程的Session,避免了数据错乱的问题。例如,...

    java 简单的ThreadLocal示例

    ThreadLocal常用于保存线程上下文信息,如用户Session、数据库连接、事务ID等,确保这些信息只在当前线程内有效。 2. **避免同步:** 如果多个线程需要访问相同的数据,但是每个线程都需要自己的副本,...

    ThreadLocal的用处

    - 请求上下文:在Web应用中,可以使用ThreadLocal存储HttpServletRequest、Session等与请求相关的数据,确保这些数据只在当前请求的线程内可见。 - 数据库连接:在数据库连接池中,可以使用ThreadLocal为每个线程...

    正确理解ThreadLocal.pdf

    `ThreadLocal`是Java平台提供的一种线程局部变量的解决方案,它为每一个使用该变量的线程都提供了独立的变量副本,使得每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。这不同于普通的静态...

    ThreadLocal原理及在多层架构中的应用.pdf

    通过ThreadLocal,可以保证这些信息在Action的不同调用中保持一致,即在同一个请求的不同阶段中,即使使用不同的线程去处理,它们依然能访问到相同的上下文信息。 黄老邪,作为京东的资深架构师,拥有近20年的行业...

    Java源码解析ThreadLocal及使用场景

    ThreadLocal的使用方式非常灵活,可以用来解决各种问题,例如在Web开发中,可以使用ThreadLocal来存储用户的Session信息,在分布式系统中,可以使用ThreadLocal来存储事务id等。 ThreadLocal的实现原理是基于...

    入研究java.lang.ThreadLocal类.docx

    - 使用 `ThreadLocal&lt;Session&gt;` 确保每个线程都有独立的 Session 实例。 - 通过 `initialValue()` 方法初始化每个线程的 Session。 - `currentSession()` 方法确保每次调用都能获取到当前线程的 Session 实例。 ###...

    hibernate中session的管理

    在实际开发中,除了使用ThreadLocal,还有其他几种Session管理策略,例如: 1. **Session per Request/Transaction**:每个HTTP请求或数据库事务分配一个Session。这通常是Web应用程序的最佳实践,因为HTTP请求是...

    Hibernate用ThreadLocal模式(线程局部变量模式)管理Session

    每次线程需要访问Session时,通过ThreadLocal.get()方法获取当前线程对应的Session,而无需担心与其他线程的Session混淆。当线程结束时,我们可以通过ThreadLocal.remove()清理对应的Session,防止内存泄漏。 ...

    java面试题汇总

    例如,Hibernate框架中,使用ThreadLocal来存储每个线程的Session实例,这样每个线程都有自己的Session,避免了线程间的数据混乱。以下是一个简单的例子: ```java public static final ThreadLocal&lt;Session&gt; ...

    hibernate常用方法集合

    `HibernateSessionFactory` 使用ThreadLocal变量`threadLocal`来存储线程绑定的Session实例。ThreadLocal是一种线程局部变量,每个线程都有自己的副本,不会互相干扰。这确保了每个线程都有独立的Session实例,避免...

    大型应用系统架构设计 淘宝分布式调用跟踪系统介绍 共60页.pptx

    \n\n在系统架构中,鹰眼首先通过中间件进行埋点,利用ThreadLocal存储调用信息,实现异步写入日志,并采用采样的方式减少性能影响。一旦发生问题,可以实时抓取日志,按照Traceld汇总,然后根据不同的存储策略进行...

    hibernate 简约范例

    由于SessionFactory是线程不安全的,应在多线程环境下使用ThreadLocal变量存储Session。每次操作数据库时,从ThreadLocal中获取Session,操作完毕后关闭Session。 ```java ThreadLocal&lt;Session&gt; threadLocalSession...

    java 中ThreadLocal本地线程和同步机制的比较

    1. 存放Session用户:每个线程可以有自己的Session副本,避免了在多线程环境下对同一个Session对象的并发访问。 2. 存放上下文变量:如WebWork的ActionContext,可以在线程内存储请求相关的上下文信息。 3. 在Spring...

    hibernate的事务核并发

    在多线程环境中,如Web应用或EJB容器,为了保证`Session`的线程安全和资源的有效利用,可以使用`ThreadLocal`变量来存储当前线程的`Session`实例。然而,在CMT环境中,由于单个session bean可能会被多个线程并行调用...

    圣思园 Java web 课件7

    Session是一种用于跟踪客户端状态的技术,主要用来存储用户的会话信息。在Java Web开发中,通过使用HttpSession接口可以轻松实现Session功能。 **工作原理概述:** - **标识符分配**:每当一个新用户访问应用时,...

    Web服务器的工作原理

    在Web应用中,Cookie经常与Session一起使用,通过在客户端存储Session标识符来简化会话管理。 ### 确保线程安全 #### 七、线程安全 在Servlet环境中,确保线程安全是非常重要的,因为多个请求可能会并发访问相同的...

    JSP面试题--基础

    - **Session**:存储在服务器端的对象,用于维护用户会话信息。 - **隐藏表单字段**:通过在 HTML 表单中加入隐藏字段来传递信息。 - **URL 重写**:通过修改 URL 来携带会话 ID。 #### 9. sendRedirect() 与 ...

Global site tag (gtag.js) - Google Analytics