JavaEE之会话

会话跟踪

  • 会话跟踪技术是为了解决http“无状态”特征所提出的一张解决方案,从开发者角度来讲,就是客户端上一次请求所传递的数据,如果持续到下一次请求,使服务器端可以通过传递的数据辨别出是否是同一个客户端
  • 什么是一次会话
  • 会话跟踪技术
    • Cookie
    • Session
    • URL重写
    • 隐藏表单域提交
  • Cookie技术
    • Cookie技术是在客户端浏览器保持会话跟踪技术的一种解决方案。用户第一次请求服务器时,服务器端将Cookie添加到响应中,浏览器接收到响应后会将其中的Cookie存起来(浏览器内存或者客户端的硬盘上),下一次请求会将Cookie自动加入到请求中
    • Cookie的使用
      • 创建Cookie对象
        • Cookie userid= new Cookie("userid","1000001");
      • 设置Cookie的属性
        • setPath(url);设置Cookie的有效访问路径,如果传入“/”,同一个容器中,所有的应用都能访问该Cookie,如果不设置访问路径,默认只能由创建的应用访问。
        • setMaxAge(seconds) 设置Cookie的有效时间,单位为秒。如果为整数,则过seconds秒后删除Cookie,如果为负数,表示该Cookie为临时Cookie,关闭浏览器即失效。默认为-1.
        • setValue(newvalue) 设置Cookie的值
          • Cookie的值不能设置为非ASCII码
      • 将Cookie加入到响应中
        • resp.addCookie(cookie)将cookie对象加入到响应中返回给浏览器
      • 获取浏览器请求携带的cookie
        • req.getCookies() 获取请求对象中的Cookie数组
          • cookie.getName()获取cookie中属性名
          • cookie.getValue() 获取cookie中的值
    • Cookie技术的特点
  • Session会话跟踪
    • Session会话是使用HttpSession对象,将数据存储在服务器的一种会话跟踪的解决方法
    • 用户在第一次访问服务器(Servlet,jsp)的时候,web容器会创建一个HttpSession对象,在用户与服务器之间的多次交互都属于同一次会话,共享该HttpSession对象,除非HttpSession失效(开发者调用invalidate,或超出了会话的最大不活动时间)
    • 获取HttpSession对象
      • 通过请求对象的getSession()方法获取Session对象
        • req.getSession();
      • HttpSession常用的方法
        • setAttribute(name,value) 往session域中添加名为name值为value的属性
        • getAttribute(name) 获取session域中名为name的属性值
        • removeAttribute(name) 从session中删除名为name的属性值
        • invalidate()令session失效
        • setMaxInactiveinterval(seconds)设置session的最大不活动时间(单位为秒),超出该时间没有狡猾的话,session,默认30分钟
        • getMaxInactiveinterval()获取session的最大不活动时间
    • Session的生命周期
      • 从session会话建立开始,一直到session会话失效称为session的会话周期,session声明周期的结束有以下几种情况:
        • 1、超出session的最大不活动时间,没有任何操作,session失效
        • 2、代码中通过session对象调用invalidate()方法,使sesson失效
        • 3、浏览器关闭,对应的session也失效
      • 设置session的失效时间(优先级从高到低,影响范围从小到大)
        • 在代码中使用setMaxInactiveInterval()设置,单位是秒,设置为-1代表永不过期
          • session.setMaxInactiveInterval(15*60);//设置15分钟
        • 在web.xml中通过设置如下标签的值来设置session的失效时间,单位是分钟

          •       15
        • 直接改tomcat中conf/web.xml中的配置(这样更改所有tomcat容器中的session的失效时间)

          •       15
  • URL重写技术
    • 当浏览器禁用了Cookie,这种情况下,Cookie或者Session的会话跟踪就会失效,这种情况下,可以使用url重写技术来进行会话跟踪
    • encodeURL() 可以对任何url进行重写
    • encodeRedirectUrl() 针对重定向的url进行重写
    • 重写过程中,如果浏览器禁用Cookie,则在重写URL时会加入jsessionid便于服务器端进行会话跟踪,如果浏览器没有禁用cookie,则重写url时,不会加入jsessionid
  • 隐藏表单域技术

 

你可能感兴趣的:(JavaEE)