Cookie对象和Session对象

会话技术

从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。会 话技术就是记录这次会话中客户端的状态与数据的。
会话技术分为Cookie和Session:

  • Cookie:数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端 可以清除cookie
  • Session:将数据存储到服务器端,安全性相对好,增加服务器的压力

  • 作用
    存储客户端状态

Cookie

将用户的数据存储到客户端的技术

服务器端向客户端发送一个Cookie

  1. 创建Cookie:
    Cookie cookie = new Cookie(String name,Stirng value);
  2. 设置Cookie在客户端过期时间
    Cookie.setMaxAge(intseconds)
    单位:s
  3. 设置Cookie的携带路径
    Cookie.setPath(String path)
    如果不设置携带路径,那么该cookie信息会在访问产生该cookie的 web资源所在的路径都携带cookie信息
  4. 向客户端发送Cookie
    response.addCookie(Cookie cookie);
  5. 删除客户端的Cookie:
    如果想删除客户端的已经存储的cookie信息,那么就使用同名同路径的持久化时 间为0的cookie进行覆盖即可

服务器端怎么接受客户端携带的Cookie

  1. 通过request获得所有的Cookie
    Cookie[] cookies = request.getCookies();
  2. 遍历Cookie数组,通过Cookie的名称获得我们想要的Cookie

    1
    2
    3
    4
    5
    for(Cookie cookie:cookies){
    if(cookie.getName().equals(cookieName)){
    String cookieValue = cookie.getValue();
    }
    }
  3. 方法

  • getName()
    获得Cookie名称
  • getValue()
    获得Cookie的值

Session

Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间 存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内 存空间。所以说Session的实现是基于Cookie,Session需要借助于Cookie存储客 户的唯一性标识JSESSIONID

获得Session对象

HttpSession session = request.getSession()
根据JSESSIONID判断该客户端是否在服务器上已经存在session了

向Session中存取数据

session也是一个域对象

  • session.setAttribute(String name,String value)
  • session.getAttribute(String name)
  • session.removeAttribute(String name)

Session对象的生命周期

  1. 创建
    第一次执行request.getSession()时创建
  2. 销毁
    • 服务器非正常关闭
    • session过期/失效(默认为三十分钟)
      可以在工程中配置:

      30
    • 手动销毁session
      session.invalidate();

方法

  1. isNew()
    判断当前session是不是新创建的
  2. invalidate()
    强制使Sessio对象无效
  3. getServletContext()
    返回ServletContext对象
  4. getLastAccessedTime()
    返回客户端最后一次发送与Session相关请求的时间
  5. getCreationTime()
    返回Session创建时间
  6. getID()
    返回与当前HttpSession对象关联的会话标识号
-------------本文结束,感谢您的阅读-------------
您的支持将鼓励我继续创作!!