servlet作用域、JSESSIONID

一、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工作原理:

servlet作用域、JSESSIONID_第1张图片

你可能感兴趣的:(Java,servlet)