啥是Session?

什么是 Session 会话?

1、Session 就一个接口(HttpSession)。
2、Session 就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。
3、每个客户端都有自己的一个 Session 会话。
4、Session 会话中,我们经常用来保存用户登录之后的信息。

如何创建和获取 Session

如何创建和获取 Session。它们的 API 是一样的。
request.getSession()

第一次调用是:创建 Session 会话
之后调用都是:获取前面创建好的 Session 会话对象。

isNew(); 判断到底是不是刚创建出来的(新的)

true 表示刚创建
false 表示获取之前创建

每个会话都有一个身份证号。也就是 ID 值。而且这个 ID 是唯一的。
getId() 得到 Session 的会话 id 值。

Session 域数据的存取

//保存数据
protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
  req.getSession().setAttribute("key1", "value1");
  resp.getWriter().write(" 已经往 Session 中保存了数据");
}
//获取数据
protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
  Object attribute = req.getSession().getAttribute("key1");
  resp.getWriter().write("从 从 Session 中获取出 key1 的数据是:" + attribute);
}

Session 生命周期控制

public void setMaxInactiveInterval(int interval) 设置 Session 的超时时间(以秒为单位),超过指定的时长,Session就会被销毁。

值为正数的时候,设定 Session 的超时时长。
负数表示永不超时(极少使用)

public int getMaxInactiveInterval()获取 Session 的超时时间
public void invalidate() 让当前 Session 会话马上超时无效。
Session 默认的超时时长是多少?

Session 默认的超时时间长为 30 分钟。
因为在Tomcat服务器的配置文件web.xml中默认有以下的配置,它就表示配置了当前Tomcat服务器下所有的Session超时配置默认时长为:30 分钟。


30

如果说。你希望你的 web 工程,默认的 Session 的超时时长为其他时长。你可以在你自己的 web.xml 配置文件中做以上相同的配置。就可以修改你的 web 工程所有 Seession 的默认超时时长。


20

如果你想只修改个别 Session 的超时时长。就可以使用上面的 API。setMaxInactiveInterval(int interval)来进行单独的设置。
session.setMaxInactiveInterval(int interval)单独设置超时时长。
Session 超时的概念:

啥是Session?

示例代码:

protected void life3(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
  // 先获取 Session 对象
  HttpSession session = req.getSession();
  // 设置当前 Session3 秒后超时
  session.setMaxInactiveInterval(3);
  resp.getWriter().write(" 当前 Session 已经设置为 3 秒后超时");
}

Session 马上被超时示例:

protected void deleteNow(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
  // 先获取 Session 对象
  HttpSession session = req.getSession();
  // 让 Session 会话马上超时
  session.invalidate();
  resp.getWriter().write("Session 已经设置为超时(无效)");
}

浏览器和 Session 之间关联的技术内幕 之间关联的技术

啥是Session?

欢迎关注公众号:愚生浅末。

Original: https://www.cnblogs.com/kohler21/p/16735804.html
Author: 愚生浅末
Title: 啥是Session?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599526/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • NO.2 Windows桌面图标-间距参数调整

    遇到如下问题: 桌面图标自动排序后间隔过大,且如图二这种指向图标能看到图标之间的间隔虚框,此方法可调整虚框的水平和垂直距离,即调整图标之间的间距。 测试电脑: 华为 mateboo…

    数据库 2023年6月14日
    0101
  • 三分钟图解事务隔离级别,看一遍就懂

    前文说过,”锁” 是数据库系统区别于文件系统的一个关键特性,其对象是 事务,用来锁定的是数据库中的对象,如表、页、行等。锁确实提高了并发性,但是却不可避免地…

    数据库 2023年5月24日
    0120
  • MySQL的B+树索引和hash索引的区别

    简述一下索引: 索引是数据库表中一列或多列的值进行排序的一种数据结构;索引分为聚集索引和非聚集索引,聚集索引查询类似书的目录,快速定位查找的数据,非聚集索引查询一般需要再次回表查询…

    数据库 2023年5月24日
    092
  • Golang实现set

    Golang语言本身未实现set,但是实现了map golang的map是一种无序的键值对的集合,其中键是唯一的 而set是键的不重复的集合,因此可以用map来实现set 由于ma…

    数据库 2023年6月14日
    072
  • Linux磁盘分区和挂载

    磁盘分区和挂载 挂载概念 在linux操作系统中,挂载是一个非常重要的功能,使用非常频繁。 它指将一个设备(通常是存储设备)挂接到一个已存在的目录上。需要理解的是,linux操作系…

    数据库 2023年6月16日
    085
  • 适用于顺序磁盘访问的1分钟法则

    预备知识梳理 本文中设定 block size 与 page size 大小相等。 什么是 Block 文章的开始先解释一下,磁盘的数据读写是以扇区 (sector) 为单位的,而…

    数据库 2023年6月14日
    099
  • 自定义表单 动态表单 表单设计器 流程引擎 设计方案

    作流模块——————————- 1.模型管理 :web在线流…

    数据库 2023年6月6日
    080
  • java.sql.SQLException: The server time zone value is unrecognized

    在写Mysql数据库连接工具的时候出现了这样的报错,其实原因写的挺清楚的 就是在连接的时候没有加上时区的信息; 解决办法就是在JDBC连接的URL里面加上serverTimezon…

    数据库 2023年6月6日
    086
  • Null和空值对于avg计算时产生的影响以及处理

    为什么要关注这一块呢:1.面试中可能会有涉及 2.工作中真的也可能会用,既然有可能我也用过,就拿出来跟大家分享一下,上一篇的博文,数据已准备好就不做数据准备的介绍了。 step1:…

    数据库 2023年6月6日
    0106
  • flowable 查询、完成、作废、删除 任务

    /** * 查询我的任务 * from fhadmin.cn * @param USERNAME * @return 返回任务列表 */ protected List findMy…

    数据库 2023年6月6日
    0215
  • Mysql 实现数据库读写分离

    一、Amoeba 是什么 Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、…

    数据库 2023年5月24日
    097
  • ArrayList

    ArrayList与数组的区别: 1. 数组和ArrayList的本质区别在于前者是类型安全的,而后者是类型不安全的.2. ArrayList为了兼容所有类型对象,使用了Objec…

    数据库 2023年6月16日
    0100
  • 绕过国内域名备案

    情景:现有域名jsw.top,云服务器1台均在阿里云下。域名jsw.top、www.jsw.top CNAME解析到阿里云OSS的记录值(阿里云OSS会要求备案,导致无法使用),而…

    数据库 2023年6月14日
    093
  • mysql数据类型与表操作

    一、mysql基本认知 创建用户 create host aa identified with mysql_native_password by ”; 修改用户权限 a…

    数据库 2023年5月24日
    093
  • pg 锁表

    select * from pg_catalog.pg_stat_activity where usename =’gis_bd_app’ and wait…

    数据库 2023年6月6日
    0105
  • 数据库基本知识和MySQL

    数据库的基本知识和MySQL 数据库 数据库 (database) 指保存有组织的数据的容器,人们一般情况说的数据库指的是数据库软件,即数据库管理系统 (DBMS) ,而数据库实确…

    数据库 2023年6月16日
    0134
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球