(六)Cookie 知识点总结 (来自那些年的笔记)
如果你想要转载话,可不可以不要删掉下面的 作者信息
呀!;
作者:淮左白衣
写于 2018年4月18日18:47:41
来源笔者自己之前学javaWeb的时候,写的笔记 ;
目录
会话介绍
什么是会话?
会话
可简单的理解为:用户 打开 一个浏览器,点击多个超链接,访问服务器多个web资源,然后 关闭 浏览器,整个过程称之为一个会话 。(打开浏览器 ——> 关闭浏览器)会话过程中需要解决的一些问题
每个用户与服务器进行交互的过程中,各自会产生一些数据,程序要想办法保存每个用户的数据 。
例如:用户点击超链接通过一个
servlet
购买一个商品,程序应该保存用户购买的商品,以便用户点结账servlet时,结账servlet
可以得到用户购买的商品,为用户结账 ;思考:用户购买的商品保存在
request
或者servletContext
中 行不行?都不行 ;
先说
request
;因为,request
的 生命周期,仅限制在一次请求之间,每次请求都会生成一个新的request
对象,这意味着保存在里面的东西,只能保存在一次请求之间,与我们想要的,不同的请求,都可以访问到数据的要求是相悖的;再说
servletContext
,虽然servletContext
被整个WEB中的servlet
共享 ;满足了保存在里面的数据,可以被不同的请求,都访问到;但是,保存在其中数据,是按照键值对
存储的,这样,不同的请求,保存数据的时候,会造成数据的覆盖 ;既然都解决不了这个问题了,我们需要学习新的知识了 ;
保存会话的两种技术
Cookie
Cookie
是客户端技术
,程序把 每个用户的数据 以cookie
的形式 写给用户各自的浏览器 。这样,当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了 ;
Session(由服务器创建)
Session
是服务器端技术
,利用这个技术服务器在运行时可以为每一个
用户的浏览器创建一个其独享
的session对象 ;由于
session
为用户浏览器独享,所以在访问服务器的web
资源时,可以把各自的数据放在各自的session
中,当用户再去访问服务器中的其他web
资源时,其他web
资源再从用户各自的session
中取出数据为用户服务 ;当用户的浏览器 第一次 访问服务器的资源的时候,服务器为每个用户创建一个
session
对象,挂在服务器的屁股后面 ;当这个用户 再次 访问其他web
资源的时候,不会再次创建session
对象了,会去拿挂在服务器屁股后面的那个已经创建的session
对象 ;请记住了:
Session对象
的创建,发生在 浏览器第一次访问服务器 资源的时候 ;
Cookie
javax.servlet.http.Cookie
用于创建一个 Cookie
,response
接口中定义了一个 addCookie
方法,它用于在其响应头
中增加一个相应的 Set-Cookie
头字段。同样,request
接口中也定义了一个getCookies
方法,它用于获取客户端提交的Cookie
。
Cookie
类的方法:
构造器 :Public Cookie(String name,String value)
;
cookie的值 : setValue
与 getValue
方法
cookie的有效期,以 秒
为单位 : setMaxAge
与 getMaxAge
方法 ;
假如, 没有设置有效期 ;则
cookie
随着浏览器的进程销毁而销毁 ;设置了cookie有效期,cookie将被保存在本地硬盘 ;
cookie的路径 : :setPath
与 getPath
方法
写明路径,表示访问路径下面资源的时候,会带着cookie访问 ;访问服务器其他路径下的资源,将不会带着cookie访问 ;
假如没有写路径,则 有效路径 是回写这个cookie
的servlet
程序的所在目录 ;比如/javaWeb/servlet/servletDemo
回写的cookie,则有效路径是/javaWeb/servlet
cookie的域 : setDomain
与 getDomain
方法
设置域,比如设置为
.sina.com
;这样访问新浪的网站的时候,就会带上cookie ;
其实在实际中,设置域,也没用 ;不然就可以利用这样的手端来攻击别人的网站了 ;cookie,说到底还是数据,每个人在访问你的网站以后,都保存一个域为新浪的cookie,他们再去访问新浪,就会带上这些垃圾数据 ,新浪还不炸了!? ;
IE浏览器,默认也不会保存这样的cookie。
cookie的名称 : getName
方法 ;
Cookie的细节
- 一个
cookie
只能标识一种信息 ,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE);要保存多个信息,需要多个cookie ; - 一个
WEB
站点可以给一个web浏览器
发送多个Cookie
,一个web浏览器
也可以存储多个web站点
提供的cookie
; - 浏览器一般只允许存放300个cookie,每个站点最多存放20个cookie, 每个cookie的大小限制为4KB ;
如果创建了一个cookie,并将它发送到浏览器,默认情况下它是一个 会话级别 的cookie(即存储在浏览器内存中),用户退出浏览器之后即被删除。
若希望浏览器将该
cookie
存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。 将最大时效设为0,则是命令浏览器立刻删除该cookie;浏览器没关闭,cookie也被删除 ;删除
cookie
时,path
必须一致 ;否则不会删除掉 ;删除cookie,其实就是新建一个和要删除的cookie,一样的
cookie
,它们具有一样的name
,一样的path
路径,其实就是覆盖掉之前的cookie ;将其最大时效设置为0 ;
删除cookie
笔者,之前向浏览器回写了一个cookie
,名字是 lastTime
,路径是 /javaWeb
;现在,我们想删掉浏览器保存的这个cookie
;
代码:
// 必须再创建一个和删除一样的cookie
Cookie cookie = new Cookie("lastTime","") ;
// 设置path 必须一样
cookie.setPath("/javaWeb");
// 将最大时效设置为 0
cookie.setMaxAge(0);
// 添加到response中,回写给浏览器
response.addCookie(cookie);
Cookie的应用
- 模仿电商网站的商品浏览记录(见IDEA)
显示用户上传访问的时间
代码太多。贴出来,也不一定有人看;如果,你真的想看,可以加我QQ :1255621959 ;
好孩子看不到系列 (尝试鼠标全选);
关于保存数据,选用哪种集合
保存数据使用单列集合还是双列集合 ?
答案
:看是否有检索数据的要求;如果有,则选用双列集合,Map集合的key可以很快的检索出数据 ;
cookie 的坑
cookie
这里面有个大坑,cookie
的 键和值中是不可以使用特殊字符的,比如:逗号,分号,等号等 ;这个坑,当初浪费了我足足四个小时 ;
(六)Cookie 知识点总结 (来自那些年的笔记)的更多相关文章
- (一)HTTP协议的一些知识点(来自那些年的笔记)
目录 http协议1.0.1.1两个版本的区别 访问几次服务器? Http请求行和请求方式详解 可以在超链接上传一些数据 HTTP请求头各个头字段的详解 HTTP响应和响应行状态详解 断点下载 HTT ...
- 第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么
第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么 Sigma协议 Sigma协议是Alice想要向Bob证明一些东西的协议(Alice知道一些秘密).他们有下面的一般范式:Al ...
- 第六个知识点:我们怎么把NP问题解释成一组可以在多项式内证明的命题
第六个知识点:我们怎么把NP问题解释成一组可以在多项式内证明的命题 原文地址:http://bristolcrypto.blogspot.com/2014/11/52-things-number-6- ...
- 第十六个知识点:描述DSA,Schnorr,RSA-FDH的密钥生成,签名和验证
第十六个知识点:描述DSA,Schnorr,RSA-FDH的密钥生成,签名和验证 这是密码学52件事系列中第16篇,这周我们描述关于DSA,Schnorr和RSA-FDH的密钥生成,签名和验证. 1. ...
- 第二十六个知识点:描述NAF标量乘法算法
第二十六个知识点:描述NAF标量乘法算法 NAF标量乘法算法是标量乘法算法的一种增强,该算法使用了非邻接形式(Non-Adjacent Form)表达,减少了算法的期望运行时间.下面是具体细节: 让\ ...
- 第三十六个知识点:Index Calculus算法
第三十六个知识点:Index Calculus算法 我们这篇博客继续描述一种数学攻击,这种数学攻击被叫做Index Calculus(IC)算法. 注意这里Index Calculus算法没有找到合适 ...
- Cookie 知识点再整理
1. Cookie 是存储在客户端 内存 或者 硬盘(例如火狐把 Cookie 存储在 C:\Documents and Settings\用户名\Application Data\Mozilla\ ...
- Cookie知识点小结
问题是什么?有哪些技术?如何解决? 1. Cookie 1)完成回话跟踪的一种机制:采用的是在客户端保存Http状态信息的方案 2)Cookie是在浏览器访问WEB服务器的某个资源时,由WEB服务器在 ...
- Cookie知识点总结
Cookie机制是采用客户端保持Http状态信息的方案. Cookie是在浏览器访问web服务器的某个资源的时候,由web服务器在http响应消息头中附带给浏览器的一个小文本文件. 一旦web服务器保 ...
随机推荐
- C++11多线程std::thread创建方式
//#include <cstdlib> //#include <cstdio> //#include <cstring> #include <string& ...
- Java学习日记——基础篇(二)基本语法
变量 变量和常量是程序处理的两种基本数据对象,变量是程序的基本组成单位 变量的目的就是确定目标并提供存放空间 public class Hello { public static void main( ...
- elasticsearch 动态映射
https://www.elastic.co/guide/cn/elasticsearch/guide/current/dynamic-mapping.html#dynamic-mapping当 El ...
- 8. String to Integer (atoi) ---Leetcode
Implement atoi to convert a string to an integer. 题目分析: 题目本身很简单就是将一个字符串转化成一个整数,但是由于字符串的千差万别,导致在实现的时候 ...
- java基础类型源码解析之String
差点忘了最常用的String类型,我们对String的大多数方法都已经很熟了,这里就挑几个平时不会直接接触的点来解析一下. 先来看看它的成员变量 public final class String { ...
- RK3399 focaltech敦泰触摸屏移植调试
CPU:RK3399 系统:Android 7.1 IC:FT5406 focaltech(敦泰)触摸屏也是比较常用的,但是相对汇顶,就比较少用 RK的源码中虽然有 focaltech 的代码,但没有 ...
- Qt之模型/视图(自定义风格)
Qt之模型/视图(自定义风格) 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下. 先看下图: 先撇开界面的美观性(萝卜青菜,各有所爱),就现有的这些风 ...
- qt mvc1
mvc是经典的三层结构,将数据,视图和逻辑分离.Qt中的Model/View框架,实现了这个模式.在Qt中这个模式设计到三个类,model类,view类和delegate类.model类保存数据,vi ...
- 真正解决方案:java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
今天在使用JDK 12.0 环境下使用Hibernate 时候出现了这个错误,错误日志如下: 故障原因: JAXB API是java EE 的API,因此在java SE 9.0 中不再包含这个 Ja ...
- springboot之freemarker 和thymeleaf模板web开发
Spring Boot 推荐使用Thymeleaf.FreeMarker.Velocity.Groovy.Mustache等模板引擎.不建议使用JSP. 一.Spring Boot 中使用Thymel ...