170814关于Cookie的知识点
1.会话控制
Http协议 Http协议两个缺陷:
1.HTTP协议是纯文本的 2.HTTP协议是无状态的
服务器不能简单的通过HTTP协议来区分多次请求是否发自同一个用户 虽然通过HTTP协议不能区分不同请求是否来同一用户,但是我们实际生活却有这样的需求。
[1] Cookie
看电影
去电影院看电影时,检票人员是认票不认人。
电影院的运作流程 1.印刷电影票 2.将票发给看电影 3.看电影的拿着票来看电影 4.检票
简介
我们想可以通过服务器向浏览器发送一个类似票的东西,浏览器在访问服务器时就可以拿着票来访问,服务器就可以根据这个票来识别不同的用户。 服务器发送给浏览器的这张票我们称为Cookie。
Cookie的使用流程:
1.服务器先要创建Cookie 2.将Cookie发送给浏览器 3.浏览器带着Cookie访问服务器 4.服务器检查浏览器的Cookie
Cookie实际上就是一个头 服务器通过响应头将Cookie发送给浏览器, 浏览 器通过请求头将Cookie发回给服务器, 服务器可以根据不同的Cookie来识别不同的用户。
使用Cookie - 创建Cookie Cookie cookie = new Cookie(name,value);
发送Cookie response.addCookie(cookie); 注意:可以发送多个cookie! - 读取Cookie
request.getCookies(); 返回的是一个Cookie数组。
虽然Cookie是一个键值对结构,但是它并没有给咱们提供一个根据键获取值的方法。 我们要想读取Cookie的信息,只能通过遍历数组。
修改Cookie 一旦Cookie发给浏览器以后,服务器便不能直接修改Cookie, 但是可以通过使用同名Cookie来替换的老Cookie方式来间接的修改
Cookie的有效时间 - Cookie的默认有效时间为一次会话,当关闭浏览器时,Cookie将失效。
通过setMaxAge(秒数)来设置Cookie的有效时间 -//当秒数大于0时,有效时间会设置为相应的秒数 cookie.setMaxAg(30);
//当秒数等于0时,代表Cookie立即失效,浏览器不会保存。
cookie.setMaxAge(0); //当秒数小于0时,和不设置是一样,一次会话中有效
cookie.setMaxAge(-100); 设置一个长久有效的Cookie cookie.setMaxAge(60*60*24*365*10) 在程序中使Cookie立即失效
还可以使用一个同名的,立即失效的Cookie来替换已有Cookie
注意:不建议在cookie中传递中文,会用base64编码!
Cookie的Path path指的Cookie的路径,所谓的Cookie路径就是指,浏览器在访问哪些地址时会携带Cookie。
Cookie默认有效路径是项目的根目录,只要访问当前项目下的资源就会带着Cookie,通过setPath()方法来设置Cookie有效路径
//修改Cookie的有效路径
//Cookie的路径由浏览器解析,所以设置路径时需要加上项目名
cookie.setPath(request.getContextPath()+"/hello");
应用: 1.可以用来保持用户的登录状态 2.可以用来记录用户上次输入的用户名 3.广告的推送
Cookie练习
模拟一个taobao的功能,保存用户输入用户名。
用户在login.jsp输入用户名和密码 , 请求发送个LoginServlet
LoginServlet收到请求行,检查用户名和密码是否正确。(默认登录成功) 如果正确,则将用户名保存到一个Cookie中,并发送给浏览器 ,重定向到 login-success.jsp 如果错误,转发到login.jsp
170814关于Cookie的知识点的更多相关文章
- cookie&session&servletContext
一.cookie VS session 1)应用场景 cookie可以用于: 记录用户上次登录的时间 记住用户名和密码 session可以用于: 防止非法登录(即直接跳转到本来需登录验证方可登录的页面 ...
- 【转载】HTTP Cookie学习笔记
什么是cookie? cookie是什么?是饼干,小甜点? No! No! No! 我今天要总结的cookie并不是你所想的小甜心,我这里要说的cookie是Web开发中的一个重要的"武器& ...
- django之模型层(model)--查询补充及cookie
已经连续写了好几篇django的模型层(model)增删改查的随笔了,没篇大篇幅都是查询相关的操作,可以看出查询在数据的操作中是多么的重要,而本篇最后再补充一点关于关于查询的一些方法,模型层基本的操作 ...
- 67、django之模型层(model)--查询补充及mookie
本篇导航: F查询与Q查询 cookie 一.F查询与Q查询 1.以Book表为例 class Book(models.Model) : title = models.CharField(max_le ...
- JSON Web Token 使用详解
JWT 是什么? JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案.它是有三部分组成,示例如下,具体的讲解如下(jwt 是不会有空行的,下面只是为了显示,便使用了换行看着比较 ...
- 2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础
2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础 目录 实验内容与步骤 (一)Webgoat安装 (二)SQL注入攻击 1.命令注入(Command Injection ...
- 为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token
为什么你学不会递归?告别递归,谈谈我的一些经验 可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! ...
- 对EL自己以及对于param、header、cookie的相关应用的相关知识点的复习
EL表达式语言是一种可以计算和输出的java对象的简单语言. 列入请求语句为下面的方式:request.setAttribute("username","zhangsan ...
- Cookie 知识点再整理
1. Cookie 是存储在客户端 内存 或者 硬盘(例如火狐把 Cookie 存储在 C:\Documents and Settings\用户名\Application Data\Mozilla\ ...
随机推荐
- MM理论
最初的MM理论,即由美国的Modigliani和Miller(简称MM)教授于1958年6月份发表于<美国经济评论>的“资本结构.公司财务与资本”一文中所阐述的基本思想.该理论认为,在不考 ...
- [Python3] 018 if:我终于从分支中走出来了
目录 0. 谁是主角 1. 从三大结构说起 (1) 顺序 (2) 分支 1) 分支的基本语法 2) 双向分支 3) 多路分支 (3) 循环 0. 谁是主角 分支是主角 我前面几篇随笔提到 if 不下2 ...
- 触摸板PCB制作-TM12
1.布局: 使 PSoC 与Sensor之间的距离保持最小化是一个不错的做法. 通常将 PSoC 与其他组件一起贴装到底层,而将 CapSense Sensor置于顶层上. Sensor和栅格地层位 ...
- hibernate的get方法和load方法区别
读者需注意:Hibernate版本不同,运行机制不太一样,以下是hibernate3.x作为讲解 get方法: Hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然 ...
- Excel VBA批量处理寸照名字
需求:因为处理学生学籍照片,从照相馆拿回来的寸照是按班级整理好,文件名是相机编号的文件.那么处理的话,是这么一个思路,通过Excel表格打印出各班A4照片列表,让学生自行填上照片对应姓名.表格收回来后 ...
- 1897. tank 坦克游戏
传送门 显然考虑 $dp$,发现时间只和当前位置和攻击次数有关,设 $F[i][j][k]$ 表示当前位置为 $i,j$ ,攻击了 $k$ 次得到的最大分数 初始 $f[1][1][k]$ 为位置 $ ...
- vi编辑器没有颜色的解决办法
Centos里的VI只默认安装了vim-minimal-7.x.所以无论是输入vi或者vim查看文件,syntax功能都无法正常启用.因此需要用yum安装另外两个组件:vim-common-7.x和v ...
- 【推荐系统】知乎live入门
参考链接: 知乎推荐系统live:姚凯飞推荐系统live 目录 1.推荐概览与框架 2.细节补充 3.召回 4.排序 5.常用技能与日常工作 5.用户画像-特征工程 6.相关经验 7.推荐考试拿分路径 ...
- JavaScript基础3——使用Button提交表单
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 如何在Linux下手动编译安装gcc
如果可以通过apt来安装的话,尽量不要手工编译了,手工编译是最后的选择.用apt安装,只需要输入一条命令: sudo apt-get install gcc 手工编译的话,gcc和其他软件包存在如下的 ...