cookie与session

2023-05-16

a.什么是cookie
浏览器在访问服务器时,服务器将一些数据以set-cookie 消息头的形式发送给浏览器。
浏览器会将这些数据保存起来。当浏览器再次访问服务器时,会将这些数据以cookie消息头的形式发送给服务器。通过这种方式,可以管理用户的状态。
b. 创建cookie
Cookie cookie = new Cookie(String name,String value);
response.addCookie(cookie);
c. 查询cookie
//如果没有cookie,则返回null。
Cookie[] cookies = request.getCookies();
String name = cookie.getName();
String value = cookie.getValue();
d. cookie保存时的编码问题
cookie的值只能是ascii字符,如果是中文,需要将中文转换成ascii字符形式。
可以使用URLEncoder.encode()方法和URLDecoder.decode()方法来进行这种转换。
e. 删除cookie
比如要删除一个name为"username"的cookie。
Cookie c = new Cookie("username","");
c.setMaxAge(0);
response.addCookie(c);
保存和查询Cookie流程
a. 浏览器向服务器发送addCookie请求 服务器中的AddCookieServlet创建了两个Cookie:cookie1和cookie2
b. 服务器端执行语句response.addCookie(cookie);
生成消息头“set-cookie”,并将两个Cookie以键值对的方式(“name=aaa”、“passwd=123”)存放在消息头中发送给浏览器
c. 浏览器将Cookie信息保存到本地内存中
d. 浏览器继续向服务器发送请求(带着消息头cookie) 服务器端的FindCookieServlet找到Cookie信息,并显示给浏览器
1什么是session
浏览器访问服务器时,服务器会 创建一个session对象(该对象有一个唯一的id, 一般称为 sessionId)。服务器在缺省情况下,会将sessionId以cookie机制发送给浏览器。当浏览器再次访问服务器时,会将sessionId发送给服务器。服务器依据sessionId就可以找到对应的session对象。通过这种方式,就可以管理用户的状态。
2如何获得session对象
HttpSession session = request.getSession();
3常用的API:
1) 获得sessionId。 String session.getId();
2) 绑订数据 session.setAttribute(String name,Object obj); (存敏感数据)
服务器在对session进行持久化操作时,比如钝化、激活,会使用序列化协议, obj最好实现Serializable接口 Object session.getAttribute(String name);
3) 如果name对应的值不存在,返回null。
session.removeAttribute(String name);
4)调用session.invalidate();方法将立即删除Session对象
4.流程
1) 浏览器向服务器发请求,访问某一个Servlet或JSP 服务器先查看包含于请求的 Cookie信息中(消息头是cookie)是否有sessionId(第一次访问时是没有的)
2) 浏览器第一次访问,服务器会创建一个Session对象,SomeServlet和该Session对象之间存在引用关系(即Servlet可以访问该Session对象了)
3) SomeServlet以Cookie的方式( 消息头为set-cookie)将SessionId响应给浏览器
4) 浏览器将SessionId保存到内存中
5) 当浏览器再次访问服务器时,请求中的Cookie信息中包含sessionId, SomeServlet会 根据sessionId找到对应的Session对象
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cookie与session 的相关文章

  • python:与cgi脚本中的会话交互

    python cgi 脚本可以向会话写入和读取数据吗 如果是这样怎么办 是否有高级 API 或者我必须推出自己的类 没有 session on cgi 如果您使用的是原始会话 则必须滚动自己的会话处理代码cgi 基本上 会话的工作原理是创建
  • 使用 3.0 SDK 在 FB 墙上发布

    各位程序员大家好 我在使用新的 Facebook SDK 时遇到了困难 场景是 我使用片段 所以我按照以下步骤操作 为什么 Android Facebook 界面不支持 Fragments https stackoverflow com q
  • 强制用户注销会话 PHP

    我似乎无法找到这个问题的直接答案 有没有办法强制登录用户注销 我的登录系统本质上只依赖于包含用户唯一 ID 存储在 mysql 数据库中 的会话 所以本质上只是 if isset SESSION user id echo You re lo
  • 如何使用 Spring Security 和 Spring Session 从多个服务器获取相同的会话

    很抱歉我的英语还是不太好 请耐心等待 希望您能理解我的问题 我有两个网络服务器 每个网络应用程序都是相同的 Web 服务器共享一台 Redis 服务器 我使用 Spring Security 和 Spring Session 当我登录第一台
  • 检查用户是否登录ajax页面更改

    作为我正在构建的网络应用程序的一部分 我需要在用户更改页面时检查用户是否已登录 在普通的非ajax站点上 这很容易 因为我可以将PHP会话条件语句放在标头中 并且在每次页面更改时调用的标头将确定是否显示登录页面 但将其视为头文件仅在 aja
  • 使用 google app-engine 跨浏览器/服务器重新启动会话持久性

    如何使会话在浏览器 服务器重新启动后持续存在 我正在使用谷歌应用程序引擎 每次重新启动浏览器和 或服务器时 我都会得到一个新的会话 ID String jSessionId this getThreadLocalRequest getSes
  • 无法加载请求的类:会话

    我的配置文件看起来像这样 gt config sess cookie name ci session config sess expiration 7200 config sess expire on close TRUE config s
  • 为什么呼叫会话不起作用? (代码点火器 3)

    我的配置是这样的 config sess driver database select database driver config sess save path ci sessions name of the mysql table co
  • 数组中的唯一条目

    我有以下内容将前 10 个 URL 存储到会话中 function curPageURL pageURL http if SERVER HTTPS on pageURL s pageURL if SERVER SERVER PORT 80
  • 如何检查 Rails 中的会话大小?

    我希望session size session length or session count工作 但它们都返回 未定义的方法 为什么 不是session a hash 那是好奇心 实际问题 有没有办法检查会话大小 以 KB 为单位 目前我
  • PHP 会话锁定并使用 Memcache 存储会话

    我有一个标准的 html 页面 其中有一些 img 标签 每个标签都指向我们服务器上的一个 php 文件 加载 php 文件时 它会在生成图像之前将一些数据保存到会话中 来自每个脚本的会话中的数据随后将在我们的应用程序中的其他脚本中使用 生
  • Struts 2 中的 Java 应用程序可以管理多少个会话?

    我正在开发事务管理应用程序 并且正在使用 Struts2 我在内部使用了一个会话来设置和获取值 例如 ActionContext getContext getSession put string string 在应用程序中使用这样的会话是否
  • Codeigniter - 检查用户是否已登录并存在(它是真实用户)

    我正在尝试在用户登录我的网站时为他们设置会话数据 因此 如果用户存在于数据库中 我将设置一个会话数据 例如 this gt session gt set userdata user exists 1 现在 每次我想检查用户是否存在并已登录时
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • .NET 中的 Cookie 和会话过期

    我有一个 MVC4 单一应用程序页面 登录页面有 3 个字段 用户 密码和 记住我 复选框 C 登录代码是这样的 if WebSecurity Login model UserName model Password persistCooki
  • 使用 ASP.NET 2.0 处理过期会话的最有效方法是什么

    在我们正在建设的网站上 当用户的会话结束时 我们需要能够将用户重定向到默认页面 乍一看 我们使用 Session End 和 Response Redirect 来完成这项工作 Sub Session End ByVal sender As
  • 非法尝试将集合与两个开放会话关联 流畅的 nhibernate

    我有这个异常 非法尝试将集合与两个打开的会话关联 每次我保存包含子集合的实体时都会引发该异常 我用谷歌搜索一下 我发现在调用保存时我打开了两个或多个会话 但我确定我只使用了一个会话 我哪里做错了 我该如何解决这个问题 注意 我使用的是 MV
  • 如何使用express在node.js中使浏览器关闭后会话过期?

    我在用 req session cookie maxAge 14 24 3600 1000 0 让会话在两周后过期 但现在我想让它在浏览器关闭后过期 有什么办法可以做到吗 来自连接会话中间件文档 https github com expre
  • 浏览器关闭时 Omniauth 会话过期

    在我的 Rails 3 应用程序中 我使用 Omniauth 进行用户身份验证部分 fb twitter 实际上我遵循这个 https github com RailsApps rails3 mongoid omniauth https g
  • 上游太大 - nginx + codeigniter

    我从 Nginx 收到此错误 但似乎无法弄清楚 我正在使用 codeigniter 并使用数据库进行会话 所以我想知道标题怎么会太大 有没有办法检查标题是什么 或者看看我能做些什么来修复这个错误 如果您需要我提供任何conf文件或其他文件

随机推荐

  • 关于vscode安装扩展插件提示:获取扩展失败,XHR error

    在我们安装vscode扩展插件时 xff0c 出现报错 xff1a error while fetching extensions XHR error 搜了很多网友的解决方案 xff0c 比如修改网络代理设置 xff0c 修改hosts文件
  • simulink模块,提供xpctarget下驱动源码

    simulink模块 xff0c 提供xpctarget下驱动源码 77999632700099250风中的蜗牛
  • SQL SERVER创建字段注释

    第一种方法是用SQL SERVER的管理工具 表设计中的列属性自带说明 xff0c 填写会自动生成注释 第二种方法 如果在navicat等工具上无法可视化创建注释的 xff0c 需要执行语句 EXEC sys sp addextendedp
  • Android平台上如何让应用程序获得系统权限以及如何使用platform密钥给apk签名

    您好 xff0c 欢迎关注我的专栏 xff0c 本篇文章是关于 Flutter 的系列文 xff0c 从简单的 Flutter 介绍开始 xff0c 一步步带你了解进入 Flutter 的世界 你最好有一定的移动开发经验 xff0c 如果没
  • Android 11 Settings源码入门,我就不信你还听不明白了

    前言 曾听过很多人说Android学习很简单 xff0c 做个App就上手了 xff0c 工作机会多 xff0c 毕业后也比较容易找工作 这种观点可能是很多Android开发者最开始入行的原因之一 在工作初期 xff0c 工作主要是按照业务
  • Linux破解密码

    1 重启虚拟机 xff0c 在引导界面按 e xff08 按鼠标左键 xff0c 用键盘控制上下 xff09 xff0c 进入类界面 xff0c 把中间的ro改为 rw rd break 2 按住Ctrl 43 x xff0c 进入紧急界面
  • “移除”虚拟机和“从磁盘中删除”虚拟机的区别

    1 二者的区别 xff1a 移除 虚拟机操作只是在虚拟机上删除了 xff0c 并没有在Windows系统中删除相关文件 xff0c 是部分删除 xff1b 而 从磁盘中删除 是既在虚拟机上删除了 xff0c 也删除了Windows系统中的相
  • Linux常用命令

    一条命令的结构 xff1a 用户名 64 主机名 工作目录 提示符 lt 命令 gt 选项 参数1 参数2 一 文件操作类命令 1 touch命令 xff1a 用于建立文件或更新文件的修改日期 1 语法格式 xff1a touch 参数 文
  • 内部类

    链接 xff1a https www nowcoder com questionTerminal 48524c47dd924887be6684b17175fa40 1 为什么使用内部类 使用内部类最吸引人的原因是 xff1a 每个内部类都能
  • CentOS 8本地离线YUM源的配置

    1 准备好CentOS 8相同版本号的系统镜像文件 2 添加光驱硬件 xff0c 在光驱中调用iso镜像文件 xff08 具体操作 xff1a 先打开设置里面的CD DVD xff0c 再点击使用ISO镜像文件 xff0c 选择浏览会跳转到
  • Linux操作系统:管理用户和组

    任务一 xff1a Linux用户类型和组群 1 Linux系统下的用户账户分为三种 超级用户 xff08 root xff09 xff1a 拥有系统的最高权限 xff0c 可以不受限制的对任何文件和命令进行操作 xff0c 对系统具有绝对
  • 在CentOS_8中添加新的硬盘

    添加新硬盘的具体步骤 xff1a 第一步 xff1a 第二步 xff1a 第三步 xff1a xff08 注意 xff1a 这里选择 SATA A xff0c 其优点是可随时使用 xff0c 无需重启 xff1b 而 SCSI S 需要重启
  • Linux下生产者消费者模型

    Linux下生产者消费者模型 一 什么是生产者消费者模型二 代码实现三 运行结果与修改 一 什么是生产者消费者模型 生产者消费者模型就是通过一个容器来解决生产者和消费者的强耦合问题 生产者和消费者彼此之间不直接通讯 xff0c 而通过阻塞队
  • 开发一个支持跨平台的 Kotlin 编译器插件

    前言 前面简单介绍了一下Kotlin编译器插件是什么 xff0c 以及如何一步一步开发一个Kotlin编译器插件 xff0c 但是之前开发的编译器插件是通过修改字节码的方式来修改产物的 xff0c 只支持JVM平台 今天主要在此基础上 xf
  • 逆变器原理

    逆变器是把直流电转变为交流电的一种装置 它一般包括逆变桥 控制逻辑和滤波电路组成 主要是把各种直流源转变为交流供交流负载使用 xff0c 一般直流源有蓄电池 干电池 太阳能电池等 xff0c 可以应用到不间断电源 UPS 太阳能发电转换等
  • Linux网络编程

    目录 网络编程基础 Internet历史 TCP IP协议基本概念 网络体系结构 TCP IP体系结构 TCP IP协议知识要点 TCP协议和UDP协议 网络编程预备知识 基于TCP协议的网络编程案例 基于UDP协议的服务器客户端编写 1
  • Android12动态控制SystemUI状态栏和导航栏

    要实现一个需求 在Android12上实现动态控制状态栏和导航栏的显示及隐藏 基本思路 在frameworks base 中增加想要的显示控制 在Settings增加开关按钮进行功能出发 一 在framework base 增加系统属性 用
  • Java—反射详解

    1 反射概念 反射本质就是反着来 反射 Reflection 是Java的特征之一 xff0c 它允许运行中的Java程序获取自身的信息 xff0c 并且可以操作类或对象的内部属性 通俗的来讲就是 xff1a 通过反射机制 xff0c 可以
  • png图片损坏打不开如何修复?

    png格式是我们生活中常用的格式 xff0c 可以用于存储不同的网络图形 数码照片和背景透明的图像 但常用的PNG文件格式有时也会有损坏的 xff0c 在这种情况下 xff0c 要保持冷静 xff0c 发现后先不要去尝试打开这些图片 xff
  • cookie与session

    a 什么是cookie 浏览器在访问服务器时 xff0c 服务器将一些数据以set cookie 消息头 的形式发送给浏览器 浏览器会将这些数据保存起来 当浏览器再次访问服务器时 xff0c 会将这些数据以cookie消息头的形式发送给服务