JavaWeb开发之路2

来源:互联网 发布:老外网红淘宝购物 编辑:程序博客网 时间:2024/05/19 16:34

http会话的基础cookie和session

  1. HTTP:无状态协议????????
  2. 四个属性值的作用范围:
    • pageContext:当前JSP页面
    • request:当前请求
    • session:一次会话
    • application:当前web应用
  3. cookie–存储在客户端内存或磁盘的缓存
    • 原理:当浏览器访问网站时,会将存在内存或者磁盘的cookies带入http请求中一并发出.并且能够将服务器返回的http相应报文中的cookies存入浏览器内存或者硬盘中.默认情况下,cookies是会话级别的.
    • API:
      1. 获取cookies:request.getCookies()
      2. 添加cookies:response.addCookies(new Cookies());
      3. 设置cookies在客户端存放的时间(磁盘):cookie.setMaxAge();//负数表示不存储,0表示立即删除,整数表示秒
    • cookies的作用范围:
      cookie.setPath().默认情况下只能作用与当前目录和当前目录的子目录.但不能作用于当前目录的上一级目录.其中/代表web站点的目录.可以通过request.getContextPath()来获取当前web应用在站点中的路径
  4. session–存储在服务器缓存
    • 保存session的方式:cookie和url重写
    • 原理:在客户第一次访问浏览器时,会生成一个名为JESESSION的cookie,放在response中返回给客户.客户下次访问的时候就会带着这个cookie,然后浏览器通过JESESSION的值找到对应的此次会话的session.
    • session的创建:
      1. 当用户访问servlet时,如果调用了request.getSession()或者request.getSession(true)就会创建session.若仅仅调用request.getSession(false),则如果有session获取,如果没有返回null,并不会创建新的.
      2. 对于JSP通过标签 <%@page session=”true/false”/>控制当前servlet会不会生成session和能否使用session隐藏对象.若为true,在生成的servlet中实际调用的是pageContext.getSession,request.getSession(false).??????????
    • session的销毁:
      1. invalidate方法主动销毁
      2. 卸载web应用
      3. setMaxInactiveInterval(默认情况下是全局的web.xml 30min)
      4. web.xml文件中设置< session-config>标签 
    • session的相关API:
      1. getId()//获取session的id号
      2. inNew()//是否为新创建的
      3. getMaxInactiveInterval()//最大活跃时间限制
      4. getCreateTime()//创建时间
      5. getLastAcessTime()//最后获得时间
      6. set/getAttribute()//放置attribute,常用