一、servlet作用域
1.请求域(request):
特点:在同一次请求中有效,**(请求分派能共享参数,重定向不行)**
代码:req.setAttribute("user",user);
2.会话域(session): 会话域范围比请求域大,请求头自带jsessionid
特点:同一次会话,共享参数可以获取(会话:从共享数据开始,到浏览器关闭/主动清除。
不受请求转发和重定向的影响,只要存到session中,浏览器不管吧或者不主动清除都可以获取。)
代码:HttpSession session=request.getSession(); //获取session对象
session.setAttribute("user",user);
如果服务端已经为这个请求创建了会话,那么服务器就会把当前请求加到会话中;
如果服务端没有为这个请求创建过会话,那么服务器就会为这个请求创建新的会话。
会话默认时效:30分钟
会话的失效方式有哪些
(1)超时失效
(2)让会话立即失效 调用invalidate()方法
3.全局域(ServletContext):
特点:所有请求都在会话域中,所有request都能共享数据
代码:ServletContext servletContext = getServletContext(); //获取servletContext(); 对象
servletContext.setAttribute("user",user);
4.添加数据/移除数据
session.setAttribute("user",user);
session.removeAttribute("user",user);
二、JSESSIONID
1.JSESSIONID是什么
JSESSIONID是一个Cookie,Servlet容器(tomcat,jetty)用来记录用户session。
2.什么时候种下JSESSIONID
创建会话时,即调用request.getSession()的时候,关于getSession就不说了。补充几点是,访问html是不会创建session的,**JSP页面默认是会创建session的**,可以在JSP页面里面关掉自动创建session.
3.JSESSIONID工作原理: