客户端缓存机制 - Cookie详解
Cookie
作者:Stanley 罗昊
【转载请注明出处和署名,谢谢!】
Cookie不是内置对象,所以用的时候需要new出来,Cookie是由服务端产生的,再发送给客户端保存,它不是内置对象,却是由服务端产生的,产生完后给了客户端;
它存在于客户端,却不是客户端产生的,是服务端产生的,产生完后给你了
Cookie的作用
Cookie就是我们所理解的缓存,本地缓存;
比如客户端访问服务端,第一次访问结束后,我就会产生一个Cookie,把这个Cookie保留到客户端,打个比方:我第一次打开一个网页去看一个视频,它就需要网络或上网流量请求服务器获取资源,看完后服务端就会将你看的这个视频放到一个Cookie里面,然后发送给客户端,我下次再去看这个视频的时候,我就无需连接网络直接在本地即可观看,所以这就叫服务端产生(请求资源需要请求对应视频的服务器),发送给客户端(请求完毕后【就是看完后】,将资源保存到本地);有点儿像一边看一边下载。
但是它有缺点,它除了能放视频它还能放电影、音乐、文章甚至我们的密码也能放,用户名信息也能放,所以放一些用户信息就比较危险了,比方说我第一次访问网站,我登录了,我的名字叫张三,密码abc,服务端将我的信息放到Cookie里面再发送给客户端,那我以后确实不需要登录了,我就可以直接在本地读取账号密码登录,这样就不安全了,万一别人用你电脑解析破解了。
所以Cookie能提高访问服务端的效率,但是安全性较差!
Cookie内部细节
Cookie内部包含一个key = value,有点像JSON跟MAP,既然它不是内置对象,那是谁提供的呢?
是一个扩展类:java.servlet.http.Cookie对象就是由这个类产生的,类产生对象,这些类跟这些对象的方法:
首先有一个构造方法,public Cookie(String key String value),通过构造方法,你可以写k你也可以写v;
String getName(),这个方法用来获取构造方法里面的key
String getValue(),这个就用来获取里面的值 Value
还有一个Void setMaxAge(int expiry),这个方法是设置最大有效期(单位是 秒)该方法说明:
我现在服务端把一个文件生成一个Cookie发给客户端了,但是它有时间限制,比如规定,30分钟内有效,超过就失效
准备Cookie 增加Cookie 发送Cookie 获取Cookie
1.在服务端准备Cookie
因为是构造方法,直接赋值即可,这里我们就模拟用户名=zs

密码=abc

2.增加Cookie

服务端发送给客户端需要一个内置对象:response.addCookie(Cookie cookie),把对象放进去即可,比如用户的信息做登录保存账号密码的时候用
3.发送Cookie
直接将页面跳转(转发 重定向都可以),比如说我现在服务端有一个Cookie了,我现在不管用转发还是重定向到第二个页面了,那我第二个页面就需要获取该Cookie
Cookie最终要到客户端去,所以我们开始发送Cookie到客户端(转发 重定向都可以,总之你跳转过去就行了):

我这里让它跳到了result.jsp页面了
4.获取Cookie
使用request.getCookie();
因为我们不能获取单个,所以返回必定是数组,获取后我们需要循环遍历出来,这里就假设result.jsp是客户端,因为客户端需要获取Cookie:

因为有key value对,所以我们获取时候也需要全部获取并且打印出来,获取key就cookie.getName(),获取value也就是值 cookie.getValue()即可;
值得注意的是,要获取Cookies不能获取某一个Cookie,只能获取全部Cookie,因为现在还没有提供获取单个Cookie的,比方说我现在客户端放了好多Cookie比如什么视频、用户名密码、图片,我客户端要获取就必须一次全拿到然后后遍历
假设刚才现在客户端现在需要访问服务端,服务端就是我们准备并且增加Cookie的那个页面,在那个页面上我有重定向,重定向到了客户端打印输出了,我们看一下运行结果:

很明显,我们成功的获取到了服务端发来的Cookie;
下面这个则是JSessionId,每一个Cookies都会有一个Name为JSessionId,它也是有key v 对。
今日感悟:
不要为了取悦他人而自我牺牲,
比如你为了家庭和睦取悦父母,为了寝室团结取悦舍友,为了情侣和谐取悦对象,
这样你的情绪就会一直被别人所支配,一直活在别人的胁迫之下,到最后你就明白,你所认为的牺牲,
在别人眼里,其实一文不值
客户端缓存机制 - Cookie详解的更多相关文章
- [转]hibernate缓存机制所有详解
以下文章来自http://www.blogjava.net/tbwshc/articles/380013.html Hibernate 所有缓存机制详解 hibernate提供的一级缓存 hibern ...
- memcached缓存机制+微软缓存机制使用详解
1. why Memcached 1.1 一台web服务器上,iis接收的请求数是有限的,当访问量超大的时候,网站访问就会遇到瓶颈了,处理方式就是运用多了服务器把请求数分流(集群),对外公布的就一 ...
- Cookie的使用、Cookie详解、HTTP cookies 详解、获取cookie的方法、客户端获取Cookie、深入解析cookie
Cookie是指某些网站为了辨别用户身份.进行session跟踪而存储在用户本地终端上的数据(通常经过加密),比如说有些网站需要登录才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我 ...
- cookie详解(含vue-cookie)
今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://mp.weixin.qq.com/s/NXrH7R8y2Dqxs9Ekm0u33w 原文如下,记录到此供以 ...
- Session和Cookie详解(1)
面试常问的有关session和cookie的问题: 1.session在分布式环境下怎么解决 2.集群下如何保证session踩中 3.cookie的大小 4.服务器怎么识别一个用户的 5.sessi ...
- [转]Cookie详解
从事 Web 开发已有近17个月:在学以致用的工作学习里,对于不怎么使用的部分,多少有些雾里探花的窘迫感-差不多是了解一二,然而又非真切的明晰:这就使得再用的时候,总要去再搜索一番:如此颇为难受,倒不 ...
- session及cookie详解(七)
前言 文章说明 在每整理一个技术点的时候,都要清楚,为什么去记录它.是为了工作上项目的需要?还是为了搭建技术基石,为学习更高深的技术做铺垫? 让每一篇文章都不是泛泛而谈,复制粘贴,都有它对自己技术提升 ...
- [置顶]
MVC输出缓存(OutputCache参数详解)
1.学习之前你应该知道这些 几乎每个项目都会用到缓存,这是必然的.以前在学校时做的网站基本上的一个标准就是1.搞定增删改查2.页面做的不要太差3.能运行(ps真的有这种情况,答辩验收的时候几个人在讲台 ...
- MVC输出缓存(OutputCache参数详解)
版权声明:本文为博主原创文章,未经博主允许转载随意. https://blog.csdn.net/kebi007/article/details/59199115 1.学习之前你应该知道这些 几乎每个 ...
随机推荐
- linux shell 发送qq邮件失败
安装 发送邮件功能 yum -y install postfix yum -y install mailx 使用 mail -s “fsfds” @qq.com < hh 第二次返回此信息 您在 ...
- [CF1138B]Circus
Description: 给你2个长度为n的01串 从中选出\(n/2\)个,使得选出的数中第一排1的个数等于未选出数中第二排1的个数 输出一种方案即可,没有输出-1 Hint: \(n \le 50 ...
- Java equals()方法和hashCode()方法
equals()方法 如果满足了以下任何一个条件,就不需要覆盖equals()方法: 1 类的每个实例本质上都是唯一的. 2 不关心类是否提供了“逻辑相等”的测试功能. 3 父类已经覆盖了equals ...
- 10-HTTPServletReauest和HTTPServletResponse
Servlet配置方式 1. 全路径匹配 以 / 开始 /a /aa/bb localhost:8080/项目名称/aa/bb 2. 路径匹配 , 前半段匹配 以 / 开始 , 但是以 * 结束 /a ...
- python学习:输入设置
输入设置 输入用户名和密码 代码: _user = "alex"_password = "abc123" username = input("User ...
- Spring SpringMVC SpringBoot SpringCloud概念、关系及区别
一.正面解读: Spring主要是基于IOC反转Beans管理Bean类,主要依存于SSH框架(Struts+Spring+Hibernate)这个MVC框架,所以定位很明确,Struts主要负责表示 ...
- 201771010126 王燕《面向对象程序设计(Java)》第十三周学习总结
实验十三 图形界面事件处理技术 实验时间 2018-11-22 1.实验目的与要求 (1) 掌握事件处理的基本原理,理解其用途: 事件源 (eventevent eventeventsource s ...
- python多版本管理工具(pyenv)
在学习和利用python开发的很多情况下,需要多版本的Python并存.此时需要在系统中安装多个Python,但又不能影响系统自带的 Python.pyenv 就是这样一个 Python 版本管理器. ...
- sv时序组合和时序逻辑
input a; input b; input c; reg d; wire e; reg f; // 时序逻辑,有寄存器 always@(posedge clk)begin 'b1)begin d ...
- 快速实现office文档在线预览展示(doc,docx,xls,xlsx,ppt,pptx)
微软:https://view.officeapps.live.com/op/view.aspx?src=(输入你的文档在服务器中的地址):