会话的概念

  • 会话可以简单理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个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. 2019版pycharm永久激活

    链接:https://pan.baidu.com/s/1vY1KBvi2NHIgoN8C2qaFbg 提取码:p4gx 1.下对应版本的jar包,放到pycharm目录的bin目录下2.去C:\Use ...

  2. Linux下获取当前程序的绝对路径

    在Linux开发应用时,我们常常需要在程序中获取当前程序绝对路径,我们可以通过readlink读取符号链接/proc/self/exe进行获取,这个符号链接代表当前程序,它的源路径就是当前程序的绝对路 ...

  3. vue-- 利用过滤-实现搜索框的姓名的搜索

    <div class="fl w-200 m-l-30"> <el-input placeholder="输入用户名" v-model=&qu ...

  4. 微信小程序对接显示阿里云数据库数据

    现实需求 在项目中需求,有时候现场设备发生故障,需要远程的人员知道.除了邮件方式,以微信小程序的方式也很好.今天进行尝试,并制作了一个demo版本. 1.微信小程序申请制作前端 1.1lists文件( ...

  5. vue源码阅读笔记

    1.yarn test [文件名]  -t [name-of-spec(describe or test )] 直接运行yarn test,会测试所有测试文件:yarn test 后面只跟文件名的话会 ...

  6. layui 页面加载完成后ajax重新为 html 赋值 遇到的坑

    页面加载完毕后,通过 ajax 按照返回值,为部分 html 赋值: $(function(){ ..... }) 直接这样写,报错,$ 没有定义什么的,错位原因为 jquery 引入错误. layu ...

  7. HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR、REMOTE_ADDR

    REMOTE_ADDR 是你的客户端跟你的服务器"握手"时候的IP.如果使用了"匿名代理",REMOTE_ADDR将显示代理服务器的IP. HTTP_CLIEN ...

  8. php 正则判断是否是手机号码

    $phonenumber = '13712345678'; if(preg_match("/^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|17[0-9]|1 ...

  9. ms17-010

    永恒之蓝和ms17-010简介: 永恒之蓝(EternalBLUE)"是Shadow Brokers(影子经纪人)黑客组织公布的一款黑客工具,该工具利用的漏洞也被称为MS17-010漏洞,M ...

  10. CVE-2020-0796提权操作

    简介 最新的windows10中使用了SMBv3协议,SMBv3协议在压缩消息时,未对头部数据做任何检查,导致恶意攻击者可以直接使用,从而导致内存破坏漏洞. 该漏洞可远程进行攻击目标系统,但目前只做到 ...