Session &cookie introduction,usage
Cookie
1)什么是Cookie?
服务器为了识别用户身份而临时存放在浏览器端的少量数据。
2)工作原理
浏览器访问服务器时,服务器将一些数据以set-cookie消息头
的形式发送给浏览器,浏览器会将这些数据临时保存下来;
当浏览器再次访问服务器时,会将这些数据以cookie消息头的
形式发送给服务器。
3)添加Cookie
Cookie c = new Cookie(String name,String value);
注: name: cookie名称
value: cookie值
response.addCookie(c);
4)读取Cookie
Cookie[] request.getCookies();
注: 有可能返回null。
String cookie.getName();
String cookie.getValue();
5)编码问题
a. cookie只能存放合法的ascii字符。
b. 如果要存放中文,可以将中文转换成合法的ascii字符形式。
String URLEncoder.encode(String str,String charset);
String URLDecoder.decode(String str,String charset);
注: 建议在添加cookie时,都统一编码(使用以上方法对保存的数 据进行处理)。
6)生存时间问题
cookie.setMaxAge(int seconds)
a.单位是秒。
b.sencods > 0 浏览器会将cookie保存在硬盘上,超过指定的
时间,cookie失效(删除)。
sencods < 0 默认值(浏览器会将cookie保存在内存里,浏览器 关闭,cookie会被删除)。
sencods = 0 删除cookie,比如要删除一个名称为city的cookie
Cookie c = new Cookie("city","");
c.setMaxAge(0);
response.addCookie(c);
7)cookie的路径问题
a.什么是cookie的路径问题?
浏览器访问服务器上的某个地址时,会比较请求地址是否符合
cookie的路径要求,只有符合要求的cookie才会被发送。
b.cookie的默认路径
等于添加该cookie的web组件的路径。
比如 /servlet-day06/biz01/addCookie.jsp添加了一个
cookie,则该cookie的默认路径就是 "/servletday06/biz01"
c.匹配规则
要访问的地址必须是cookie的路径或者其子路径。
比如,cookie的路径是 "/servletday06/biz01",则
/servletday06/findCookie1.jsp no
/servletday06/biz01/findCookie2.jsp yes
/servletday06/biz01/aaa/findCookie3.jsp yes
d.设置cookie路径
cookie.setPath(String path);
8)cookie的限制
a.cookie不安全。(对于敏感数据,要加密处理) 。
b.cookie可以被用户禁止。
c.cookie只能保存少量数据。(大约4k左右)。
d.浏览器端保存的cookie的数量也有限制。(大约几百个)
e.cookie只能保存字符串。
session (会话)
1)什么是session?
服务器端为了保存状态而创建的一个特殊的对象。
2)工作原理
浏览器访问服务器时,服务器创建一个特殊对象session(
该对象有一个唯一的id,称之为sessionId),服务器会将
sessionId以cookie的形式发送给浏览器;
当浏览器再次访问服务器时,会将sessionId发送过来,
服务器端可以利用这个session找到对应的session对象。
3)如何获得session对象?
方式一
HttpSession session =
request.getSession(boolean flag);
注:
当flag为true时,先查看请求当中有没有sessionId,
如果没有,则创建一个session对象;
如果有,依据sessionId查找对应的session对象,如果
找到了则返回,找不到,会创建一个新的session对象。
当flag为false时,先查看请求当中有没有sessionId,
如果没有,返回null;
如果有,依据sessionId查找对应的session对象,如果
找到了则返回,找不到,返回null。
方式二
HttpSession session =
request.getSession();
等价于 request.getSession(true)。
4)几个方法
String getId()
setAttribute(String name,Object obj)
Object getAttribute(String name);
//解除绑订
removeAttribute(String name);
5)session超时
a.什么是session超时?
服务器会将空闲时间过长的session对象删除掉。
注:
这样做的好处,是为了节省内存空间的占用 。
服务器默认的超时限制一般是30分钟。
b.可以修改web.xml配置,设置超时时间限制。
<session-config>
<session-timeout>30</session-timeout>
</session-config>
c.setMaxInactiveInterval(int seconds)
设置两次请求之间的最大间隔时间,如果超过了这个时间,
则服务器会销毁session对象。
6)删除session
invalidate()
转载自:http://www.cnblogs.com/Mr-Kenson/p/7715822.html
Session &cookie introduction,usage的更多相关文章
- Session&Cookie(Introduction、Application)
一Session 1概念: (1)session是会话,是同一连接者所有页面公有的内置对象 (2)session是一段时间,从session创建开始,到session销毁结束,默认时间为30分钟( ...
- 认证 协议 JWT OAuth Session Cookie
本文翻译自Auth-Boss. 如果有翻译的不恰当或不对的地方, 欢迎指出. 成为一个认证老司机, 了解网络上不同的身份认证方法. 本文档的目的是记录和编目Web上的身份验证方法.认证指的是创建一个系 ...
- session & cookie(li)
Session & Cookie 一.定义 Session,用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.Cookie,由服务器端生成,发送 ...
- web也是区分前端与后端的,session\cookie辨析
<1>Ajax交互方式 Ext.Ajax.request( { //被用来向服务器发起请求默认的url url : "", //请求时发送后台的参数,既可以是Json对 ...
- 浅析session&cookie
session&cookie没有出现的黑暗时代 大家都知道,HTTP协议是一种无状态的协议,本次请求下一次请求没有任何的关联,所有没有办法直接用http协议来记住用户的信息,试想一向,每一次点 ...
- http之Session&Cookie
百度了一波session与Cookie,我发现这东西远比我想象中更复杂(可能是因为我不明白底层的运行原理).网上也是一堆的关于Session与Cookie区别/联系的文章,然而,我看完了还是一脸懵逼的 ...
- Asp.net MVC使用Model Binding解除Session, Cookie等依赖
上篇文章"Asp.net MVC使用Filter解除Session, Cookie等依赖"介绍了如何使用Filter来解除对于Session, Cookie的依赖.其实这个也可以通 ...
- Asp.net MVC使用Filter解除Session, Cookie等依赖
本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应用场景. 同时针对MVC中的对于Session,Cookie等的依赖,如何使用Filter解依赖. 如果大家有 ...
- [转]Asp.net MVC使用Filter解除Session, Cookie等依赖
本文转自:http://www.cnblogs.com/JustRun1983/p/3279139.html 本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应 ...
随机推荐
- 使用 Canal 实现数据异构
小结: 1. https://mp.weixin.qq.com/s/z-5aoGVuk7JzIGrJJWgeJw 使用 Canal 实现数据异构 原创: 杜亦舒 性能与架构 3月4日
- spark核心优化详解
大家好!转眼又到了经验分享的时间了.吼吼,我这里没有摘要也没有引言,只有单纯的经验分享,请见谅哦! 言归正传,目前在大数据领域能够提供的核心计算的工具,如离线计算hadoop生态圈的mr计算模型,以及 ...
- 学习懈怠的时候,可以运行Qt自带的Demo,或者Delphi控件自带的Demo,或者Cantu书带的源码,运行一下Boost的例子(搞C++不学习Boost/Poco/Folly绝对是一大损失,有需要使用库要第一时间想到)(在六大的痛苦经历说明,我的理论性确实不强,更适合做实践)
这样学还不用动脑子,而且熟悉控件也需要时间,而且慢慢就找到感觉了,就可以精神抖擞的恢复斗志干活了.或者Cantu书带的源码. 并且可以使用Mac SSD运行Qt的Demo,这样运行速度快一点. 此外, ...
- windows red5相关
red5部署 前段时间把red5服务器搭建好了,现在记录下是如何搭建的.1,下载对应版本的red5https://github.com/Red5/red5-server/releases2,如果没有安 ...
- Fiddler抓包【2】_捕获设置
1.Fiddler抓web网站请求 手动设置方法一:Tools--->WinINET Options--->连接--->局域网设置--->代理服务器勾选后“高级”---> ...
- python 练习1(流控制)
#!/usr/bin/python #_*_ coding:utf-8 _*_ #练习题 #1.使用while循环输入 1 2 3 4 5 6 8 9 10 #a.定义一个变量存放数字 #b.用whi ...
- android 开发设计模式---Strategy模式
假设我们要出去旅游,而去旅游出行的方式有很多,有步行,有坐火车,有坐飞机等等.而如果不使用任何模式,我们的代码可能就是这样子的. 12345678910111213141516171819202122 ...
- Javascript学习-简单测试环境
Javascript学习-简单测试环境 在<JavaScript忍者秘籍>2.4测试条件基础知识中,作者给出了一个精简版的assert和assert组的实现,对于初学者而言,这无疑是一个很 ...
- 非常不错的svg教程
介绍的非常详细,也很有调理,内容很详细 适合于初学者学习 http://www.softwhy.com/qiduan/SVG_source/
- mac系统如何处理来自身份不明的开发者
打开终端(终端在 应用程序 -> 实用工具 内) sudo spctl --master-disable