前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >17-Session

17-Session

作者头像
Ywrby
发布2022-10-27 13:17:11
1780
发布2022-10-27 13:17:11
举报
文章被收录于专栏:Ywrby

Session

概念

服务器端会话技术,再一次对话的多次请求间共享数据,数据存储在服务器端的对象中(HttpSession)

基本用法

获取HttpSession对象

代码语言:javascript
复制
HttpSession session=request.getSession();

使用HttpSession对象

代码语言:javascript
复制
//存储数据
session.setAttribute("msg","hello_world");
//获取数据
Object msg=session.getAttribute("msg");
//移除数据
session.removeAttribute("msg");

原理

Session的实现依赖于Cookie,在一次会话中,第一次请求Session的过程中,服务器端会创建一个Cookie对象,用来存储该Session的ID,并写入响应头返回到客户端,在客户端下次访问时,服务器端检测到该Cookie并读取Session的ID,就能够在浏览器端找到该Session并返回客户端

注意

客户端关闭后,服务器端不关闭的情况下,两次获取的Session默认情况下不是同一个,也就不能共享数据(这是因为客户端关闭,代表一次会话结束,同时携带JSESSIONID的cookie也被销毁,所以Session失效)

通过创建一个同名Cookie并设置Cookie的持久化处理,可以解决上面的问题

代码语言:javascript
复制
//获取Session
HttpSession session=request.getSession();
//创建JSESSIONID的Cookie 设置最大存活时间
Cookie cookie=new Cookie("JSESSIONID",session.getId());
cookie.setMaxAge(60*60);
response.addCookie(cookie);
//存储数据
session.setAttribute("msg","hello_world");

服务器端关闭的情况下,两次获取的Session对象不是同一个,但要保证数据不丢失,所以服务器端会进行Session的钝化与活化

  • Session的钝化:在服务器正常关闭之前,将服务器上的Session对象序列化到硬盘中
  • Session的活化:在服务器启动后,将硬盘中的Session文件转化为内存中的Session对象

Session被销毁的情况

  • 服务器关闭
  • session对象调用invalidate方法
  • session默认失效时间30min

特点

  1. session用于存储一次会话的多次请求的数据,存储在服务器端
  2. session可以存储任意类型,任意大小的数据

Session与Cookie的区别

  1. Session存储数据在服务器端,Cookie在客户端
  2. Session对存储数据的类型和大小没有限制,Cookie有限制
  3. Session更安全,Cookie相对而言不安全
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Session
    • 概念
      • 基本用法
        • 原理
          • 注意
            • 特点
              • Session与Cookie的区别
              相关产品与服务
              数据保险箱
              数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档