今天是刘小爱自学Java的第91天。

感谢你的观看,谢谢你。

话不多说,开始今天的学习:


学cookie之前,我先说一个问题:

  • 如果我设置浏览器不保存cookie。
  • 会发现很多网站都没法登录了。
  • 购物网站购物车里的数据自然也查不到了。

我们做一个测试,使用谷歌浏览器将cookie关闭,操作流程如下图所示:


当设置阻止所有Cookie后,会发现很多网站都没法登录了,今天就学一学这个Cookie。

一、Cookie概述

1Cookie引入

什么叫cookie?

简而言之就是:会话过程中会产生数据,而数据的产生需要保存,就需要使用到cookie技术。

那什么又叫会话呢?

简而言之就是:浏览器请求和服务器响应是一个小循环,一个或多个小循环就是一个会话。

为何阻止Cookie后,很多网站就没法登录了?

因为部分数据是存储在Cookie里的,把它阻止后数据无法存储,自然没法登录了。

总而言之Cookie就是服务器在浏览器上暂时保存的数据,典型例子就是记住用户名和密码。

2记住用户名和密码

我们在网页上登录的时候,如果选择了记住密码,下次登录时就能直接登录。

其数据就是存储在Cookie的,以此为例编写一个案例:


给登录页面加入了一个单选框,用来说明是否勾选记住密码:

  • 如果勾选了记住密码,服务器就得创建对应的Cookie,这样数据就被存储在浏览器上了。

  • 如果没有勾选记住密码,则无须创建。

接着再来进行代码编写。

二、Cookie基本API

1设定Cookie


①获取请求信息

这些方法这在学request时就讲过,不再赘述。

其中单选框用来判断是否需要使用到Cookie,如果被选中,其值为on。

②根据请求信息设定Cookie

Cookie对应Java中的一个类,其参数即为一个键值对:

  • key:该cookie的名称。
  • value:该cookie对应的值。

设定好Cookie后,将其响应给浏览器就好了。

这样做有什么好处?

下次浏览器再访问服务器时,Cookie中的数据就能直接获取了。

2获取Cookie


①获取cookie并遍历

通过请求获取浏览器中本身就存在的Cookie,因为有一个或者多个Cookie,所以是数组。

故需要使用增强for循环遍历。

②获取对应的cookie值

Cookie的getName(),获取的是它的名。

Cookie的getValue(),获取的是它的值。

3Cookie的特殊字符


①特殊字符

如果直接在Cookie中存入的值包含特殊字符,响应该Cookie时会报错。

②编码特殊字符

使用URLEncoder类的encode方法,将其编码:

  • 参数1:需要编码的值
  • 参数2:指定编码字符集

这样就能将特殊字符存入Cookie了。

既然有编码,那么再次使用Cookie的时候肯定就要解码了。


③解码

  • 编码对应的是URLEncoder类,方法为encode()
  • 解码对应的是URLDecoder类,方法为decode()

解码后的字符和编码前的字符就一样了。

4Cookie的存活时间&有效路径

现在浏览器中有了一个名为demo的Cookie,若是想将其删除该怎么办?

通过浏览器设置可以删除,通过代码也可以:


①创建一个相同名的Cookie

要删除名为demo的Cookie,就可以重新创建一个相同名称的Cookie来代替它。

再将存活时间设定为0即可删除了。

②保证有效路径一致

这个因为在创建名为demo的Cookie时并没有设定路径,所以这里可以不写。

但是这个api要知道:

setPath()即为设定Cookie的有效路径。

当设置Cookie的有效路径后,就只能在有效路径或其子路径下访问这个Cookie了。

③将存活时间设定为0秒

setMaxAge(0)即设定Cookie存活时间为0。

以上就是对Cookie的说明,除了Cookie可以存储数据外,和其类似的还有一个Session。

三、Session技术

1Session引入

Session与Cookie的功能很相似,区别在于:

Cookie是服务器记录在了浏览器的数据,而Session是服务器记录在服务器上的数据。

那Session到底有什么用呢?先画一张图:


①为什么要有Session?

用户A用户B都可以通过同一台电脑的浏览器,登录某个购物网站选东西。

那么用户A如何保证自己在服务器中找到的是用户A购物车的数据而不是用户B的数据呢?

就需要使用到Session了。

②Session怎么使用?

用户A访问服务器:

  • 先会自动创建一个唯一的SessionID。
  • 然后将SessionID存储到Cookie中。
  • 最后将Cookie响应到浏览器。

用户A再次访问服务器时,会根据Cookie找到对应的SessionID。

用户B访问服务器时,其Cookie中没有Session数据,就会新创建一个新的SessionID。

等于是说:SessionID是和用户绑定的,这样就不会出现用户之间数据弄混的情况了。

2Session基本API


①getSession()方法

其参数一共有三种情况:

  • 无参数时:若是有Session就获取当前Session,若是没有就创建新的Session。
  • 参数为true:同无参数时的效果。
  • 参数为false:若是没有Session不会创建,会返回null。

②getId()方法

不用多说,其获取的也就是当前session的id。

③invalidate()方法

invalidate,翻译过来就是使之无效的意思。

也就是说该Session对应的id无效了,再次使用getSession()时会重新生成一个新的id。

其中可以使用getSession(false)方法来判断,如果结果为null即id失效了。

最后

时间和精力各方面都受限,Cookie和Session的知识点并没有学全面。

单独再花一天去学又会拖学习进度,鱼与熊掌不可兼得,只能舍弃一部分了。

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

ajax获取session值_【JavaWeb】91:Cookie与Session相关推荐

  1. session 拦截器中获取不到session值_拦截器实现登陆验证

    案例效果: 介绍↑:进入主页,分别看到"登录页面"和"首页". 介绍↑:点击进入"登录页面"后输入"用户名和密码"点击提 ...

  2. JavaWeb(七)——Cookie、Session

    文章目录 1. 会话 2. 保存会话的两种技术 3. Cookie 4. Session(重点) 1. 会话 会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称 ...

  3. JavaWeb之Cookie,Session

    目录 一.Cookie 1.1概念 1.2快速入门 1.3Cookie细节 1.3.1 一次可不可以发送多个cookie? 1.3.2 cookie在浏览器中保存多长时间? 1.3.3 cookie能 ...

  4. javaWeb之Cookie和Session

    会话技术 在了解cookie和session之前,需要先了解一个概念:会话 1. 概念 在日常生活中,从拨通电话到挂断电话之间的一连串的你问我答的过程就是一个会话.web应用中的会话过程类似于生活中的 ...

  5. jsonp react 获取返回值_必须要会的 50 个React 面试题(下)

    翻译:疯狂的技术宅 原文:https://www.edureka.co/blog/interview-questions/react-interview-questions 29. 你对受控组件和非受 ...

  6. python获取返回值_【Python】python获取线程的返回值

    threading模块默认没有获取线程返回值的方法. 下面通过重写threading.Tread类来实现:from threading import Thread import random impo ...

  7. python 获取唯一值_从Python列表中获取唯一值

    python 获取唯一值 In this article, we will be understanding 3 ways to get unique values from a Python lis ...

  8. js获取classname值_利用js获取元素class值的两种方法

    我们有时为了达到某种效果,需要以元素的class值为条件做判断. 我们如何利用JavaScript获取元素class的值?我们先看下面代码: x=document.getElementsByTagNa ...

  9. python如何使用session和cookie_django进阶之cookie和session的使用示例

    Cookies :是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它收到服务器回发送过来的cookies.它保存在浏览器下的某个文件夹下. Session:Django ...

最新文章

  1. OSI中端到端与点到点区别。
  2. COM线程模型的行为
  3. Android Dialog 系统样式讲解及透明背景
  4. Orchard之生成新模板
  5. 热血致敬!曾影响几代科学巨匠的传奇经典,至今仍无人能超越!
  6. qt添加资源文件后编译失败,提示Qt:Error:No rule to make target ’ … /…/??.png’,needed by ‘debug/qrc_qrc.cpp’ stop
  7. mysql存储过程自定义结构体_(转)MySQL存储过程/存储过程与自定义函数的区别...
  8. 团队作业——Alpha冲刺 4/12
  9. 如何导出微信的小视频
  10. 使用python获取nature系列期刊封面高清图片
  11. bowen -猜拳游戏
  12. 【5G】NAS安全密钥衍生算法详解
  13. 软件设计测试过程术语BD FD DD
  14. Visual Tracking Resources
  15. 关于电脑安装新硬盘,出现无法是识别设备,03F0问题解答。
  16. 【SpringBoot】3、SpringBoot中整合Thymeleaf模板引擎
  17. 李建忠讲23种设计模式笔记-上
  18. 7.23翻倍奖励——滴滴快车单(成交率≥60%,≥5指派单)
  19. Moodle官方主题文档中文版(自用)
  20. android dex文件过多,意外的最高级别异常:com.android.dex.DexException:定义了多个dex文件...

热门文章

  1. Mapreduce概念及流程介绍
  2. 什么情况下需要搭建大数据平台
  3. 火爆的大数据被什么拖了后腿
  4. 《Python自动化》学习笔记:百度云智能实现提取身份证信息
  5. 辐流式重力浓缩池计算_污泥浓缩池工作方式
  6. cdr你的产品已禁用_Coreldraw提示已安装另一版本导致安装失败的解决办法
  7. 依赖注入有点_12.24 (Core管道amp;中间件amp;依赖注入+琐碎笔记)
  8. python︱函数、for、if、_name_、迭代器、防范报错、类定义、装饰器、argparse模块、yield
  9. HTTP缓存策略 304
  10. foreman架构的引入6-整合puppetmaster