JavaEE细节问题05——Cookie和Session

Cookie和Session的作用:

都是用于存储一些关键数据。

Cookie和Session的存储位置:

Cookie储存在客户端,Session储存在服务器

Cookie的产生和销毁以及原理:

Cookie由服务器产生,通过HTTP协议发送给客户端。

在协议的响应头中的:Set-Cookie标注了这个cookie的信息:

下次如果有cookie带给服务器时,将会在

在协议的请求头中的:Cookie标注了这个cookie的信息:

/*
 * 正值表示 cookie 将在经过该值表示的秒数后过期。注意,该值是 cookie 过期的最大 生存时间, 不是
 * cookie的当前生存时间。 负值意味着 cookie 不会被持久存储,将在 Web 浏览器退出时删除。0 值会导致删除cookie
*/
cookie.setMaxAge(Integer.MAX_VALUE);

Cookie的属性和特点:

// 创建cookie的时候,就将一个字符串类型的k-v值传入,一个cookie只能由一个k-v
Cookie cookie = new Cookie("keyyy", "valueeee");
/*
 * 指定一个描述 cookie 用途的注释。如果浏览器向用户显示 cookie,则注释很有用。 Netscape Version 0
 * cookie 不支持注释。
 */
cookie.setComment("testCook");
/*
 * RFC 2109 指定了域名的形式。域名以点 (.foo.com) 开头,意味着在指定域名系统(Domain Name
 * System,DNS)区域中(例如,www.foo.com,但不是 a.b.foo.com)cookie
 * 对于服务器是可见的。默认情况下,cookie 只返回给发送它们的服务器。 
 * pattern 包含域名(在其中此 cookie 可见)的String;域名形式符合 RFC 2109
 */
//cookie.setDomain("");
/*
 * 正值表示 cookie 将在经过该值表示的秒数后过期。注意,该值是 cookie 过期的最大 生存时间, 不是
 * cookie的当前生存时间。 负值意味着 cookie 不会被持久存储,将在 Web 浏览器退出时删除。0 值会导致删除 cookie。
 */
cookie.setMaxAge(Integer.MAX_VALUE);
/*
 * 指定客户端应该返回 cookie 的路径。 cookie 对于指定目录中的所有页面及该目录子目录中的所有页面都是可见的。cookie
 * 的路径必须包括设置 cookie 的 servlet,例如 /catalog,它使 cookie 对于服务器上 /catalog
 * 下的所有目录都是可见的。默认状态是当前发送cookie的这一个servlet的同级目录
 */
//cookie.setPath("");
/*
 * 指示浏览器是否只能使用安全协议(如 HTTPS 或 SSL)发送 cookie。 默认值为 false。 flag 如果为
 * true,则仅在使用安全协议时将 cookie 从浏览器发送到服务器;如果为 false,则在使用任何协议时都可以发送
 */
cookie.setSecure(false);
/*
 * 在创建 cookie 之后将新值分配给 cookie。如果使用二进制值,则可能需要使用 BASE64 编码。 对于 Version 0
 * cookie,值不应包含空格、方括号、圆括号、等号、逗号、双引号、斜杠、问号、at 符号、冒号和分号。
 * 空值在所有浏览器上的行为不一定相同。
 */
cookie.setValue("vvv");
/*
 * 设置此 cookie 遵守的 cookie 协议版本。版本 0 遵守原始 Netscape cookie 规范。版本 1 遵守 RFC
 * 2109。
 */
cookie.setVersion(1);
//发送这个cookie
response.addCookie(cookie);

Session的产生和销毁以及原理:

首先Session作用与一次会话。什么是会话?就是从打开这个网站,进行一些操作直到到关闭这个网站。

Session由服务器产生,产生后将通过Cookie(没有的话就创建一个)给客户端发送一个带有JSESSIONID参数和值的一个键值。

JSESSIONID就是当前这个会话代表的Session在服务器内存中的一个区域的标识,在一个会话中每次发出请求时都带有这个Cookie,通过Cookie中的这个JSESSIONID标识就能定位到服务器中这个Session。

Session的话关闭关闭即删除,或者使用session.invalidate();移除这个session。

Session实例:

Session的属性和特点:

Session的创建:

/*
 * 获取到当前的session
 * getSession()与getSession(true)用法相同!:    如果当前有session,则返回当前的session,如果没有,就创建一个
 * getSession(false):    当前没有session,也不创建新的session
 */
HttpSession session  = req.getSession();

Session是一个域,可以存放对象,作用范围是一次会话。

关于对象的存取不说了,这里说说关于对象的移除。

很多人会用session.invalidate()来删除session,这样session域中的对象也就没了,但是这样不好。

第一个是会伤及无辜,为了删除对象a,结果b,c,d也全都没了。第二个是会浪费资源,因为每次直接删除

session,那么在本次回话的下次请求时又得建立新的session。

也有使用removeAttribute(key);这样的方式来移除对象的,这样比较好。

时间: 2024-10-11 22:21:57

JavaEE细节问题05——Cookie和Session的相关文章

cookie和session的关系及细节操作及总结

## cookie cookie是存储在浏览器端的,浏览器发请求时会自动把[所有]cookie值发送到服务器!document.cookie (多次设置,不会覆盖!) - 赋值 + document.cookie="字符串" // cookie只能给字符串值- 获取: + document.cookiedocument.cookie是原生的js操作 jquery操作cookie插件github地址 (https://github.com/carhartl/jquery-cookie)

JavaEE之会话技术Cookie&Session

会话技术简介 存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪         里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并         不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话技术是帮助服务器         记住客户端状态(区分客户端) 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会         话技术就是记录这次会话中客户端态的状与数据的. 会话技术分

JAVAWEB开发之JSP、EL、及会话技术(Cookie和Session)的使用详解

Servlet的缺点 开发人员要十分熟悉JAVA 不利于页面调试和维护(修改,重新编译) 很难利用网页设计工具进行页面设计(HTML内容导入到servlet中,用PrintWriter的对象进行输出) JSP简介 JSP(Java Server Pages) 与Java Servlet一样,是在服务器端执行的,不同的是JSP先由服务器编译部署成Servlet执行. JSP技术的企业最佳实践(生成HTML内容) 新的JSP2.0规范版本包括新的功能(EL表达式,新增的Simple Tag和Tag

理解会话中的Cookie和Session对象

会话可以简单理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 在java语言中,Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求,其中这个过程,保存会话中数据的两种重要技术: 1.Cookie技术: Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器,并保存在客户端浏览器的缓存中.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去.这样,we

会话技术cookie和session详解

什么是会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话技术解决了什么问题 每个用户与服务器进行交互的过程中,各自会有一些数据,程序要想办法保存每个用户的数据. 例如:用户点击超链接通过一个servlet购买了一个商品,程序应该保存用户购买的商品,以便于用户点结帐servlet时,结帐servlet可以得到用户商品为用户结帐. 会话技术分类 会话技术会为两类 Cookie Cookie是客户端技术,程序把每个用户的数

学习日常笔记<day11>cookie及session

1.会话管理 1.1会话管理定义 会话管理:管理浏览器客户端和服务端之间的会话过程中产生的会话数据 域对象:实现资源之间的数据共享 request 域对象 context 域对象 1.2.会话技术 Cookie技术:会话数据保存在浏览器客户端中 Session技术:会话数据保存在服务器端 2.Cookie技术 2.1 特点 Session技术:会话数据保存在服务器端 2.2Cookie技术核心 Cookie类:用于存储会话数据 1)构造Cookie对象 Cookie(java.lang.Stri

Cookie和Session简介与区别

1.Cookie和Session简介与区别 在非常多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie与 Session来跟踪和判断. 区别 Session信息是存放在server端,但session id是存放在client cookie的,当然php的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪 Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cook

PHP 中cookie 和 session 的分析

1. PHP 的COOKIE cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制.     PHP 在http 协议的头信息里发送cookie,因此  setcookie()     函数必须在其它信息被输出到浏览器 前调用,这和对  header()    函数的限制类似. 1.1 设置cookie: 可以用 setcookie()或 setrawcookie()函数来设置 cookie.也可以通过向客户端直接发送http  头来 设置.     1.1.1  使用 set

【转】Cookie和Session的区别详解

转载地址:http://www.phperzone.cn/portal.php?aid=541&mod=view 一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于才服务器端保持状态的方案在客户端也需要保存一个标识,所以session 机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择 二.会话cookie和持久cookie的区别 如果不设置