会话的概念

  • 会话可以简单理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
    会话需要解决的问题

  • 每个用户与服务器进行交互的过程中,各自会有一些数据,程序要想办法保存每一个用户的数据。

  • 例如:用户点击超链接通过一个servlet购买了一个商品,程序应该保存用户购买的商品,以便于用户点结账servlet时,结账servlet可以得到用户商品为用户结账。
  • 用户购买的商品保存在request或servletContext中行不行?

保存会话数据的两种技术(web通用的技术)

  • Cookie是客户端技术,cookie是小段文本信息,在网络服务器上生成,并发送给浏览器。通过使用cookie可以标识用户身份,记录用户名和密码,跟踪重复用户等。浏览器将cookie以key/value的形式保存到客户机的某个指定目录中。
  • Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,雅思分数可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。



注:cookie原理中用户分别发送了三次请求(电视,手机,结账);上述原理图中最大的区分点在信息的存储位置(客户端or服务端)

管理HTTP协议会话状态 :Cookie 和Session
Cookie:将用户相关数据,保存客户端
用户每次访问服务器自动携带cookie数据
Session :
将用户相关数据,保存服务器端,为每个客户端生成一个独立Session数据对象,雅思周末班通过对象唯一编号,区分哪个浏览器对应哪个Session。

Cookie技术

接下来我们通过cookie来实现一个查看访问时间的案例:


(客户端收到访问时间,浏览器会将其缓存起来,下一次访问时,会自动读取时间,在请求中携带一个访问时间的头信息)

为了能够使用户直观地知道是否是第一次访问,我们在用户第一次访问时显示一个欢迎界面,这里会用到response.setContentType()方法(response.setContentType(MIME)的作用是使客户端浏览器,武汉出国中介区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。),例如

  • response.setContentType(“text/html; charset=utf-8”); html
  • .setContentType(“text/plain; charset=utf-8”); 文本
  • text/javascript json数据
  • application/xml xml数据

如果cookie已经存在,即不是第一次访问,需要获得最后的访问时间

Cookie获得访问时间小结
1、通过服务器向客户端写cookie
Cookie cookie=new
Cookie(name,value);
response.addCookie(cookie);
* 在HTTP协议响应头信息中
Set-Cookie: last=1339556457609

2、当客户端存在cookie之后,以后每次请求自动携带 HTTP协议请求头信息 Cookie: last=1339556456859

服务器端获得需要cookie数据
Cookie[] cookies=request.getCookies(); —- 获得客户端所有cookie

if(cookies==null){} 判断cookie是否存在

遍历cookie获得需要信息

CookieAPI 详解
1、将cookie写回客户端 response.addCookie(cookie);
2、读取请求中
cookie信息 request.getCookies();
3、Cookie对象创建 new Cookie(name,value )
*
cookie的name 不允许改变 —– getName 、getValue 、setValue*

什么是会话cookie ,什么是持久cookie ?

  • cookie信息默认情况,保存在浏览器内存中 —— 会话cookie,会话cookie 会在关闭浏览器时清除 (默认情况下是会话cookie)
  • 持久Cookie,cookie数据保存客户端硬盘上,通过setMaxAge 设置Cookie为持久Cookie(API:void
    setMaxAge(int expiry);//Sets the maximum age in seconds for this
    Cookie),例子:小学英语词汇登录网站时,会出现两个月之内自动登录之类的功能
    * 在JavaAPI 中所有与时间相关参数,int 类型 单位秒,
    long类型 单位毫秒

访问cookie有效路径path:默认情况下,生成cookie时,产生默认有效访问路径
(默认生成cookie程序路径),会在对应位置生成一个文本文档

第二次访问程序携带cookie信息,如果访问路径与path不一致,不会携带cookie 信息 (不同的路径得到不同信息)
company
cookie : path — /day07/serlvet
last cookie : path — /day07

访问 :http://localhost/day07/servlet/path —- 同时满足/day07/serlvet、/day07 携带
company 和 last两个cookie信息
访问 :http://localhost/day07/lastvisit —- 满足 /day07
不满足/day07/serlvet 携带 last 一个cookie 信息

注意:程序开发,尽量使用setPath手动对Path路径进行设置,例如

Cookie及通过Cookie常见应用的更多相关文章

  1. 详解 Cookie 纪要(vue.cookie,jquery.cookie简化)

    今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://www.jeffjade.com/2016/10/31/115-summary-of-cookie/ 原文 ...

  2. jQuery插件 -- Cookie插件jquery.cookie.js(转)

    Cookie是网站设计者放置在客户端的小文本文件.Cookie能为用户提供很多的使得,例如购物网站存储用户曾经浏览过的产品列表,或者门户网站记住用户喜欢选择浏览哪类新闻. 在用户允许的情况下,还可以存 ...

  3. jquery.cookie.js 操作cookie实现记住密码功能的实现代码

    jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下.   复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...

  4. HostOnly Cookie和HttpOnly Cookie

    怎么使用Cookie? 通常我们有两种方式给浏览器设置或获取Cookie,分别是HTTP Response Headers中的Set-Cookie Header和HTTP Request Header ...

  5. js读写Cookie问题(Cookie存储时长、Cookie存储域)汇总

    在采集网站用户行为数据/使用js对用户行为做交互时,经常会使用到Cookie,了解Js Cookie的读写,以及一些细节,非常重要.   什么是Cookie 所谓Cookie,只是一条极为短小的信息, ...

  6. JS设置cookie、读取cookie、删除cookie

    JS设置cookie.读取cookie.删除cookie       JS设置cookie,注意一定要path=/ ,根目录,不然其他目录可能查询不到..默认是本目录. document.cookie ...

  7. Cookie机制(会话cookie和持久化cookie)在客户端保持HTTP状态信息的方案

    1. Cookie只有一个name和一个value,不同于map;购物车设计的时候需要cookie,获取购物车的cookie id,以便于将物品多次放入购物车: 2.cookie获取了其地址,并且可以 ...

  8. .NET,Cookie,写Cookie,取Cookie

    Cookie是一段文本信息,在客户端存储 Cookie 是 ASP.NET 的会话状态将请求与会话关联的方法之一.Cookie 也可以直接用于在请求之间保持数据,但数据随后将存储在客户端并随每个请求一 ...

  9. jquery cookie用法(获取cookie值,删除cookie)

    1.引入文件 2.具体操作 $.cookie('the_cookie'); // 读取 cookie $.cookie('the_cookie', 'the_value'); // 存储 cookie ...

随机推荐

  1. python中的常用内建属性与内建函数

    常用专有属性常用专有属性 说明 触发方式 __init__ 构造初始化函数 创建实例后,赋值时使用,在__new__后 __new__ 生成实例所需属性 创建实例时 __class__ 实例所在的类 ...

  2. vant vue 屏幕自适应

    手机端 pc端 屏幕自适应 一.新建 vue.config.js项目目录中没有 vue.config.js 文件,需要手动创建,在根目录中创建 vue.config.js const pxtorem ...

  3. onclick="return doAlert()" onclick="return false"

    return false不是取bai消事件冒泡,而是取消"du浏览器默认行为".比如一个链接zhi<a href="http://zhidao.baidu.com& ...

  4. 对一个sql的分析

    select * FROM LPEdorItem a, LCCont b, LPEdorApp c WHERE a.edoracceptno = c.edoracceptno and a.ContNo ...

  5. .NET同步原语Barrier简介

    Barrier(屏障)是一种自定义的同步原语(synchronization primitive),它解决了多个线程(参与者)在多个阶段之间的并发和协调问题. 1)多个参与者执行相同的几个阶段的操作 ...

  6. weex打包android apk采坑之旅(windows)

    1. npm install weex-toolkit -g 后weex命令不起作用 ,解决办法把weex.cmd所在的目录添加到环境变量PATH 2.weex命令每次报找不到文件'C:\Progra ...

  7. PHP-FPM 远程代码执行漏洞(CVE-2019-11043)

    影响范围 在 Nginx + PHP-FPM 环境下,当启用了上述 Nginx 配置后,以下 PHP 版本受本次漏洞影响,另外,PHP 5.6版本也受此漏洞影响,但目前只能 Crash,不可以远程代码 ...

  8. 自学linux——10.Linux的网络知识

    linux的网络知识 一.网络相关概述 1.网络的分类 局域网(LAN):在几百米到十几公里内办公楼群或校园内的计算机相互连接所构成的计算机网络 城域网(MAN):覆盖相距不远的几栋办公楼,也可以覆盖 ...

  9. AndroidStudio 插件总结

    工作中常用的插件备注如下: Alibaba Java Coding GuidelinesCheckStyle-IDEAAndroid Drawable PreviewGsonFormatTransla ...

  10. icmp介绍以及arp攻击

    目录 一.ip数据包格式 二.ICMP协议介绍 三.ARP协议介绍 四.ARP攻击原理 一.ip数据包格式 网络层的功能: 定义了基于ip协议的逻辑地址 连接不同的媒介类型 选择是数据通过网络的最佳途 ...