【转】学习总结--Cookie & Session总结
转载地址:http://www.phperzone.cn/portal.php?aid=718&mod=view
一、状态管理
1)什么是状态管理?
将浏览器与web服务器之间多次交互过程当做一个整体来处理,并且将多次交互所涉及的数据进行管理。
2)状态管理技术
cookie:
a,什么是cookie?
是一种客户端(浏览器)的状态管理技术。
浏览器在访问web服务器的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,浏览器会将这结数据保存下来;当浏览器再次访问服务器的时候,会将这些数据以cookie消息头的方式发送给服务器。
b,创建cookie
Cookie c = new Cookie(String name,String value);
response.addCookie(c);
c, 查询cookie
//如果没有cookie,返回null
Cookie[] request.getCookies();
String cookie.getName();
String cookie.getValue();
d, 编码问题
cookie的值只能是ascii字符,对于中文,需要将中文转换成相应的ascii字符串的表示形式。
String URLEncoder.encode(String,String enc)
//创建 new Cookie(String name,URLEncoder.encode(String,"utf-8"))
String URLDecoder.decode(String,String)//取
URLDecoder.decode(cookie.getValue(),"utf-8")
e, cookie的生存问题
默认情况下,浏览器会将cookie保存在内存里,除非浏览器关闭,cookie一直存在。
用setMaxAge(int seconds)设置cookie保存时间
该方法需要注意:
(1) 单位是秒
(2) seconds >0 : cookie会保存在硬盘上,超过指定的时间,浏览器会删除该cookie。
seconds <0 : 缺省值(保存在内存里)
seconds =0: 删除cookie,
比如,要删除一个名叫addr的cookie:
Cookie c = new Cookie("addr","");
c.setMaxAge(0);
response.addCookie(c);
f,cookie的路径问题
f1:浏览器在向服务器的某个地址发请求时,会先比较cookie的路径与要访问的这个地址是否匹配,只有匹配的cookie才会发送。
f2:cookie会有一个路径(是一个字符串),该路径默认情况下等于创建该cookie的组件的路径。
比如,/web06_2/app1/addCookie.jsp创建的cookie,其路径就等于"/web06_2/app1"。
/web06_2/findCookie.jsp error
/web06_2/app1/findCookie1.jsp ok
/web06_2/app1/sub/findCookie2.jsp ok
f3: 只有要访问的地址是cookie的路径或者其子路径时,浏览器才会发送该cookie。
f4:可以用setPath(String path);方法设置cookie的路径
常见的使用是: setPath("/appname");访问该应用的所有资源都会带cookie过去了
g,cookie的限制
(1), cookie可以被用户禁止。
(2), cookie能够保存的数据大小有限制(大约4k)。
(3), cookie的个数有限制(浏览器在本地最大能够保存约300个左右的cookie)。
(4), cookie不安全
session:
(1)什么是session?
是一种服务器端的状态管理技术。
浏览器访问服务器的时候,服务器会创建一个session对象(每一个session对象都有唯一的一个id号,一般称之为sessionId),默
认情况下,服务器会使用cookie技术将sessionId发送给浏览器,浏览器会将sessionId保存下来。当浏览器再次访问服务器的时候,会将
sessionId发送给服务器,服务器依据sessionId,就可以找到之前创建的session对象。
(2)如何获得session对象?
a, 方式一:
HttpSession s = request.getSession();
等价于request.getSession(true)。
b, 方式二:
HttpSession s = request.getSession(boolean flag);
当flag=true时:
服务器会查看请求当中是否有sessionId,如果没有,则创建一个session对象;如果有sessionId,则依据sessionId查找对应的session对象,如果找到了,则返回;找不到,再创建一个新的session对象。
当flag=false时:
服务器会查看请求当中是否有sessionId,如果没有,会返回null;如果有sessionId,则依据sessionId查找对应的session对象,如果找到了,则返回;找不到,返回null。
(3)HttpSession中声明的几个常用方法
setAttribute(String name,Object obj);
//如果绑订名称对应的值不存在,返回null。
Object getAttribute(String name);
removeAttribute(String name);
(4)session的超时
1)服务器会将空闲时间过长的session对象从内存空间当中删除。服务器一般会有一个缺省的超时时间限制(30分钟)。
2)可以修改超时限制
对于tomcat,可以修改conf\web.xml,修改完成需要重新启动服务器。
<session-config>
<session-timeout>30</session-timeout>
</session-config>
3)编程的方式
setMaxInactiveInterval(int seconds);
(5) 删除session
invalidate();
二、session与cookie的区别
(1)cookie是一种客户端的状态管理技术,将状态写在浏览器端,
而session是一种服务器端的状态管理技术,将状态写在web服务器上面。
(2) cookie有很多限制:
a,可以被用户禁止
b,cookie能够保存的数据比较小(大约4k),而且保存的个数也有限制(300个左右)。
c,cookie不安全
d,cookie只能保存字符串
而session能够保存更多的数据,相对更安全,保存的数据类型更丰富。
session会将所有的状态写在服务器端,所以服务器的压力比较大,而cookie没有这个问题。
小知识:如果用户禁止cookie,如何继续使用session(了解)
(1)url重写
在请求地址后面添加sessionId,一般由服务器来生成这个地址。
(2)编程:
//链接地址,表单提交地址
a, response.encodeURL(String url);
//重定向
b, response.encodeRedirectURL(String url);
//转发根本不用考虑
【转】学习总结--Cookie & Session总结的更多相关文章
- python 学习笔记十九 django深入学习四 cookie,session
缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...
- Web安全测试学习笔记(Cookie&Session)
一,Session:含义:有始有终的一系列动作\消息1, 隐含了“面向连接” 和“保持状态”两种含义2, 一种用来在客户端与服务器之间保持状态的解决方案3, 也指这种解决方案的存储结构“把××保存在s ...
- Django学习手册 - cookie / session
cookie """ cookie属性: obj.set_cookie(key,value,....) obj.set_signed_cookie(key,value,s ...
- Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期
servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...
- node(4)express 框架 EJS模板,cookie, session的学习
一.EJS 概述:前端咱们使用过的一个模板套路,是underscore的套路.接下来EJS它属于后台工程师人的模板. https://www.npmjs.com/package/ejs 官网地址 特点 ...
- Javaweb学习笔记5—Cookie&Session
今天来讲javaweb的第五阶段学习. Cookie和Session同样是web开发常用到的地方. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的 ...
- Java web学习 Cookie&&Session
cookie&&session 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会 话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Coo ...
- node学习之cookie和session
c什么是cookie Cookie设计的初衷是 维持浏览器和服务端的状态.http是无状态的,服务端不能跟踪客户端的状态. 浏览器第一次向服务器发送请求,服务器会返回一个cookie给客户端浏览器,浏 ...
- node学习笔记9——cookie,session相关操作
下面讲的都是基Express及相关的包.所以在实践本篇文章之前,通过npm安装好Express, cookie-parser, cookie-session这三个安装包. 先简单说一下,如何用Expr ...
随机推荐
- linux 命令进阶
1. ls –i -i, --inode 显示每个文件的inode 号 查看inode 可以用于 同一个classloader加载同名class时,是以先加载到的class为准, ...
- LinQ系列文章
温故而知新,想着系统再学习一次LinQ知识点,发现园子里有个非常棒的系列文章,所以Mark下来,方便以后查阅! 系列博客导航: LINQ之路系列博客导航 LINQ之路 1:LINQ介绍 LINQ之路 ...
- Beyond Compare
Beyond Compare是一个比较文件和文件夹的工具. 它可以帮助你找到并协调源代码.文件夹.图像和数据间的差异,即使包括zip文档中或者FTP站点上的文件. 另外它还可以同步化文件夹并验证不 ...
- for循环、for循环嵌套
循环:反复执行某段代码. 循环四要素:初始条件,循环条件,循环体,状态改变. 循环的最后一句:循环条件不再满足. 1.找出100以内与7有关的数并打印:(1).从1找到100(2).找出与7有关的数 ...
- 变形--矩阵 matrix()
matrix() 是一个含六个值的(a,b,c,d,e,f)变换矩阵,用来指定一个2D变换,相当于直接应用一个[a b c d e f]变换矩阵.就是基于水平方向(X轴)和垂直方向(Y轴)重新定位元素 ...
- ASP.NET状态管理策略
如果要想把信息存储在客户端那可以选择视图状态.控件状态.隐藏字段.cookie.和查询字符串. 1.web窗体页提供viewstate属性作为内置结构,在同一页的多个请求间自动保留值.他作为页面的隐藏 ...
- 自定义Scrollview--实现仿淘宝Toolbar透明度渐变效果
,上个月做了下电商的项目,本来以为本简单的,但做起来还是遇到了不少的问题,上个周五项目就上线了,不过时间还是很紧,PM给了我两天时间总结总结,然后又要开始一个新的项目和这个项目的迭代,感觉又要开始累死 ...
- 夺命雷公狗---node.js---21之项目的构建在node+express+mongo的博客项目6之数据的遍历
首先还是来链接数据库,然后就查找,如下所示: /** * Created by leigood on 2016/8/31. */ var express = require('express'); v ...
- ahb2apb和apb2apb async bridge
AHB 3.0目前不支持security world. AHB到APB的async bridge主要包括三个部分: 1)AHB domain 1)产生信号hactive = HSEL & HT ...
- VNC & LSF
VNC (Virtual Network Computing)是虚拟网络计算机的缩写.VNC 是一款优秀的远程控制工具软件, 由著名的 AT&T 的欧洲研究实验室开发的.VNC 是在基于 UN ...