会话技术概述、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失效。


目录
相关文章
|
2天前
|
存储 前端开发 Java
JavaWeb基础7——会话技术Cookie&Session
会话技术、Cookie的发送和获取、存活时间、Session钝化与活化、销毁、用户登录注册“记住我”和“验证码”案例
JavaWeb基础7——会话技术Cookie&Session
|
21天前
|
存储 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
39 1
|
22天前
|
存储 安全 搜索推荐
【JavaWeb 秘籍】Cookie vs Session:揭秘 Web 会话管理的奥秘与实战指南!
【8月更文挑战第24天】本文以问答形式深入探讨了Web开发中关键的会话管理技术——Cookie与Session。首先解释了两者的基本概念及工作原理,随后对比分析了它们在存储位置、安全性及容量上的差异。接着,通过示例代码详细介绍了如何在JavaWeb环境中实现Cookie与Session的操作,包括创建与读取过程。最后,针对不同应用场景提供了选择使用Cookie或Session的指导建议,并提出了保障二者安全性的措施。阅读本文可帮助开发者更好地理解并应用这两种技术。
28 1
|
15天前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
44 0
|
3月前
|
存储 编解码 应用服务中间件
会话跟踪技术(Session 以及Cookie)
会话跟踪技术(Session 以及Cookie)
|
3月前
|
存储 前端开发 小程序
表白墙完善(数据库,前端,后端Servlet),再谈Cookie和Session。以及一个关于Cookie的练习小程序
表白墙完善(数据库,前端,后端Servlet),再谈Cookie和Session。以及一个关于Cookie的练习小程序
|
4月前
|
存储 Web App开发 安全
Cookie和session 及Web相关工具
Cookie和session 及Web相关工具
|
26天前
|
存储 安全 搜索推荐
深入探讨Session和Cookie的概念、用途以及如何在Java Web开发中有效地使用它们进行用户状态管理。
在Java Web开发中,Session和Cookie是管理用户状态的核心技术。Session存储于服务器端,通过唯一的Session ID识别用户,确保数据安全与隐私;Cookie则存储于客户端,用于记录用户偏好等信息。两者各有优势:Session适合存储敏感数据,但需合理管理避免资源浪费;Cookie便于持久化存储,但在安全性上需谨慎设置。开发者可通过Servlet API轻松操作二者,实现个性化用户体验与应用性能优化。
25 2
|
26天前
|
存储 缓存 安全
Cookie和Session
【8月更文挑战第20天】
15 1
|
1月前
|
存储 JSON JavaScript
震撼!Cookie、Session、Token、JWT 终极对决:揭开 Web 认证的神秘面纱!
【8月更文挑战第13天】Web 开发中,Cookie、Session、Token 和 JWT 常混淆。Cookie 是服务器给客户端的小信息片,如登录状态,每次请求都会返回。Session 则是服务器存储的用户数据,通过 Session ID 追踪。Token 类似通行证,证明客户端身份且可加密。JWT 是结构化的 Token,含头部、载荷及签名,确保数据完整性和安全性。
38 4