cookie

什么是会话呢?
       所谓的会话过程就是指从打开浏览器到关闭浏览器的过程。

Cookie和Session指的又是什么呢?
       大家都知道,http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息。如果说我们要实现购物车添加或删除商品的功能的话,我们就需要使用到Cookie和Session技术。也就是说,Cookie和Session是域对象。所谓域就相当于给存储的内容设置一个边界,将存储的内容存储到这片区域内。
什么是HttpServletResponse转发和重定向?
        因为将下面的域对象的时候会用到转发和重定向的知识点,所以在此补充一下.......

        ①.转发:转发时浏览器地址栏不会发生改变。

                      转发时浏览器发送了一次请求。

                      转发时发生在服务器内部,浏览器不知道转发的发生。

                      RequestDispatcher rd = request.getRequestDispatcher("转发到的页面");

 rd.forward(request, response);

         ②.重定向:重定向时地址栏发生改变。

                           重定向时浏览器发送了两次请求。

                           重定向时发生在浏览器端的,浏览器知道重定向的发生。

                        response.sendRedirect("重定向到的页面");
Request域、ServletContext域、pageContext域、Cookie域、Session域的区别是什么?
     用在网上购买东西这个案例来剖析这个问题。

    ①.request域:表示的是一次请求范围内。

       如果说,我要去购买一件上衣向服务器发送一个购买请求,它返回给我一个购买成功的响应;当我再去购买一个裤子的时候就相当于又一个请求,那么这时候用转发的话当然就不行了,如果用重定向的话可以解决这个问题,只不过比较麻烦。然后把里面所购买的上衣的数据从request域拿出来和第二个请求拼接在一起在存入request域中。

      但是当我要去结算的,就是在另一个Servlet中,这个时候我的request域中的数据就会全部丢失。具体如下图所示:

    

②.ServletContext域和pageContext域:
      这两个域在我看来没有本质上的区别,可以理解为服务器端的共享空间。只不过说,ServletContext域表示的是整个web服务,而pageContext域表示的是一次请求。

      如果说,我要购买一件上衣,向服务器发送一个请求,服务器返回给我一个购买成功的请求 ,同样的再去购买一条裤子也是一样的。看来一切都是正常的,结算也可以去结算界面结算我的总金额。

      但是,我要说的是,因为这是一个购物界面,所以就不会只是你一个用户。因为这是一个服务器端的共享空间,所以当别人也去购买东西添加购物车后,你去结算的时候就包括自己和别人共同的东西。具体如下图所示:

        ③.Cookie域:

     Cookie域就是所谓的会话技术,或者说是客户端技术。

      同样去买一件上衣,这个时候就会把上衣这个对象存入的开辟的Cookie空间中, Cookie空间为此对象绑定一个唯一的标识然后以响应头方式返回给客户端,当再去购买裤子的时候会带着这个唯一标识以请求头的方式存入到Cookie空间中,同时为它绑定唯一的标识。因为Cookie域保存在自己浏览器内部,与别人互不干扰,但因为是客户端技术,所以安全性不高。具体如下图所示:

④.Session域

     Session域就是另一种会话技术,也叫做服务器端技术。Session的底层也是基于Cookie的,只不过有自己的改变。

     和Cookie一样,去买一件上衣,这个时候就会把上衣这个对象存入的开辟的Session空间中, Session空间为此对象生成一个唯一的Key值,当再去购买裤子的时候会带着这个唯一的Key值存入到Cookie空间中,同时为它绑定唯一的Key值。因为Session域同样保存在自己浏览器内部,与别人互不干扰,它相较于Cookie而言是服务器技术,较安全。具体如下图所示:

     

Cookie域的常用方法:
    1.获取Cookie的内容:

  Cookie[] cookies = request.getCookies();

 因为如果我们打开京东的同时,同时去打开淘宝等,这个时候就会存在多个Cookie

 2.Cookie的构造方法:Cookie(String name,String value)

 3.获取Cookie的值:String  getValue()

 4.获取Cookie的名称:String getName()

 5.设置有效的时间:void SetMaxAge(int expiry)

  ①.会话级别的Cookie:默认一个会话的时间,默认保存在浏览器内存中

  ②.持久的Cookie:把Cookie保存到磁盘上,通过(5.)设置。eg:保存用户名,QQ...等

    SetMaxAge(0):提前将Cookie结束

    前提条件:有效路径必须相同,从别的Servlet停止,首先要设置同一路径。

 6.设置有效路径: void SetPath(String url)

 7.设置有效域名:void SetDomain(String patten)

   eg:我要登录百度,那么:www.baidu.com

       登录百度书城:book.baidu.com

       SetDomain(".baidu.com");

Session域的常用方法:
  1. 如何获得session对象

    HttpSession session =request.getSession();

  2. 如何存取数据

    String age = (String)session.getAttribute("age");

      //getAttribute(String name)

     //通过Session来存入内容,然后来获取这指定的值,或添加指定的值

    session.setAttribute("age","20");

    session.removeAttribute(“age”);

   3.String  getId() 获取Session的唯一id

   4.void  invalidate() 销毁Session

  就先简单介绍到这里....
————————————————
版权声明:本文为CSDN博主「臆想的一只猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42047611/article/details/80424521

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/124995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jenkins如何安装?

docker pull jenkins/jenkins:lts-centos7-jdk8 2.docker-compose.yml version: 3 services:jenkins:image: jenkins/jenkins:lts-centos7-jdk8container_name: my-jenkinsports:- "8080:8080" # 映射 Jenkins Web 界面端口volumes:- jenkins_home:/var/jenkins_h…

Android NDK开发详解之Android.mk探秘

Android NDK开发详解之Android.mk探秘 概览基础知识变量和宏NDK 定义的 include 变量CLEAR_VARSBUILD_EXECUTABLEBUILD_SHARED_LIBRARYBUILD_STATIC_LIBRARYPREBUILT_SHARED_LIBRARYPREBUILT_STATIC_LIBRARY 目标信息变量TARGET_ARCHTARGET_PLATFORMTARGET_ABI 模块描述变量LOC…

Java架构师系统架构设计全流程

目录 1 导学2 软件架构概述2.1 软件架构设计与生命周期2.2 构件3 软件架构风格3.1 数据流风格3.2 虚拟机风格3.3 层次架构风格3.4 面向服务的架构风格4 软件架构复用4.1 特定领域软件架构4.2 基于架构的软件开发5 软件系统的质量属性6 软件架构评估6.1 质量属性6.2 三种常用的评…

【网络协议】聊聊套接字socket

网络编程我们知道是通过socket进行编程的,其实socket也是基于TCP和UDP协议进行编程的。但是在socket层面是感知不到下层的,所以在设置参数的时候,其实是端到端协议智商的网络层和传输层。TCP是数据流所以设置为SOCK_STREAM,而UDP是…

Android Studio Giraffe解决gradle reload failed问题

settings.gradle.kts中 pluginManagement {repositories {google()mavenCentral()gradlePluginPortal()} } dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()} } 各增加三行内容&#x…

一文读懂,数字化时代下「产业大数据」的重要性!

数字化时代下,「产业大数据」的重要性日益凸显,已经成为企业和政府决策的关键因素。这一现象不仅改变了产业格局,还推动着创新和发展的浪潮。本文将深入探讨产业大数据的重要性,以便更好地理解它在现代社会中的作用。 1. 什么是产…

【Postgres】Postgres常用命令

文章目录 1、导出数据库某张表2、导入某张表到数据库3、查看数据库占用磁盘页数情况4、查看数据库大小5、查看数据表大小6、查看索引大小7、对数据库中表索引按照大小排序8、对数据库中表按照大小排序9、回收空间(建议先回收指定表)10、设置主键自增序列…

Python-platform模块

platform目录 前言一、platform.system()二、platform.release()三、platform.python_version()四、platform.machine()五、platform.python_implementation()六、其他代码示例七、help总结前言 Python platform模块是一个用于获取和操作操作系统相关信息的内置模块。它提供了…

关键点检测、姿态识别、目标检测、车牌识别等项目部署代码+数据集汇总

一、AI健身计数 1、图片视频检测 (cpu运行): 注:左上角为fps,左下角为次数统计。 1.哑铃弯举:12,14,16 详细环境安装教程:pyqt5AI健身CPU实时检测mediapipe 可视化界面…

ES6中Set集合

ES6中的Set是一种数据结构,类似于数组,但是它的值都是唯一的。它是通过一组有序的、由唯一元素组成的集合实现的,不允许重复项。Set可以用于存储任何类型的数据,包括原始类型和复合类型,如对象和数组。 Set有以下特点…

高效分割分段视频:提升您的视频剪辑能力

在数字媒体时代,视频剪辑已经成为一项重要的技能。无论是制作个人影片、广告还是其他类型的视频内容,掌握高效的视频剪辑技巧都是必不可少的。本文将介绍如何引用云炫AI智剪高效地分割和分段视频,以提升您的视频剪辑能力。以下是详细的操作步…

勇立潮头丨家装设计师首选品牌意大利OXO专注品质 为消费者带来个性化整卫方案

近几年,“整装”赛道大热,“整家”、“整装”、“大家居”在行业内引发诸多热烈讨论。在卫浴行业,卫浴头部定制企业率先开启了一波套餐式营销战。 在传统的卫浴销售模式下对尺寸大小的匹配已经无法满足当今家居消费主力的需求,单…

STM32-LIN总线详解1

.硬件规范: 1.总线形式:一主多从 2.总线通常为12V电压,最高波特率20K,最多容纳16个节点。 也有24V,和其他电平需要共地。 3.总线上波形 4. 单片机STM32与LIN收发器在LIN_CAN开发板上设计。 1K电阻自动控制电路&…

二叉搜索树的最小绝对差[简单]

优质博文:IT-BLOG-CN 一、题目 给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root [4,2,6,1,3] 输出:1 示例 …

网页2D/3D的开发框架

开发2D和3D网页的框架有很多,具体选择取决于您的项目需求和个人偏好。以下是一些常用的2D和3D网页开发框架,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 2D 网页开发框架: …

【多线程面试题十八】、说一说Java中乐观锁和悲观锁的区别

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:说一说Java中乐观锁和悲…

电脑技巧:Win10飞行模式相关知识介绍

目录 一、飞行模式简介 二、如何开关Windows 10中的飞行模式 方法一:使用硬件开关 方法二:使用Windows 10操作中心 方法三:使用Windows 10设置 三、飞行模式开关被卡住、变灰或不工作时怎么办 什么是 Windows 10 飞行模式? 用户如何打…

(草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。

子窗口向主窗口发射信号。 只需要插入两行代码 class CodeSettingWindow(Ui_CodeSetting, QMainWindow):_signal pyqtSignal(int, int, int) # 这个信号要放在class之下,———init————函数上def __init__(self):# self.Win_X, self.Win_Y, self.CodeNum表示…

国风AI绘画平台Trik;「一个女孩的一生」走红;音视频转文字的精准处理指南;神经网络原理动画 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🉑 智谱AI推出第三代基座大模型ChatGLM3,瞄向了 GPT-4V https://github.com/THUDM/ChatGLM3 10月27日,智谱AI宣布…

乐观锁和悲观锁的使用介绍

乐观锁和悲观锁的使用介绍 什么是悲观锁?什么是乐观锁?乐观锁和悲观锁的实现方式乐观锁的实现方乐观锁存在哪些问题?1.ABA问题2.高竞争下的开销问题 在并发冲突概率大的高竞争环境下,如果CAS一直失败,会一直重试&#…