例子:

HttpSession httpSession = req.getSession();
resp.getWriter().write(_httpSession.getId())_;

方法:

| public void setAttribute(String name, Object value)
该方法用于向 Session 的域属性空间中放入指定名称、指定值的域属性。

public Object getAttribute(String name)
该方法用于从 Session 的域属性空间中读取指定名称为域属性值。

public void removeAttribute(String name)
该方法用于从 Session 的域属性空间中删除指定名称的域属性。 | | —- |

使用:

创建session对象/获取session对象
HttpSession hs = req.getSession();

  • 如果请求中拥有session的标识符,也就是JSESSIONID,则返回其对应的session队形。
  • 如果请求中没有session的识符,也就是JSESSIONID,则创建新的session对象,并将其JSESSIONID作为从cookie数据存储。
  • 如果session对象是失效了,也会重新创建一个session对象,并将其JSESSIONID存储中浏览器内存中。

    设置session强制失效:

    httpSession.invalidate();

    存储和获取数据:

    | //存储
    httpSession.setAttribute(“user”,httpSession.getId());
    //取得
    httpSession.getAttribute(“name”); | | —- |

注意:存储的动作和取出的动作发生在不同的请求中,但是存储要先于取出执行。

使用时机:

一般用户在登陆web项目后,会将用户的个人信息存储在不同的请求中,但是存储要先于取出执行

作用域:

一次会话,在JSESSIONID和SESSION对象不失效的情况下为整个项目内。

session失效处理:

将用户请求中的JSESSIONID和后台获取到的SESSION对象的JSESSIONID进行比对,如果一致,则session没有失效,如果不一致,则证明session对象失效了。
处理:重定向页面,使用户重新操作。

总结:

session解决了一个用户的不同请求的数据共享问题,只要JSESSIONID不失效和session对象不失效的情况下。用户的任意请求在处理的时候都能获取同一个session对象。
注意:JSESSIONID存储在cookie的临时存储空间中,浏览器关闭即失效。