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详解的更多相关文章

  1. [转]hibernate缓存机制所有详解

    以下文章来自http://www.blogjava.net/tbwshc/articles/380013.html Hibernate 所有缓存机制详解 hibernate提供的一级缓存 hibern ...

  2. memcached缓存机制+微软缓存机制使用详解

    1. why Memcached 1.1   一台web服务器上,iis接收的请求数是有限的,当访问量超大的时候,网站访问就会遇到瓶颈了,处理方式就是运用多了服务器把请求数分流(集群),对外公布的就一 ...

  3. Cookie的使用、Cookie详解、HTTP cookies 详解、获取cookie的方法、客户端获取Cookie、深入解析cookie

    Cookie是指某些网站为了辨别用户身份.进行session跟踪而存储在用户本地终端上的数据(通常经过加密),比如说有些网站需要登录才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我 ...

  4. cookie详解(含vue-cookie)

    今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://mp.weixin.qq.com/s/NXrH7R8y2Dqxs9Ekm0u33w 原文如下,记录到此供以 ...

  5. Session和Cookie详解(1)

    面试常问的有关session和cookie的问题: 1.session在分布式环境下怎么解决 2.集群下如何保证session踩中 3.cookie的大小 4.服务器怎么识别一个用户的 5.sessi ...

  6. [转]Cookie详解

    从事 Web 开发已有近17个月:在学以致用的工作学习里,对于不怎么使用的部分,多少有些雾里探花的窘迫感-差不多是了解一二,然而又非真切的明晰:这就使得再用的时候,总要去再搜索一番:如此颇为难受,倒不 ...

  7. session及cookie详解(七)

    前言 文章说明 在每整理一个技术点的时候,都要清楚,为什么去记录它.是为了工作上项目的需要?还是为了搭建技术基石,为学习更高深的技术做铺垫? 让每一篇文章都不是泛泛而谈,复制粘贴,都有它对自己技术提升 ...

  8. [置顶] MVC输出缓存(OutputCache参数详解)

    1.学习之前你应该知道这些 几乎每个项目都会用到缓存,这是必然的.以前在学校时做的网站基本上的一个标准就是1.搞定增删改查2.页面做的不要太差3.能运行(ps真的有这种情况,答辩验收的时候几个人在讲台 ...

  9. MVC输出缓存(OutputCache参数详解)

    版权声明:本文为博主原创文章,未经博主允许转载随意. https://blog.csdn.net/kebi007/article/details/59199115 1.学习之前你应该知道这些 几乎每个 ...

随机推荐

  1. JavaWeb从开发环境搭建,到第一个servlet程序(图文)

    ##  开学到今天,已经是第三周了~  然而这门课的教材还没发~   滋滋滋   表示很“蓝瘦”~~~ Java Web开发环境搭建 1. 下载安装Tomcat 官网地址:http://tomcat. ...

  2. wamp apache 设置多端口

  3. 完整版本的推箱子小游戏,最简单的纯C语言打造

    /* 推箱子小游戏 1.定义绘制样式 用二维数组的方式 2.绘制图像 3.找出当前位置 4.逻辑判断,制造动作 根据数学xy轴的规律,这里使用ij 上移,行轴上升,行数减少 下移,行数下降,函数增加 ...

  4. Helm 入门指南

    Helm 为Kubernetes的软件包管理工具,Helm有两部分组成:Helm客户端.Tiller服务端,Helm三个主要部件:Chart.仓库.Release: Chart:为Kubernetes ...

  5. Linux SVN服务器的搭建配置及分支的创建与合并

    第一步:通过yum命令安装svnserve,命令如下: >yum -y install subversion 若需查看svn安装位置,可以用以下命令: >rpm -ql subversio ...

  6. mysql里的数据库引擎, 编码格式

    针对数据库里即使设置了varchar类型的字段, 值输入中文报错的情况,是因为数据库的默认编码类型不支持汉字输入. utf-8 可以编译全球通用的所有语言符号. 由1-6个可变字节组成,有非常严格的排 ...

  7. easyui-combotree选中指定的值

    选中根节点: //station_id为combotree控件id var station = $('#station_id').combotree('tree').tree('getRoots'); ...

  8. HelloPython

    HELLOWORD!你好!Python! 学习Python已有一段时间,一个人自学颇不容易,在此分享一些自己学习经验和感受,温故而知新,也希望自己能有些新收获. 学习Python,大多数人创建的第一个 ...

  9. jieba库的使用与词频统计

    1.词频统计 (1)词频分析是对文章中重要词汇出现的次数进行统计与分析,是文本 挖掘的重要手段.它是文献计量学中传统的和具有代表性的一种内容分析方法,基本原理是通过词出现频次多少的变化,来确定热点及其 ...

  10. Unbuntu 16.04 英文环境安装中文输入法

    ubuntu 16.04 使用的是ibus输入系统,没有预装中文输入法,你要自己安装一下.以中文拼音输入法为例:1.sudo apt install ibus-pinyin2.sudo apt ins ...