学习笔记 —— 会话跟踪cookie、session

常用的会话跟踪技术

HTTP是一种无状态的协议,为了分辨链接是谁发起的,需自己去解决这个问题。不然有些情况下即使是同一个网站每打开一个页面也都要登录一下。而Session和Cookie就是为解决这个问题而提出来的两个机制。

cookiesession
存在于存储数据在客户端(不安全)存储数据在服务器
存储数据存储数据有限(4kb),且cookie只能存储字符串 类型的对象数据大小不受限制 ,可存储任意的 java 对象
数量限制一个网站可以存 20个 cookie没有限制
性能Cookie存在客户端对服务器没影响Session过多时会消耗服务器资源,大型网站会有专门Session服务器
失效时间暂时性cookie:存储到浏览器缓存中(浏览器关闭时失效),永久性cookie :可设置时间 setMaxAge() 时间单位是 cookie.setMaxAge(0); //0表示当前的cookie失效设置失效时间:以最后一次操作时间起算 setMaxInactiveInterval(1800);//秒 ,invalidate();//无条件让session失效

1. cookie:

  • 存储数据在客户端(key-value)
    通过服务器的程序Servlet把cookie对象存到客户端
  • 不安全,存储数据有限:4kb
  • 一个网站可以存 20个 cookie

1.1 设置cookie

  • cookie存的数据只能是字符串
  • new Cookie(key,value)
  • 存中文:要编码和解码,否则会乱码
    • 编码:URLDecoder.decode(“value”,“UTF-8”);
    • 解码:URLEncoder.encode(“value”,“UTF-8”);
  • response.addCookie(cookie);
    在这里插入图片描述
    在这里插入图片描述
    设置永久性cookie:
    在这里插入图片描述
    在这里插入图片描述

1.2 获取cookie

  • request.getCookies();
  • cookie.getName()
  • cookie.getValue()
    在这里插入图片描述
    在这里插入图片描述

1.3 cookie失效

  • 暂时性 cookie:存储到浏览器缓存中。浏览器关闭时失效
  • 永久性 cookie :可设置时间 setMaxAge()
    * cookie.setMaxAge(1800);// 时间单位是
    * cookie.setMaxAge(0); //0表示当前的cookie失效

练习:免登录功能

LoginServlet:
在这里插入图片描述
login.jsp
在这里插入图片描述
ok.jsp
在这里插入图片描述

2. session

requestsessionapplication
生命周期一次请求响应一次会话和web应用生存周期相同
  • 存储数据在服务器
  • 数据大小不受限制
  • 服务器和客户端连续的会话(请求响应)过程
  • 需要管理数据(会话管理)。
  • HTTPSession没有父接口

2.1 获取session对象

  • request.getSession()
  • request.getSession(boolean)
    • request.getSession(true)
      第一次调用此方法,表示创建一个session对象,
      之后再去调用此方法,表示获取之前创建的对象
      getSession()和 getSession(true)形同
    • request.getSession(false)
      如果之前创建过session对象,则返回session对象,如果没有,那么返回null(不创建对象

2.2 session常用方法

  • isNew() // 返回true,是新创建的对象
  • getId());//sessionid
  • getMaxInactiveInterval()); //session最长有效时间
  • getCreationTime()); // 创建session的时间
  • getLastAccessedTime())); // 最后访问时间
    在这里插入图片描述

2.3 存储数据

  • setAttribute
  • getAttribute
  • removeAttribute

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 session失效

  • 默认(分钟)
    < session-config>
    < session-timeout> 30 < /session-timeout>
    < /session-config>
  • 设置失效时间
    以最后一次操作时间起算
    • session.setMaxInactiveInterval(1800);//秒
    • session.invalidate();//无条件让session失效

2.5 工作原理

  • 第一次创建session对象时,会产生唯一的id,以cookie对象的方式响应到客户端
    (id作为cookie对象的value,JSESSIONID作为key,封装成cookie对象,new Cookie(“ISESSIONID”,session.getId())
  • 默认放在浏览器的缓存中,作为客户端header信息的一部分,以request header的形式存起来。
  • 再通过该浏览器发送请求时,request header把请求发送给服务器端;
  • 根据JSESSIONID,找到session对象,如果有,返回,如果没有,创建一个新的session对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值