session保存作用域,作用范围是一次会话。

Session的工作机制

  • 当服务器端调用了request.getSession()方法

    • 检查当前请求中是否携带了JSESSIONID这个Cookie

      • 有携带:根据这个JSESSIONID在服务器端查找对应的Session对象

        • 能找到:把找到的Session作为getSession()方法的返回值返回
        • 找不到:
          • 创建新的Session对象
          • 用新的JSESSIONID的值创建Cookie
          • 把新的Cookie返回给浏览器
      • 没携带:
        • 创建新的Session对象
        • 用新的JSESSIONID的值创建Cookie
        • 把新的Cookie返回给浏览器

Session的时效性

①Session对象为什么要有时效限制?

如果没有时间限制,Session对象数量会快速膨胀,随着访问网站的用户越来越多,Session对象只创建不释放,一定会在某个时间耗尽服务器端的资源。

②Session时效性机制

这个机制的设计很巧妙,它是一个柔性的机制,既避免Session对象无节制的创建耗尽服务器端内存空间,又保证了用户在持续使用Session时Session对象一直都在,不会打断用户的操作。

  • 每一个Session对象从创建出来就开始倒计时
  • 在倒计时的过程中,一旦有请求访问了这个Session,倒计时清零重新开始
  • 一旦一个Session对象的倒计时结束,那么这个Session对象就会被释放

③Session时效性方法

  • setMaxInactiveInterval(int interval)设置Session最大的过期时间,interval是一个以秒为单位的过期时间。
  • 最大空闲时间默认为1800秒,即半个小时。
  • invalidate()立即释放Session对象

voidHttpSession.setAttribute(k, v):向session中保存信息。

ObjectHttpSession.getAttribute(k):从session中获取信息。

- session保存作用域是和具体的某一个session对应的
- 常用的API:

long getCreationTime();【获取Session被创建时间】

String getId();【获取Session的id】

long getLastAccessedTime();【返回Session最后活跃的时间】

ServletContext getServletContext();【获取ServletContext对象】

void setMaxInactiveInterval(int var1);【设置Session超时时间】

int getMaxInactiveInterval();【获取Session超时时间】

Object getAttribute(String var1);【获取Session属性】

Enumeration getAttributeNames();【获取Session所有的属性名】

void setAttribute(String var1, Object var2);【设置Session属性】

void removeAttribute(String var1);【移除Session属性】

void invalidate();【销毁该Session】

boolean isNew();【该Session是否为新的】

session保存作用域的更多相关文章

  1. HTTP协议,会话跟踪,保存作用域,servlet类跳转

    解决post的编码问题,防止中文乱码 request.setCharacterEncoding("utf-8"); HTTP协议: (1)由Request(请求)和Response ...

  2. session保存用户信息

    前台jsp-------------- <%@ page import="com.manager.form.User" %><%User user = reque ...

  3. PHP SESSION 保存到数据库

    PHP SESSION 的工作原理 在客户端(如浏览器)登录网站时,被访问的 PHP 页面可以使用 session_start() 打开 SESSION,这样就会产生客户端的唯一标识 SESSION ...

  4. discuz清空session,导致session保存机制失败,session无法更新与解决

    <?php function userErrorHandler() { $e = func_get_args(); echo '<pre style="color:red;&qu ...

  5. Django 通过 session 保存个人信息

    通过 session 保存 个人 信息 登录的视图函数中: def login(request): ''' 登录 ''' err, user, pwd = '', '', '' if request. ...

  6. php将session保存到数据库的类实例(php版本需要大于5.4)

    这里实现了一个把session存储到数据库的类,包括数据表的创建.类的使用.php的配置. 可以更好地进行用户控制管理. 做项目的时候,有一个需求,是要实现禁止一个账号两处登录.同时要统计当前在线用户 ...

  7. Session保存用户名到Session域对象中

    Session保存用户名 1.构造登录界面 用户名: 密   码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <!DOCTYPE html> < ...

  8. Application保存作用域

    Application保存作用域,作用范围:一次应用程序范围有效.Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据. ServletContext在服务器启动时创建,在服 ...

  9. Request保存作用域

    Request保存作用域,作用范围是在当前请求中有效. 1.客户端重定向 2.服务器内部转发

随机推荐

  1. 业务可视化-让你的流程图"Run"起来(6.定时任务&Spring-Batch的集成)

    前言 首先,感谢大家对上一篇文章[业务可视化-让你的流程图"Run"起来(5.SpringBoot集成&微服务编排)]的支持. 分享一下近期我对这个项目的一些改进. 在项目 ...

  2. error setting certificate verify locations

    描述 在使用 git clone 克隆 GitHub 或者 Gitee 上的项目时,报如下错误: error setting certificate verify locations: CAfile: ...

  3. Win32 - 窗口

    Win32 - 窗口 目录 Win32 - 窗口 前言 流程图 创建项目 VS MinGW Win32API字符串 Unicode 和 ANSI 函数 TCHAR WinMain:Win32 Appl ...

  4. 清晰梳理最全日志框架关系与日志配置-SpringBoot 2.7.2 实战基础

    优雅哥 SpringBoot 2.7.2 实战基础 - 07 - 日志配置 Java 中日志相关的 jar 包非常多,log4j.log4j2.commons-logging.logback.slf4 ...

  5. .Net Core使用Coravel实现任务调度

    前言 前段时间需要在一个新项目里添加两个后台任务,去定时请求两个供应商的API来同步数据:由于项目本身只是一个很小的服务,不太希望引入太重的框架,同时也没持久化要求:于是我开始寻找在Quartz.Ne ...

  6. HCNP Routing&Switching之MAC安全

    前文我们了解了GRE over IPSec 相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16601491.html:今天我们来聊一聊mac安全相关话 ...

  7. Mybatis-Plus使用@TableField实现自动填充日期

    一.前言 我们在日常开发中经常使用ORM框架,比如Mybatis.tk.Mybatis.Mybatis-Plus.不过最广泛的还是Mybatis-Plus,我们的一些表,都会有创建时间.更新时间.创建 ...

  8. .NET 7 性能改进 -- 至今为止最快的.NET平台

    2022年8月31日 Stephen Toub 发布的关于 .NET 7 性能改进的博客, 核心主题是 .NET 7 速度很快. 这篇博客非常的长,我尝试将它拷贝到Word 里,拷贝的时间都花了几分钟 ...

  9. Makefile 文件的编写

    目录 目录 Makefile 编写规则 Makefile 编写规则 生成的目标文件:依赖文件 生成目标文件所需执行的动作(注:命令行前需加Tab推进) 例: VPATH=inc src main:ma ...

  10. 【ACG】博主在专栏更新内容后,及时通知关注他的用户去阅读

    ​ 业务场景 当用户打开应用时,系统发送Push消息给用户,向用户推荐博主信息.用户关注博主后,将保存用户的订阅信息,当关注的博主更新内容时,向订阅的用户发送短信,提醒用户及时查看最新内容.从而持续增 ...