Cookie的理解

理解Cookie和Session(会话技术):

其实Cookie和Session就是会话技术的两种,他们各自有各自的作用。会话技术的介绍

为什么需要会话技术?

由于http协议是无状态的,也就是说每个用户访问服务器的时候,服务器并不知道是谁在访问它。 所以这个时候我们就需要利用会话技术来帮助服务器来记住客户端。

举个例子: 我们的web购物系统,我们用户将将准备买的物品信息存储在哪里呢?

会话技术到底是什么?

一次会话:从打开一个浏览器访问一个服务器站点,到关闭这个浏览器的整个过程称。 会话技术分为两种,Cookie和Session: + Cookie: 将数据存储在本地磁盘,可以减少服务器的存储压力,但是安全性能不好,客户端用户可以自发的清楚掉Cookie信息。 + Session:将数据存储在服务器中,安全性能好,但是服务器压力会比较大。

Cookie介绍

我用一个简单的例子来介绍Cookie是什么: 在我们日常生活中,比如我们是一个健身房的会员,健身房就会给你发一张VIP卡,这张VIP卡上面记录有你的姓名,联系方式,会员有效时间等等记录,每次你到健身房去健身,只要你拿出了这张健身卡别人就知道是你了。

这个例子就类似于我们用户第一次访问服务器,服务器也会像健身房一样给我们用户发送一些信息,用来记录用户信息。

一些Cookie的API

  • 创建一个cookie:
Cookie cookie = new Cookie(String cookieName,String cookieValue);
/* 注意:cookie不能存储中文信息*/
  • 设置Cookie的持久化时间:
cookie.setMaxAge(int seconds); /* 时间秒 */

注意:如果不设置持久化时间cookie会存储在浏览器的内存中,浏览器关闭的话Cookie的信息就销毁了,如果设置了持久化时间的话那么cookie将会被存储到磁盘文件中。

示例:

cookie.setMaxAge(10*60);

*设置cookie信息在浏览器的磁盘文件中存储的时间是10分钟,过期浏览器 自动删除该cookie信息*

  • 删除客户端的cookie: 如果想删除客户端的已经存储的cookie信息,那么就使用同名同路径的持久化时 间为0的cookie进行覆盖即可
cookie.setMaxAge(0);
  • 向客户端发送cookie:
response.addCookie(Cookie cookie);

服务器接受客户端的信息

//获得客户端携带的Cookie的数据
/*获得信息并且输出*/
Cookie[] cookie = request.getCookies();
//通过cookie名称获得想要的cookie
for (Cookie cookie1 : cookie) {
    String cookieName = cookie1.getName();
    if (cookieName.equals("name")) {
        String cookieValue = cookie1.getValue();
        System.out.println(cookieValue);
    }
}

本文分享自微信公众号 - Java编程指南(JavaXxzyfx),作者:Java编程指南

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分布式锁总结

    redis、数据库等实现的分布式锁,需要设置锁超时时间的原因在于:其他客户端无法得知已经获取锁的客户端的状态 是挂了呢,还是正在执行。所以只能傻傻的设置一个超时...

    Java编程指南
  • 如何在IntelliJ IDEA 中使用 Git ?你会没...

    Git是目前流行的分布式版本管理系统。它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响。也因此其近乎所有的操作都是本地执行,...

    Java编程指南
  • Redis实战技巧之-配置、持久化、复制

    Redis的配置主要放置在redis.conf,可以通过修改配置文件实现Redis许多特性,比如复制,持久化,集群等。

    Java编程指南
  • 深入了解浏览器存储

    随着移动网络的发展与演化,我们手机上现在除了有原生 App,还能跑“WebApp”——它即开即用,用完即走。一个优秀的 WebApp 甚至可以拥有和原生 App...

    黄泽杰
  • 个人python开发环境搭建

    py3study
  • 如何搭建一个linux服务器

    1, 首先 下载一个linux server 系统镜像    ubuntu 64bit下载      http://www.ubuntu.com/downloa...

    Gxjun
  • Memcached 安装配置

    官方网站:http://memcached.org/ 安装 下载,解压,进入文件夹 $ sudo apt install libsasl2-dev libeve...

    康怀帅
  • 从16.6%到74.2%,谷歌新模型刷新ImageNet纪录,第一作者是上海交大毕业生谢其哲

    这个叫Noisy Student的新模型,将ImageNet图像分类的top-1准确率提高到了87.4%,比此前最好的FixResNetXt-101 32×48...

    量子位
  • TechHQ首席架构师浓缩1000小时的项目经验总结出5大技能点,架构师必看!

    自从我开始担任TechHQ的首席架构师以来,我已经设计了至少十几个区块链应用程序了。我入职后的第一项任务是写一篇关于作为架构师如何开始学习区块链技术的文章。

    区块链大本营
  • Linux笔记二

    例如:ubuntu.kail.deepin.deebin.centos.等等等 内核小,运行速度快,但是在图形界面上劣势于win10。命令行界面是它一大优点...

    林祈

扫码关注云+社区

领取腾讯云代金券