计算机网络(cookie与session)

5、其他相关

5.1 Session原理

session 可以放在文件、内存中或数据库都可以,是以键值对的形式存储。Session 也是一种 key-value 的属性对。
当程序需要为某个客户端的请求创建一个 session 的时候,服务器首先检查这个客户 端的请求里是否已包含了一个 session 标识 - 称为 session id,如果已包含一个 session id 则说明以前已经为此客户端创建过 session,服务器就按照 session id 把这个 session 检索 出来使用(如果检索不到,可能会新建一个,根据 getSession()方法的参数),如果客户 端请求不包含 session id,则为此客户端创建一个 session 并且生成一个与此 session 相关 联的 session id,这个 session id 将被在本次响应中返回给客户端保存。

  • session的客户端实现方法(session id的保存):
    1、使用cookie保存
    2、url重写:就是把 session id 直接附加在 URL 路径的后面,也就是像我们经常看到 JSP 网站会有 aaa.jsp?JSESSIONID=*一样的。
    3、在页面表单里增加隐藏域
    在这里插入图片描述
  • session被创建的时间:
    一个常见的错误是以为 session 在有客户端访问时就被创建,然而事实是直到某 server 端程序(如 Servlet)调用 HttpServletRequest.getSession(true)这样的语句时才会被创建。
  • session被删除的时间:
    A.程序调用 HttpSession.invalidate()
    B.距离上一次收到客户端发送的 session id 时间间隔超过了 session 的最大有效时间
    C.服务器进程被停止
  • getSession()/getSession(true)、getSession(false)的区别:
    getSession()/getSession(true):当 session 存在时返回该 session,否则新建一个 session 并返回该对象。
    getSession(false):当 session 存在时返回该 session,否则不会新建 session,返回 null。

5.2 cookie的机制

1、cookie的种类

  • .以文件方式存在硬盘空间上的永久性的 cookie。
  • 停留在浏览器所占内存中的临时性的 cookie。

2、cookie的有效期
maxAge 决定着 Cookie 的有效期,单位为秒。

  • 当maxAge属性为正
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值