会话技术概述、Cookie常用属性和方法及Session常用方法和生命周期

简介: 会话技术概述、Cookie常用属性和方法及Session常用方法和生命周期

一、会话技术概述


会话是指客户端和服务器之间的多次请求和响应


● 为了实现一些功能,浏览器和服务器可能会产生多次的请求和响应,从浏览器访问服务器开始,到访问服务器结束,这期间产生的多次请求和响应加在一起就称为浏览器和服务器之间的一次会话


● 为了保存会话过程中产生的数据,我们可以通过会话技术(Cookie和Session)来实现


二、Cookie


● Cookie是一种会话技术,可以将会话过程中的数据保存在用户的浏览器中,从而使浏览器和服务器之间更好的进行数据交互


● Cookie是一个类,有一些属性和方法,用于设置Cookie


● 发送一个Cookie使用HttpServletResponse的 void addCookie(Cookie cookie) 方法,通过这个方法可以将Cookie添加到响应头中然后响应给浏览器


● 浏览器最多接收20个来自同一个网站的Cookie,并且浏览器只允许存放300个Cookie,每个Cookie的大小限制在4k以内


● 浏览器通过将Cookie添加到请求头中发送到服务器端,可以通过HttpServletRequest的 Cookie[]getCookie() 方法获取到一个Cookie数组,这些Cookie可能有相同的名称但是路径不同


● 构造方法 public Cookie(String name,String value) ,name属性一旦创建将不能更改,但是value可以更改


Cookie常用属性:


属性 作用 是否重要
name Cookie名称 必须属性
value Cookie的值(不支持中文) 必须属性
path Cookie的路径 重要
domain Cookie的域 重要
maxAge Cookie存活时间 重要
version Cookie版本号 不重要
comment Cookie描述 不重要


Cookie方法:


● Cookie常用方法是对Cookie相关属性的get或者set,但是需要注意name属性没有set方法


● setMaxAge(int expirt)和getMaxAge()方法解析


1. 这两个方法用于设置和返回Cookie在浏览器上保持的有效秒数,其中设置的值有如下规则


2. 正整数表示在没有超过指定秒数之前这个Cookie会一直存在


3. 负整数表示当浏览器关闭时Cookie信息会被清除


4. 0表示浏览器会立即删除这个Cookie信息


5. 默认是-1


● setPath(String uri)和getPath()方法解析:


1. 这两个方法是针对path属性的设置和获取


2. 如果创建的Cookie对象没有设置path属性的值,那么默认该Cookie只对当前请求路径所属的目录以及子目录有效


3. 如果想让某个Cookie对象对站点的所有目录下的访问路径的都有效,那么可以设置为"/"


4. 设置path的格式是contextPath+自定义路径


● setDomain(String pattern)和getDomain():


1. 这两个方法是针对domain属性的设置和获取,domain属性用于指定Cookie所在的域


2. 默认为服务器主机地址,当浏览器想要访问该服务器的资源时会将该Cookie信息发送给服务器


3. 如果想让不同的域之间都可以访问到某个Cookie,那么Cookie的domain应该是这些域的相同后缀,而且必须以.开头


三、Session


● Session也是会话技术的一种,与Cookie不同的是,在客户端保存的是一个标识,而会话产生的数据保存在服务器端


● 当浏览器第一次请求服务器时,服务器会创建一个Session对象,该对象有唯一的一个标识,然后服务器将这个标识以Cookie的方式发送给浏览器


● 当浏览器再一次请求服务器时会将这个标识发送过来,服务器根据这个标识就可以找到对应的Session对象了


● Session也是域对象之一,可以实现数据共享


● 通过创建一个HttpSession对象来实现Session,HttpSession是一个接口,我们不直接创建这个对象而是服务器负责创建,我们使用的时候获取即可


● 获取方式:通过HttpServletRequest对象获取,有两个方法


HttpSession getSession() ,获取HttpSession对象


HttpSession getSession(boolean create) ,获取HttpSession对象,未获取到是否创建


HttpSession常用方法:


方法 说明
String getID() 返回与当前HttpSession对象关联的会话标识号
long getCreationTime() 返回Session创建时间
long getLastAccessedTime() 返回客户端最后一次发送与Session相关请求的时间
void setMaxInactiveInterval(int interval) 用于设置当前Session对象可空闲的最长时间,单位为秒
boolean isNew() 判断当前HttpSession对象是否是新建的
void invalidate() 强制使Session对象无效
boolean isNew() 判断当前HttpSession对象是否是新建的
void invalidate() 强制使Session对象无效
String getAttribute() 用于从当前HttpSession对象中返回指定名称的属性值
void removeAttribute(String name) 用于从当前HttpSession对象中删除指定名称的属性值


Session生命周期:


Session生效


1、Session在用户第一次访问服务器时创建


2、只有访问JSP、Servlet等程序时才会创建Sessin


3、只访问HTML、IMAGE等静态资源时不会创建Session


Session失效



1、Web服务器使用“超时限制”判断客户端是否还在继续访问。在一定时间内,如果某个客户端没有请求访问,那么Web服务器认为该客户端已经结束请求,并且与该客户端会话所对应的HttpSession对象会变成垃圾对象,等待垃圾收集器将其从内存中清除。如果超时后再次向服务器发出请求访问,那么Web服务器会创建一个新的HttpSession对象,并分配一个新的标识


2、使用 invalidate() 方法,可以强制使得Session失效


设置失效时间:使用 setInactiveInterval(int interval) 方法可以设置Session最长的空

闲时间,当超过这个时间客户端没有请求访问则Session失效。


目录
相关文章
|
11天前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
35 4
|
14天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
1月前
|
缓存 Java Spring
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
文章比较了在Servlet和Spring Boot中获取Cookie、Session和Header的方法,并提供了相应的代码实例,展示了两种方式在实际应用中的异同。
149 3
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
|
26天前
|
存储 安全 数据安全/隐私保护
Cookie 和 Session 的区别及使用 Session 进行身份验证的方法
【10月更文挑战第12天】总之,Cookie 和 Session 各有特点,在不同的场景中发挥着不同的作用。使用 Session 进行身份验证是常见的做法,通过合理的设计和管理,可以确保用户身份的安全和可靠验证。
19 1
|
2月前
|
存储 安全 NoSQL
Cookie、Session、Token 解析
Cookie、Session、Token 解析
59 0
|
2月前
|
存储 缓存 数据处理
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
本文介绍了PHP会话控制及Web常用的预定义变量,包括`$_REQUEST`、`$_SERVER`、`$_COOKIE`和`$_SESSION`的用法和示例。涵盖了cookie的创建、使用、删除以及session的工作原理和使用,并通过图书上传的例子演示了session在实际应用中的使用。
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
|
2月前
|
存储 前端开发 Java
JavaWeb基础7——会话技术Cookie&Session
会话技术、Cookie的发送和获取、存活时间、Session钝化与活化、销毁、用户登录注册“记住我”和“验证码”案例
JavaWeb基础7——会话技术Cookie&Session
|
2月前
|
存储 JSON 数据安全/隐私保护
Cookie + Session 的时代已经过去了?
在探讨“Cookie + Session”这一经典组合是否已经过时的议题时,我们首先需要理解它们在Web应用认证和会话管理中的历史地位与当前面临的挑战。随着Web技术的飞速发展,特别是无状态服务、OAuth、JWT(JSON Web Tokens)等技术的兴起,这一传统机制确实面临了前所未有的变革压力。但说它“完全过去”或许过于绝对,因为它在特定场景下仍发挥着重要作用。
36 0
|
3月前
|
存储 JavaScript 前端开发
Cookie 反制策略详解:Cookie加解密原理、Cookie和Session机制、Cookie hook、acw_sc__v2、jsl Cookie调试、重定向Cookie
Cookie 反制策略详解:Cookie加解密原理、Cookie和Session机制、Cookie hook、acw_sc__v2、jsl Cookie调试、重定向Cookie
184 1
|
3月前
|
存储 安全 搜索推荐
【JavaWeb 秘籍】Cookie vs Session:揭秘 Web 会话管理的奥秘与实战指南!
【8月更文挑战第24天】本文以问答形式深入探讨了Web开发中关键的会话管理技术——Cookie与Session。首先解释了两者的基本概念及工作原理,随后对比分析了它们在存储位置、安全性及容量上的差异。接着,通过示例代码详细介绍了如何在JavaWeb环境中实现Cookie与Session的操作,包括创建与读取过程。最后,针对不同应用场景提供了选择使用Cookie或Session的指导建议,并提出了保障二者安全性的措施。阅读本文可帮助开发者更好地理解并应用这两种技术。
58 1