1.状态管理----Cookie

1.1 为什么需要状态管理

HTTP协议是无状态的,不能保存每次提交的信息,即当服务器返回与请求相对应的应答之后,这次事务的所有信息就丢掉了。
如果用户发来一个新的请求,服务器无法知道它是否与上次的请求有联系。
对于那些需要多次提交数据才能完成的Web操作,比如登录来说,就成问题了。

1.1.1 什么是状态管理(会话管理)

指的是一个客户端的浏览器到WEB服务器之间连续发生的一系列请求和响应的过程。

(相当于打电话)从打开浏览器访问某个网站到关闭该网站的过程我们称为一次会话。

1.1.2状态管理的两种常见的模式;

客户端状态管理技术:将状态存放在客户端。代表性的是Cookie技术(浏览器)

服务器状态管理技术:将状态存放在服务器中。代表的是Session.

1.2.Cookie应用

1.2.1什么是Cookie

Cookie的创建是由服务器创建,服务端调用相关的方法将Cookie响应给客户端

一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(name)和设置值(value)。

说明:Cookie 是由键值对方式存储数据  name:jack

一个WEB站可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点

提供的Cookie。

1.2.2Cookie的使用

步骤:

1.创建Cookie

Cookie cookie=new Cookie(“name”,“jack");//键值对

2.设置Cookie的路径

cookie.setPath("/")

3.设置Cookie的生存时间

cookie.setMaxAge(-1)//关闭浏览器结束

4.把Cookie响应到浏览器

response.addCookie(cookie);

1.2.3如何查询Cookie

//获取客户端的Cookie 存储多个,要用数组

Cookie [] cookies=request.getCookies();

ifcookies!=null)

{

for(Cookie cookie : cookies){

if(cookie.getName().equals(name))

{

String value=cookie.getValue();

System.out.println(value);

}

}

}

1.2.4如何修改Cookie

只要保证Cookie名和路径一致就行

//先得到指定的Cookie

1.2.5如何删除Cookie

1.3 Cookie的生存周期

cookies.setMaxAge(-1);//设置生成时间

括号的取值:

>0有效期,单位是秒

=0失效,用于删除Cookie

<0 内存存储,关闭浏览器失效

1.4 Cookie的编码与解码(8.0版本及之前的版本存储中文需要编码与解码)

中文和英文字符不同,中文属于Unicode字符,在内存中占用4个字符,而英文属于ASCII字符,内存中只占2个字节。Cookie中使用Unicode字符时需要对Unicode字符进行编码,否则会出现乱码。编码可以使用java.net.URLEncoder类的encode(String str,String encoding)方法,解码使用java.net.URLDecoder类的decode(String str,String encoding)方法

代码:

运行结果:

1.5 Cookie的路径问题

1.5.1什么是Cookie的路径问题

1.5.2 发送Cookie的条件

浏览器在发送请求之前,首先会根据请求url中的域名在cookie列表中找所有与当前域名一样的cookie,然后再根据指定的路径进行匹配,如果当前请求在域匹配的基础上还与路径匹配那么就会将所有匹配的cookie发送给服务器,这里要注意的是最大匹配和最小匹配问题,有些cookie服务器在发送之前会有意扩大当前页面cookie的匹配范围,此时这些被扩大范围的cookie也会一起发送给服务器。
例如:cookie  存在于: http://localhost:8080/day13_cookie_01/
 如果:发送的请求是:http://localhost:8080/day14/aServlet 的话,则不发送cookie到服务端
                                       http://localhost:8080/day13_cookie_01/aServlet能发送cookie到服务器

1.6 Cookie的特点

优点:

1.可配置到期规则 Cookie 可以在浏览器会话结束时到期,或者可以在客户端计算机上无限期存在,这取决于客户端的到期规则。
2.不需要任何服务器资源 Cookie 存储在客户端并在发送后由服务器读取。
3.简单性 Cookie 是一种基于文本的轻量结构,包含简单的键值对。
4.数据持久性 虽然客户端计算机上 Cookie 的持续时间取决于客户端上的 Cookie 过期处理和用户干预,

Cookie 通常是客户端上持续时间最长的数据保留形式
5.cookie.setMaxAge(时间);//单位秒

缺点:

1.大小受到限制 大多数浏览器对 Cookie 的大小有 4096 字节的限制,尽管在当今新的浏览器和客户端设备版本中,支持 8192 字节的 Cookie 大小已愈发常见。

2.安全性低,存在于客户端

3.加密和解密需要额外的编码,另外解码和解密耗费一定的时间而影响应用程序的性能

2. 状态管理---Session

2.1 Session概述

2.1.1什么是Session

Session用于跟踪客户的状态。
Session指的是在一段时间内,单个客户与Web服务器的一连串相关的交互过程。
在一个Session中,客户可能会多次请求访问同一个网页,也有可能请求访问各种不同的服务器资源。

2.1.2 Session 工作原理

http:无状态 无连接
session被用于表示一个持续的连接状态,在网站访问中一般指代客户端浏览器的进程从开启到结束的过程。session其实就是网站分析的访问(visits)度量,表示一个访问的过程。
session的常见实现形式是会话cookie(session cookie),即未设置过期时间的cookie,这个cookie的默认生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。
实现机制是当用户发起一个请求的时候,服务器会检查该请求中是否包含sessionid,如果未包含,则系统会创造一个名为JSESSIONID的输出 cookie返回给浏览器(只放入内存,并不存在硬盘中),并将其以HashTable的形式写到服务器的内存里面;当已经包含sessionid是,服务端会检查找到与该session相匹配的信息,如果存在则直接使用该sessionid,若不存在则重新生成新的 session。
这里需要注意的是session始终是有服务端创建的,并非浏览器自己生成的。 但是浏览器的cookie被禁止后session就需要用get方法的URL重写的机制或使用POST方法提交隐藏表单的形式来实现

2.1.3 如何获得Session

2.1.4 如何使用session绑定对象

使用HttpSession的setAttribute(属性名,object)方法

2.1.5 如何删除Session

使用HttpSession的invalidate方法

2.2 Session超时

2.2.1什么是Session超时

HttpSession的最后一程访问时间和当前时间的差距大于了 指定的最大空闲时间,这时服务器

就会销毁Session对象。默认的空闲时间为30分钟。

2.2.2如何修改Session的缺省时间限制

使用HttpSession的setMaxAge设置,单位为秒

2.2.3 Session 失效的几种情况

1.超过了设置的超时时间

2.主动调用了invalidate方法

3.服务器主动或异常关闭

注意:浏览器关闭并不会让Session失效

Session和Cookie的区别

1,session存放在服务器端,cookie存放在客户端。

2,session会随着会话的结束而关闭,cookie则存放在客户端浏览器上长期有效。

3,session保存的是对象,cookie保存的是字符串

4,存放在cookie里的信息容易泄露,通常只保存不重要的信息,重要的信息放在session中

转载于:https://www.cnblogs.com/wanghuaying/p/9557210.html

会话(cookie的使用,路径和Session的工作原理,使用)相关推荐

  1. session的工作原理[择]

    session的工作原理 一.术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是 ...

  2. java session原理_java web开发—session的工作原理总结

    session的工作原理总结 一.什么是session session是一次浏览器和服务器交互的会话,在jsp中,作为一个内置对象存在.我的理解,就是当用户打开网页时,程序会在浏览器中开辟一段空间来存 ...

  3. HTTP Session 的工作原理以及几个思维扩展

    大家都知道,HTTP 协议本身是无状态的,Session 的出现解决了这个问题,也被大多数 Web 端采用. 但它背后的实现原理你是否有兴趣了解呢,以及在它基础上的思维发散,和你聊聊. 无状态的 HT ...

  4. java中session的作用_java中session的工作原理是什么?和Cookies有何区别?

    现在大家学习的东西和以前大不相同了,越来越多的人倾向于去学习高新技术以获得更好的发展.java是很多人的第一选择.java中的知识还是很多的,今天就来为大家介绍一下. 首先来说一下java中sessi ...

  5. Session的工作原理

    session是服务器端的一个集合,可以存储任何东西.session最重要的特性,是可以识别客户. 1.Session的工作原理 当我们的Servlet需要使用Session时,执行下面的代码 Htt ...

  6. PHP中session的工作原理

    一直在使用session存储数据,一直没有好好总结一下session的使用方式以及其工作原理 今天在这里做一下梳理 这里的介绍主要是基于php语言,其他的语言操作可能会有差别,但基本的原理不变. 1. ...

  7. session的工作原理【转】

    一直在使用session存储数据,一直没有好好总结一下session的使用方式以及其工作原理,今天在这里做一下梳理. 这里的介绍主要是基于php语言,其他的语言操作可能会有差别,但基本的原理不变. 1 ...

  8. PHP session的工作原理

    PHP SESSION原理 我们知道,session是在服务器端保持用户会话数据的一种方法,对应的cookie是在客户端保持用户数据.HTTP协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联 ...

  9. session 的工作原理以及使用细节和url编码

    /**********************************************模拟页面************************************************* ...

最新文章

  1. PHP自动加载__autoload的工作机制
  2. 学习:erlang的term反序列化,string转换为term
  3. 携程微服务框架实践及思考
  4. TeamViewer运行在Windows Server 2008下连接时错误提示:正在初始化显示参数
  5. Github-PAT(Personal Access Token)
  6. 单总线和i2c总线结合实现数字温度计的设计c语言程序,1《单片机原理应用》课程设计指导书2010-6-8.doc...
  7. 数据分析没有思路怎么办
  8. 帆软邮件STMP配置、发送测试及邮件发送失败日志排查
  9. 火狐浏览器表单不跳转_火狐浏览器的表单问题,求解_html/css_WEB-ITnose -
  10. Synonyms 中文近义词工具包 -- 支持文本对齐,推荐算法,相似度计算,语义偏移,关键字提取,概念提取,自动摘要,搜索引擎等
  11. 支付宝接口对接指南(四、回调通知对接:websoket方式)【保姆级】
  12. 石家庄地铁路线安排网站的最终版本——博客登记
  13. 遭遇XP-664129A8.EXE
  14. 2021-04-21微信大数据对于精准营销的意义有哪些?
  15. 华为mate20 pro 专业模式拍照
  16. 升级glibc-2.12到glibc-2.15的正确方式
  17. 数据结构之稀疏数组队列
  18. 【Win7虚拟内存怎么设置最好】
  19. 分享一款超级好用的Windows清理软件
  20. 句向量 Sentence Embedding

热门文章

  1. 《Spark与Hadoop大数据分析》——1.2 大数据科学以及Hadoop和Spark在其中承担的角色...
  2. 继承之后的使用注意事项_ArrayStoreException
  3. 大数据时代的数据挖掘
  4. 局域网通过专线上网的维护经验点滴
  5. tomcat ssi配置及升级导致ssi include错误问题解决
  6. thinkphp集成系列之phpmailer批量发送邮件
  7. 2016中国知识管理发展的7个趋势
  8. 通过案例了解puppet创建虚拟资源解决资源冲突问题
  9. ”该证书已被签发机构吊销“错误解决方案
  10. MY Fist 51CTO BLOG