会话技术cookie

会话技术

​ 什么是会话

  • 用户开一个浏览器
  • 点击多个超链接,访问服务器多个web资源
  • 然后关闭浏览器,整个过程称之为一个会话。
  • 和打电话一样,电话接收,开始会话,电话 挂断,结束会话

​ 会话技术解决什么问题

  • 保持各个客户端自己的数据
  • 每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,程序要想办法为每个用户保存这些数据

cookie

服务器怎样把Cookie写 给客户端

创建Cookie

  • Cookie cookie = new Cookie(String cookieName,String cookieValue);
  • cookie会以响应头的形式发送给客户端
  • Cookie只能存储非中文的字符串

向客户端发送cookie

​ response.addCookie(cookie名称)

访问

  • 第一次访问时, 请求头当中没有cookie, 响应当中会看到set-cookie
  • 再一次访问时, 请求头当中就能够看到cookie信息
  • 访问服务器的任何资源,一般情况下都会把cookie带去过

Cookie默认存储时间

默认cookie的会话级别

  • 打开浏览器,关闭浏览器为一次会话
  • 如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭,cookie信息销毁

设置Cookie在客户端的存储时间

  • cookie.setMaxAge(int seconds);
  • 设置的时间为秒
  • 如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里
  • 过期会自动删除

设置Cookie的携带路径

  • 访问某一个资源时,要不要带cookie信息。资源携带太多,会影响传输速度

  • 如果不设置携带路径

  • 默认情况下会在访问创建cookie的web资源相同的路径,都携带cookie信息

    在myxq/CookieServlet下创建的cookie

在myxq/下的index.jsp访问时会携带cookie

不是在myxq下,不会携带cookie

设置携带路径

cookie.setPath(String path);

  • cookie.setPath(“/CookiePro/cookieServlet”);只有访问cookieServlet才携带cookie信息
  • cookie.setPath(“/CookiePro”);访问指定的工程时, 都会携带cookie信息
  • cookie.setPath(“/”);访问服务器下部署的所有工程时都会携带cookie

删除Cookie

  • 如果想删除客户端的已经存储的cookie信息
  • 使用同名同路径的持久化时间为0的cookie进行覆盖即可

服务器如何获取客户端携带的cookie

  • 通过Request对象的getCookies()方法
  • 获取的是所有的cookie
  • 要进行遍历,找出自己名称的那一个

应用:记录上次登录时间

​ 需求

​ 访问时,显示上次的登录时间

​ 步骤

​ 1.第一次访问时,获取当前的时间,并把它写到cookie当中,响应给浏览器

​ 2.第一次访问,告诉用户是第一次访问

​ 3.用户下次访问时,获取用户携带的cookie,把日期在浏览器当中显示,记录最新的cookie

session

session简介

  • Session技术是将数据存储在服务器端的技术
  • 会为每个客户端都创建一块内存空间存储客户的数据
  • 客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间
  • Session需要借助于Cookie存储客户的唯一性标识SESSIONID

Session如何办到在一个servlet当中存数据,

  • 在别的servlet当中取出当初存储的数据
  • 每一个用户访问服务器时,会给该用户分配他自己对应的存储空间
  • 并且创建的存储空间有一个编号我们称为SessionID
  • 第一次访问时, 会把对应的sessionID以Cookie的形式写给浏览器
  • 下次再访问时, 会携带sessionID,找到当初创建的那个存储空间
  • 在对应的存储空间当中取出数据

如何获取Session对象

HttpSession session = request.getSession();
获得专属于当前会话的Session对象
如果服务器端没有该会话的Session对象,会创建一个新的Session返回
如果已经有了属于该会话的Session直接将已有的Session返回
本质就是根据SESSIONID判断该客户端是否在服务器上已经存在session了

怎样向session当中存取数据

​ Session对象也是一个域对象

  • session.setAttribute(String name,Object obj);
  • session.getAttribute(String name);
  • session.removeAttribute(String name);

session的生命周期

​ 创建

​ 第一次执行request.getSession()时创建

​ 销毁

  • 服务器关闭时
  • session过期/失效(默认30分钟)
  • 是从最后一次操作结束时计时
  • 手动销毁
  • session.invadate
  • 浏览器关闭,session就销毁,这句话是不正确的

​ 作用范围

​ 默认在一次会话中,一次会话中任何资源公用一个session对象

JSessionID持久化

  • 默认情况下,第一次获取session对象时, 会帮你创建一个session,可以获取该Session的ID
  • 会自动的把id写到cookie当中,在cookie中Session的ID 下标是 JSessionID

存在的问题

  • 第一次访问sevlet1时存储一些数据
  • 在第二个servlet当中直接取数据,可以直接取到
  • 把浏览器关闭
  • 直接到第二个servlet当中取数据,发现取不到数据了

原因

  • 因为访问的时候要求带着JSessionID.
  • 由于默认情况下,存储cookie是会话级别的,关闭浏览器,就没有了。
  • 所以再次打开浏览器,访问资源时,没有JSessionID. 就会创建一个新的session. 就取不到数据了

解决办法

  • 在写数据时,自己手动去把sessionID写到cookie当中
  • 写的时候,设置持久化时间
  • 注意,key值一定是和它自动生成的key值是一样的

会话技术cookie与session的更多相关文章

  1. Servlet 会话技术cookie和session

    会话技术 Cookie技术:会话数据保存在浏览器客户端. Session技术:会话数据保存在服务器端. 一.Cooke技术 1. 特点 Cookie技术:会话数据保存在浏览器客户端. 2 .Cooki ...

  2. 会话技术: Cookie 和 Session

    会话技术 会话技术:从浏览器开始访问服务器,到关闭浏览器,这期间发生了许多次请求和响应,这个过程就叫做一次会话. Cookie 和 Session 都是处理会话技术的两种具体实现,Cookie将数据保 ...

  3. Java EE会话技术Cookie和Session

    会话技术 一.定义 会话技术是帮助服务器记住客户端状态的(区分客户端的).将客户访问的信息存在本地的叫Cookie技术,存在服务器上的叫Session技术. 注意: 一次会话何时开始?从打开一个浏览器 ...

  4. 会话技术cookie和session详解

    什么是会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话技术解决了什么问题 每个用户与服务器进行交互的过程中,各自会有一 ...

  5. JAVA基础之会话技术-Cookie及Session

    至此,学习Servlet三个域对象:ServletContext(web项目).request(一次请求).Session(一个客户端)!均有相同的方法! 从用户开始打开浏览器进行操作,便开始了一次会 ...

  6. Java web 会话技术 cookie与session

    一.会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话过程中要解决的一些问题 每个用户在使用浏览器与服务器进行会话的过程 ...

  7. Django2.2 会话技术cookie session token的区别以及实例介绍

    一.区别: 本人见解:使用自定义数据项进行加密,作为唯一身份识别,登陆时写入cookie(session基于这个).在显示相关数据 1.cookie 属于客户端会话技术(数据存储在客户端) 默认的Co ...

  8. java ->会话技术Cookie&Session

    会话技术Cookie&Session 会话技术简介 存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的,也就是说每个客户 ...

  9. 会话技术 Cookie+Session

    会话:这种在多次HTTP连接间维护用户与同一用户发出的不同请求之间关联的情况称为维护一个会话(session) 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开: 功能:在一次会话 ...

随机推荐

  1. Java反射机制、注解及JPA实现

    1.java反射概述 JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称 ...

  2. 【数字图像处理】gamma变换

    论文:gamma校正的快速算法及其c语言实现 gamma变换实现过程 假设图像中有一个像素,值是 200 ,那么对这个像素进行校正必须执行如下步骤: 1. 归一化 :将像素值转换为  0 - 1  之 ...

  3. iOS 如何判断一个点在某个指定区域中

    在iOS 开发中会遇到 判断位置的情况 iOS 自己都有函数实现的这些功能. 判断一个点是否在这个rect区域中 bool CGRectContainsPoint(CGRect rect,CGPoin ...

  4. 记一次B类地址子网划分

    说明:一般内网地址,没有要求严格的划分之类的.需要按要求严格划分一般都是公网地址 温馨提醒:由于笔者功底不是很深厚,只能说我们保证把数算对用相对简单的方法 现有一个公网ip,B类地址130.3.0.0 ...

  5. django操作mysql

    连接mysql 1.安装pymysql 操作指令 : pymsql: pip install pymysql 2.导入库 在项目目录下的__init__.py文件中导入pymysql模块 加入以下两行 ...

  6. 【异常】Maxwell异常 Exception in thread "main" net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 1, column 596. Encountered: <EOF> after : ""

    1 详细异常 Exception in thread "main" net.sf.jsqlparser.parser.TokenMgrError: Lexical error at ...

  7. 【python cookbook】找出序列中出现次数最多的元素

    问题 <Python Cookbook>中有这么一个问题,给定一个序列,找出该序列出现次数最多的元素.例如: words = [ 'look', 'into', 'my', 'eyes', ...

  8. 论文阅读:Deformable ConvNets v2

    论文地址:http://arxiv.org/abs/1811.11168 作者:pprp 时间:2019年5月11日 0. 摘要 DCNv1引入了可变形卷积,能更好的适应目标的几何变换.但是v1可视化 ...

  9. Windows10安装MongoDB4.0详细流程及启动配置

    一.安装 首先去官网下载Mongodb安装包,网址https://www.mongodb.com/download-center/community,下载完成后双击安装就行 安装步骤: 1.点击nex ...

  10. 第七届蓝桥杯C/C++程序设计本科B组决赛 ——棋子换位(代码补全题)

    棋子换位 有n个棋子A,n个棋子B,在棋盘上排成一行.它们中间隔着一个空位,用“.”表示,比如: AAA.BBB 现在需要所有的A棋子和B棋子交换位置.移动棋子的规则是:1. A棋子只能往右边移动,B ...