servlet 变量 及servlet 初始化 和销毁 ThreadLocal

时间:2021-10-19 17:46:44

servlet static变量是全局变量, 所有连接到服务器的用户共享一个变量,如 初始化时 static int num=1; 用户登录一次 num++;  张三 登录后 num++,此时num=2; 李四登录时 num=2;

非静态变量  在 一个会话中 线程不安全  。

servlet 在整个 生命周期 ,也就是打开服务器的时候,不管有多少用户请求,只在启动服务器时初始化一次,销毁是在服务器关闭时销毁一次。



//用不同浏览器打开都会保存一个副本,不共享数据
//线程安全,static 保存的变量所有用户共享一个。
//设置数据
public static ThreadLocal<HttpSession>  session = new ThreadLocal<HttpSession>();
session.set(((HttpServletRequest)request).getSession());
//取数据
HttpSession session=MyFilter.session.get();
System.out.println(session.getAttribute("empId")+"  fffffffff"+session.getAttributeNames().nextElement().toString());