cookie 的大小限制
一个网页一次只能保存20 个 Cookie信息,而一个浏览器只能保存300个Cookie信息,每次信息的大小不超过4kb
上面是Cookie的大小限制,下面讲讲什么是Cookie,Cookie 有什么作用
我们在打开一个浏览器去访问页面的时候,访问完成之后会将浏览器关闭,这个过程就是一次会话。
常见的会话管理
Cookie : 将数据保存到客户端的浏览器
Session : 将数据保存到服务器
使用会话管理的原因:
将数据保存到会话中,然后带着数据去发送数据,
刚才说了会话的原因,和会话的管理,其实打开浏览器访问页面,关闭浏览器就是一次会话,一次会话中包含Cookie
那什么是Cookie 呢,其实 是由服务器写给浏览器并且有浏览器来保存,就是客户端保存服务器端发送过来的数据,等待下次去访问服务器时,再带回给服务器端。
一般保存的方式 通过服务器端的 Response 中的addCookie 方法,将Cookie 写回给浏览器。就是写了一个响应头 set-Cookie:cookie的信息
获取的方式则是通过Request 进行获取,request.getCookies(),获取一个Cookie 的数组
Cookie 的属性:
Name:必须的
value:必须的
Comment:可选的,注释
path:可选的,如果一个cookie设置成了当前的应用的名称,意为着访问当前应用下的所有资源,浏览器都会带着它给服务器
Domain:可选的,该Cookie 所属的网站域名
MaxAge:可选的(单位是秒) ,有效时间,不设置就是会话的过程(存储在浏览器中)如果shi0 则说明要删除
上面是这是cookie的一些参数,那么该怎么使用的,下面介绍
创建一个Cookie对象
Cookie c = new Cookie (“listvisit”,””+System.currentTimeMilis())
其中 System.currentTimeMilis() 为了防止浏览器缓存的问题
设置Cookie 的有效路径
c.setPath("/day11");
这是Cookie 的有效时间
c.setMaxAge(60*60);如果设置为0 则表示消除该Cookie对象
销毁Cookie
通过 setMaxAge(0) 表示消除Cookie对象
但是如果设置了path,需要填写当初设置的path路径的信息,进行消除
Cookie cookie = new Cookie("history",null);
cookie.setPath("/day11");
cookie.setMaxAge(0);
response.addCookie(cookie);
Cookie的常用api
getName 获取存入的key
getValue获取 存入的值,再获取值的时候,获取的是全部的值
setDomain(String domain) 设置Cookie 的有效域名
例如: www.baidu.com 下面的百度音乐 music.baidu.com
setPath(String path) 设置Cookie的有效路径,在设置时间,和取消时间的时候使用
setMaxAge(int macAge) 设置Cookie 的有效时间
ServletResponse 中的方法
getResponseDispatcher( string path) 表示服务器内部资源的跳转
Cookie 的分类
会话级别的Cookie : 默认的Cookie 关闭浏览器Cookie就会销毁
持久级别的Cookie 可以设置Cookie 的有效时间,那么关闭浏览器的时候,Cookie 还是会存在的,需要手动销毁持久性
上面提到了session,下面讲解一下session
session的概述,Cookie 本身是有大小和个数限制的,cookie 是保存在客户端,Session 保存在服务器端
session的原理,是基于cookie的
使用session,获得session Request.getSession();
session 的范围的作用范围是一次会话
session 的创建
服务器:服务器第一次调用request.getSession();
在jsp 中,创建的时间实在第一次访问jsp页面的时候,创建session 对象
session 的销毁:
session过期,默认过期时间是30分钟
非正常变比服务器,如果是正常关闭服务器,session会被被序列化到硬盘,当服务器启动时,会被反序列化
手动调用 session.invalidate()
执行的原理:
在打开浏览器的第一次访问服务器的时候,服务器会自动为其创建一个session 并通过cookie技术奖sessionid 传递给客户端,以后客户端在请求应用中的其他资源的时候,会在请求头上面添加Cookie:JSESSION=客户端第一次拿到的session 的id,这样服务器在接收到请求的时候,就会接收到sessionid ,并根据id在内存中找到之前创建的session对象,提供请求使用
session设置超时时间
可以修改tomcat 中的web.xml下的
<session-config>
<session-timeout></session-timeout>
</session-config>