码迷,mamicode.com
首页 > 其他好文 > 详细

session和cookie

时间:2017-07-26 20:25:56      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:ram   管理   窗口   main   重要   lis   class   统计   new   

一:Session

1.Session作用于服务器端,在客户端第一次请求服务器的时候创建,并存放于内存,每个用户都有一个Session。(需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session。如果尚未生成Session,也可以使用request.getSession(true)强制生成Session)

2.Session生成后,用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。为防止内存溢出,服务器会把长时间内没有活跃即超时的Session从内存删除。

3.Session的尽量只存放一些重要的数据,减小内存占用,防止并发访问内存溢出。

4.Session统计同时在线人数,通过创建实现HttpSessionListener接口的监听器,每次创建Session次数+1,每次销毁-1;

5.服务器会为每个Session创建一个唯一的ID,这个SessionId在客户端与服务端会话是十分重要;

二:Cookie

1.Cookie属于浏览器管理,具有不可跨域名性。由于HTTP协议是无状态且是不安全的,所以Cookie的值常加密后保存。

2.一个用户的所有请求操作都应该属于同一个会话,不同的用户拥有不同的会话,而http请求是无状态的,那服务器怎么将这么多请求划分到具体用户的会话中呢?服务器在创建Session后会创建一个用来确认身份JSESSIONID、值为该SessionId的Cookie,并发送给客户端浏览器,并保存在浏览器。

3.Cookie的基本用法:

Cookie cookie = new Cookie("username","helloweenvsfei");   // 新建Cookie
cookie.setMaxAge(Integer.MAX_VALUE);           // 设置生命周期为MAX_VALUE
cookie.setPath("/keepft/");                              // 设置路径
cookie.setDomain(".keepft.com");          // 设置域名
response.addCookie(cookie);                          // 输出到客户端

cookie.setMaxAge(maxAge):maxAge(秒)为正数时表示该Cookie会在maxAge秒之后自动失效,浏览器会将该Cookie写到本地文件中,即使浏览器关闭,在maxAge秒之前再打开浏览器该Cookie仍可用
  maxAge为-1时表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。(例如窗口打开的<iframe></iframe>子窗口)
  maxAge为0时表示删除该Cookie(Cookie用此方法删除Cookie,需要new一个Name一样新Cookie,并将Value设置为“”;修改一个cookie类似)
cookie.setPath(path):path设置为“/”时允许所有路径使用Cookie。path属性需要使用符号“/”结尾。
cookie.setDomain(domian):domain参数必须以点(".")开始。另外,name相同但domain不同的两个Cookie是两个不同的Cookie。(Cookie是不可跨域名的)

session和cookie

标签:ram   管理   窗口   main   重要   lis   class   统计   new   

原文地址:http://www.cnblogs.com/hfblogs/p/7241457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!