细谈会话管理-----Cookie和Session
一、怎么定义一次会话?
我们打开我们的浏览器,我们中间访问很多网页,直到我们关闭浏览器,就意味着会话结束。所以一次会话就是打开浏览器到关闭浏览器这个过程。
二、会话管理到底都管理什么?
管理浏览器端和服务器端之间会话过程中产生的会话数据。
三、Cookie技术和Session技术的主要区别在于何处?
- Cookie技术:会话数据保存在浏览器端
- Session技术:会话数据保存在服务器端
四、细说Cookie技术篇
4.1、Cookie类的学习:
1、构造Cookie对象
Cookie(java.lang.String name, java.lang.String value)
2、设置Cookie
void setPath(java.lang.String uri) :设置cookie的有效访问路径 void setMaxAge(int expiry) : 设置cookie的有效时间 void setValue(java.lang.String newValue) :设置cookie的值
3、发送cookie到浏览器端保存
void response.addCookie(Cookie cookie) : 发送cookie
4、服务器端接收cookie
Cookie[] request.getCookies() : 接收cookie
4.2、Cookie原理
1、服务器创建cookie对象,把会话数据存储到cookie对象中。
new Cookie("name","value");
2、服务器发送cookie信息到浏览器
response.addCookie(cookie);
举例: set-cookie: name=eric (隐藏发送了一个set-cookie名称的响应头)
3、浏览器得到服务器发送的cookie,然后保存在浏览器端。
4、浏览器在下次访问服务器时,会带着cookie信息
举例: cookie: name=eric (隐藏带着一个叫cookie名称的请求头)
5、服务器接收到浏览器带来的cookie信息
request.getCookies();
4.3 Cookie的一些细节
1、void setPath(java.lang.String uri):设置cookie的有效访问路径。有效路径指的是cookie的有效路径保存在哪里,那么浏览器在有效路径下访问服务器时就会带着cookie信息,否则不带cookie信息。
2、void setMaxAge(int expiry) : 设置cookie的有效时间。
- 正整数:表示cookie数据保存浏览器的缓存目录(硬盘中),数值表示保存的时间。
- 负整数:表示cookie数据保存浏览器的内存中。浏览器关闭cookie就丢失了!!
- 零:表示删除同名的cookie数据
3、Cookie数据类型只能保存非中文字符串类型的。可以保存多个cookie,但是浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。
五、细说Session技术篇
HttpSession session = request.getSession();
5.1、代码解读:
1、第一次访问创建session对象,给session对象分配一个唯一的ID,叫做JSESSIONID。
new HttpSession();
2、把JSESSIONID作为Cookie的值发送给浏览器保存
Cookie cookie=new Cookie("JSESSIONID",sessionID); response.addCookie(cookie);
3、第二次访问的时候,浏览器带着JSESSIONID的cookie访问服务器
4、服务器得到JSESSIONID,在服务器的内存中搜索是否存放对应编号的session对象
if(找到){return map.get(sessionID);} <String,HttpSession>]<"s001", s1> <"s001,"s2>
5、如果找到对应编号的session对象,直接放回对象
6、如果找不到对应编号的session对象,创建新的session对象继续走流程1.
5.2、Session细节
1、java.lang.String getId() : 得到session编号
2、两个getSession方法:
getSession(true) / getSession() : 创建或得到session对象。没有匹配的session编号,自动创 建新的session对象。
getSession(false): 得到session对象。没有匹配的session编号,返回null
3、void setMaxInactiveInterval(int interval): 设置session的有效时间
session对象销毁时间:
3.1 默认情况30分服务器自动回收
3.2 修改session回收时间
3.3 全局修改session有效时间
3.4.手动销毁session对象
void invalidate() : 销毁session对象
修改session全局有效时间:分钟 --> <session-config><session-timeout>1</session-timeout> </session-config>
4、如何避免浏览器的JSESSIONID的cookie随着浏览器关闭而丢失的问题
/** 手动发送一个硬盘保存的cookie给浏览器*/ Cookie c = new Cookie("JSESSIONID",session.getId()); c.setMaxAge(60*60); response.addCookie(c);
转载于:https://www.cnblogs.com/lyjs/p/5057035.html
细谈会话管理-----Cookie和Session相关推荐
- 5G NGC — 会话管理模型 — PDU Session
目录 文章目录 目录 5G 的会话管理模型 PDU Session PDU Session 的类型 Ethernet Type Unstructured Type DNN 的作用 UE IP 地址的分 ...
- 四、PHP基础——会话技术Cookie 和 Session
会话技术初步认识 会话技术介绍 web会话可简单理解为:用户开一个浏览器,访问某一个web站点,在这个站点点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. HTTP协 ...
- 次世代的会话管理项目 Spring Session
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文来自云+社区翻译社,由Tnecesoc编译. 会话管理一直是 Java 企业级应用的重要部分.不过在很长的一段时间里,这一部分都被我们认 ...
- Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)
概述 web 服务器.项目.资源概述 web 服务器:可以被浏览器访问到的服务器 常见的 web 服务器: tomcat:中小型的服务器软件,免费开源,支持 JSP 和 Servlet apache ...
- 会话管理-2.1.Session介绍
1.Session是什么? 客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上.这就是Session. 客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了, ...
- java ee会话_Java EE会话技术Cookie和Session
会话技术 一.定义 会话技术是帮助服务器记住客户端状态的(区分客户端的).将客户访问的信息存在本地的叫Cookie技术,存在服务器上的叫Session技术. 注意: 一次会话何时开始?从打开一个浏览器 ...
- Java Web之会话管理二:Session
一.Session 在web开发中,服务器可以为每个yoghurt浏览器创建一个会话对象(Session)对象.注意:一个浏览器独占一个Session对象.因此,在需要保存用户数据时,服务器程序可以把 ...
- PHP会话管理——Session和Cookie
会话管理包括:Session和Cookie,主要功能都是把客户端和服务器关联起来,用于管理和查看用户在网站中的状态. 背景 Web应用程序是使用HTTP协议传输数据的.HTTP协议是无状态的协议.一旦 ...
- Java中的会话管理– HttpServlet,Cookie,URL重写
Session Management in Java Servlet Web Applications is a very interesting topic. Session in Java Ser ...
- 大数据WEB阶段(十二)会话技术、Cookie、Session及两者的区别
会话技术 – Cookie与Session及其两者的区别 (一)会话技术 一.概述 1. 一个浏览器为了实现某一个功能对服务器产生了多次请求响应.从第一个请求开始访问服务器,会话开始,到最后一个页面访 ...
最新文章
- SAP 4.6C升级ECC6.0 WS_QUERY 的改法
- opencv 编译安装时出现报错 modules/videoio/src/cap_ffmpeg_impl.hpp:585:34: error: ‘AVStream {aka struct AVStre
- 上海GDD(谷歌开发者大会),第一天总结
- mysql 有关的文件
- VS code 快捷键常用
- p6spy oracle,MyBatis集成P6Spy显示实际的SQL(代码教程)
- w10系统asp服务器搭建,win10系统搭建asp环境的操作方法
- 用python制作上海疫情评论词云图-自定义形状
- HTML+CSS简单漫画网页设计成品 蜡笔小新3页 大学生个人HTML网页制作作品
- SIP12 脚 电磁隔离放大器IC 模拟信号隔离放大器 电磁耦合隔离放大器
- iOS开发工程师常见面试题及答案
- 前端小白写了个网页版五子棋游戏,使用原生 JS + Canvas 实现绘制棋子、棋盘
- ปอเช็ตติโน่ เสียดายโอกาสของทีมในเกมฟัดหงส์
- 【Unity3D日常开发】Unity3D中设置Image中的Color的值
- 从虎胆龙威4(live free or die hard)说黑客攻击
- TM4C123G学习记录(2)--GPIO
- matlab双纵坐标的绘图命令_[转载]MATLAB画双纵坐标 plotyy的用法 对数坐标
- Scala数组函数二(dropRight~intersect)
- 网速慢、WIFI信号差?这样操作路由器就可以
- RPC框架的路由策略
热门文章
- DVD-Cloner 2021 for mac(DVD光盘刻录工具)
- Screaming Frog SEO Spider for Mac(网络爬虫软件)v16.0
- hihocoder 1513 小Hi的烦恼——bitset
- 微信实现双向跨境支付,将向香港用户开放内地支付服务
- 实战 | 使用Slack、Docker来打造你的运维机器人
- HBase原理-数据读取流程解析
- 《Http Client 官方文档》7. 高级主题
- C++中使用空格的建议
- 一台电脑如何同开两个或多个飞信?
- Nginx 常用配置,避坑指南!