注意: 阅读下文前,建议去看下JCP的Servlet规范。java
图1 HttpSession接口web
能够经过setAttribute方法在HttpSession中设置属性,那么有个问题,web容器中,底层上这个HttpSession的数据结构是什么?安全
Tomcat-8.0.0中,有个StandardSession实现了HttpSession,这个StandardSession中有个attributes属性,以下List-1所示,底层上用ConcurrentHashMap来做为HttpSession的底层数据结构,保证并发操做的线程安全。数据结构
List-1 并发
/** * The collection of user data attributes associated with this Session. */ protected Map<String, Object> attributes = new ConcurrentHashMap<>();
invalidate方法,是指清空HttpSession中的全部数据,即在Tomcat-8.0.0中,清空底层attributes中的全部数据。this