一、怎么定义一次会话?

我们打开我们的浏览器,我们中间访问很多网页,直到我们关闭浏览器,就意味着会话结束。所以一次会话就是打开浏览器到关闭浏览器这个过程。

二、会话管理到底都管理什么?

管理浏览器端和服务器端之间会话过程中产生的会话数据。

三、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相关推荐

  1. 5G NGC — 会话管理模型 — PDU Session

    目录 文章目录 目录 5G 的会话管理模型 PDU Session PDU Session 的类型 Ethernet Type Unstructured Type DNN 的作用 UE IP 地址的分 ...

  2. 四、PHP基础——会话技术Cookie 和 Session

    会话技术初步认识 会话技术介绍 web会话可简单理解为:用户开一个浏览器,访问某一个web站点,在这个站点点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. HTTP协 ...

  3. 次世代的会话管理项目 Spring Session

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文来自云+社区翻译社,由Tnecesoc编译. 会话管理一直是 Java 企业级应用的重要部分.不过在很长的一段时间里,这一部分都被我们认 ...

  4. Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)

    概述 web 服务器.项目.资源概述 web 服务器:可以被浏览器访问到的服务器 常见的 web 服务器: tomcat:中小型的服务器软件,免费开源,支持 JSP 和 Servlet apache ...

  5. 会话管理-2.1.Session介绍

    1.Session是什么? 客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上.这就是Session. 客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了, ...

  6. java ee会话_Java EE会话技术Cookie和Session

    会话技术 一.定义 会话技术是帮助服务器记住客户端状态的(区分客户端的).将客户访问的信息存在本地的叫Cookie技术,存在服务器上的叫Session技术. 注意: 一次会话何时开始?从打开一个浏览器 ...

  7. Java Web之会话管理二:Session

    一.Session 在web开发中,服务器可以为每个yoghurt浏览器创建一个会话对象(Session)对象.注意:一个浏览器独占一个Session对象.因此,在需要保存用户数据时,服务器程序可以把 ...

  8. PHP会话管理——Session和Cookie

    会话管理包括:Session和Cookie,主要功能都是把客户端和服务器关联起来,用于管理和查看用户在网站中的状态. 背景 Web应用程序是使用HTTP协议传输数据的.HTTP协议是无状态的协议.一旦 ...

  9. Java中的会话管理– HttpServlet,Cookie,URL重写

    Session Management in Java Servlet Web Applications is a very interesting topic. Session in Java Ser ...

  10. 大数据WEB阶段(十二)会话技术、Cookie、Session及两者的区别

    会话技术 – Cookie与Session及其两者的区别 (一)会话技术 一.概述 1. 一个浏览器为了实现某一个功能对服务器产生了多次请求响应.从第一个请求开始访问服务器,会话开始,到最后一个页面访 ...

最新文章

  1. SAP 4.6C升级ECC6.0 WS_QUERY 的改法
  2. opencv 编译安装时出现报错 modules/videoio/src/cap_ffmpeg_impl.hpp:585:34: error: ‘AVStream {aka struct AVStre
  3. 上海GDD(谷歌开发者大会),第一天总结
  4. mysql 有关的文件
  5. VS code 快捷键常用
  6. p6spy oracle,MyBatis集成P6Spy显示实际的SQL(代码教程)
  7. w10系统asp服务器搭建,win10系统搭建asp环境的操作方法
  8. 用python制作上海疫情评论词云图-自定义形状
  9. HTML+CSS简单漫画网页设计成品 蜡笔小新3页 大学生个人HTML网页制作作品
  10. SIP12 脚 电磁隔离放大器IC 模拟信号隔离放大器 电磁耦合隔离放大器
  11. iOS开发工程师常见面试题及答案
  12. 前端小白写了个网页版五子棋游戏,使用原生 JS + Canvas 实现绘制棋子、棋盘
  13. ปอเช็ตติโน่ เสียดายโอกาสของทีมในเกมฟัดหงส์
  14. 【Unity3D日常开发】Unity3D中设置Image中的Color的值
  15. 从虎胆龙威4(live free or die hard)说黑客攻击
  16. TM4C123G学习记录(2)--GPIO
  17. matlab双纵坐标的绘图命令_[转载]MATLAB画双纵坐标 plotyy的用法 对数坐标
  18. Scala数组函数二(dropRight~intersect)
  19. 网速慢、WIFI信号差?这样操作路由器就可以
  20. RPC框架的路由策略

热门文章

  1. DVD-Cloner 2021 for mac(DVD光盘刻录工具)
  2. Screaming Frog SEO Spider for Mac(网络爬虫软件)v16.0
  3. hihocoder 1513 小Hi的烦恼——bitset
  4. 微信实现双向跨境支付,将向香港用户开放内地支付服务
  5. 实战 | 使用Slack、Docker来打造你的运维机器人
  6. HBase原理-数据读取流程解析
  7. 《Http Client 官方文档》7. 高级主题
  8. C++中使用空格的建议
  9. 一台电脑如何同开两个或多个飞信?
  10. Nginx 常用配置,避坑指南!