1.request.getSession(true)
若存在会话就返回一个会话,不存在就创建一个.
返回值为HttpSession
2. session.invalidate();
这个方法就是将session中的变量全部清空
3. session.setAttribute(key,value);
设置属性 key ,value
4. session.getAttribute(key);
获取key的值
5.session.removeAttribute(key);
删除属性为key的值
6.重点:
让我们看一下session的属性:
里面有个attributes的属性,这个属性就是我们的 setAttribute 存储的位置.这个
attributes 是HashMap类的对象.
HashMap的key value都可以为空.
所以这就可以解释:为什么我们session.getAttribute(key);和 session.setAttribute(key,null);不会报NullPointerException(),注意当我们debug的时候发现还有这个attributes属性啊.session又不为空为什么不能直接再session.setAttribute呢.而是用request.getSession(true)呢?其实当我们已经执行了session.invalidate();的时候其实它已经把attributes里面的Map的引用置为null而不是把它里面的属性置为空.如果我们执行setAttribute会报空指针异常的