客户端缓存机制 - 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.学习之前你应该知道这些 几乎每个 ...
随机推荐
- 展开被 SpringBoot 玩的日子 《 四 》 Session 会话共享
共享Session-spring-session-data-redis 分布式系统中,sessiong共享有很多的解决方案,其中托管到缓存中应该是最常用的方案之一. Spring Session官方说 ...
- Pandas 1 表格数据类型DataFrame
# -*- encoding:utf-8 -*- # Copyright (c) 2015 Shiye Inc. # All rights reserved. # # Author: ldq < ...
- VMware ESXi 6.5 安装
1.1下载esxi镜像 此处我使用的版本是:VMware-VMvisor-Installer-6.5.0-4564106.x86_64 1.2新建一个虚拟机,硬件兼容性处选择ESXI6.5 硬盘40g ...
- meta标签的用处详解
meta标签的用处: 用来描述html文档的一个属性.列如作者.日期和时间,网页描述,关键字,页面刷新等. 是文档最基本的元数据 元数据(metadata): 用来概括描述数据的一些基本数据 meta ...
- DHCP工作原理简析
引言 DHCP是网络体系结构中应用层的一个重要协议,它可以帮助我们对要连接到互联网的计算机进行IP地址等信息的配置.本文从DHCP的原理出发,就DHCP的工作过程 进行详细的探讨. 主要报文 发现报文 ...
- 弄懂CNN,然后提升准确率4.21-4.27
英语: 1.每天背单词,75起步.(这周没怎么背,考虑调整了) 2.并背王江涛图画作文一:传统文化(这周没背,但肯定要做) 学校: 0.吴恩达ML 1.毕设一:可视化,肺癌基因突变,深度学习(那么作图 ...
- Java语法细节 - synchronized和volatile
目录 synchronized关键字 关键字volatile synchronized关键字 synchronized关键字锁住方法和this的不同之处: public synchronized vo ...
- 错误:Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file
Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file: /tmp/hsperfdat ...
- [shell] if语句用法
bash中如何实现条件判断?条件测试类型: 整数测试 字符测试 文件测试 一.条件测试的表达式: [ expression ] 括号两端必须要有空格 [[ expres ...
- Winsock编程基础2(UDP流程)
UDP用户数据报协议 服务器端 <1 创建套接字(socket) <2 绑定IP地址和端口(bind) <3 收发数据(sendto, recvfrom) <4 关闭连接(cl ...