会话的概念

  • 会话可以简单理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个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. 基于pygame框架的打飞机小游戏

    import pygame from pygame.locals import * import time import random class Base(object): "" ...

  2. HSDB工具类使用探索jvm

    本文是引用https://club.perfma.com/article/2261053 有人问了个小问题,说: public class Test { static Test2 t1 = new T ...

  3. 大数据学习(04)——MapReduce原理

    前两篇文章介绍了HDFS的原理和高可用,下面再来介绍Hadoop的另外一个模块MapReduce.它的思想是很多技术的鼻祖,值得一学. MapReduce是什么 MapReduce是一个分布式计算系统 ...

  4. getRawX、getRawY与getX、getY、getScrollX、getScrollY,getTop,getLeft区别

    这篇文章写的不错,Mark一下 http://blog.csdn.net/sinat_29912455/article/details/51073537

  5. Android NDK/JIN 从入门到精通

    1.1 JNI(Java Native Interface) 提供一种Java字节码调用C/C++的解决方案,JNI描述的是一种技术 1.2 NDK(Native Development Kit) A ...

  6. Android开发三年,面了八家公司终于腾讯上岸,含泪整理面经

    在下2017年毕业,目前从事android开发工作已经3年多了,前段时间刚完成一次跳槽,面试了几家公司,将一些面试经验分享给大家,希望对大家有所帮助. 写在前面 这次跳槽总共是面了8家,(2小,4中, ...

  7. Android源码解析——Handler、Looper与MessageQueue

    本文的目的是来分析下 Android 系统中以 Handler.Looper.MessageQueue 组成的异步消息处理机制,通过源码来了解整个消息处理流程的走向以及相关三者之间的关系 需要先了解以 ...

  8. 卓越的教练是如何训练高手的?(谈谈memmove)

    编者按:我们知道,优秀的运动员除了自身的天赋和努力之外,出色的教练必不可少.一个成功的企业除了拥有出类拔萃的员工之外,同样需要一位出色的教练,那就是企业的CEO.由此可见,如果我们要想成为一位优秀的程 ...

  9. React Native 启动流程简析

    导读:本文以 react-native-cli 创建的示例工程(安卓部分)为例,分析 React Native 的启动流程. 工程创建步骤可以参考官网.本文所分析 React Native 版本为 v ...

  10. eclipse选中参数高亮显示设置

    window - preference - java - Editor - Mark Occurrences