您的位置:首页 > 其它

会话技术cookie/session

2017-11-29 08:15 453 查看

概述

(一)简介

一次会话:

什么时候开始:客户端输入网址回车,和服务端建立连接,会话开启

什么时候结束:浏览器关闭会话结束,清除浏览器缓存会话结束

会话技术:存储会话数据的技术,有两种:cookie技术和session技术

Cookie技术:把会话数据保存在客户端的技术

优点:服务器压力小

缺点:不安全,网络压力大

session技术:把会话数据保存在服务端的技术,session依赖于Cookie

优点:安全,网络压力小

缺点:服务器压力大



Cookie

(一)怎样创建Cookie

Cookie cookie = new Cookie(String name, String value);

1.Cookie的有效期

Cookie的默认有效期是一次会话期间,会话结束,Cookie消失

手动设置Cookie的有效期:

cookie.setMaxAge(int seconds);

设置有有效期的Cookie,会被浏览器保存到磁盘文件上,直到过期才会失效。
被手动清除Cookie,哪怕设置有有效期,依然会被清除掉


2.Cookie的有效路径

Cookie的默认有效路径是:生成Cookie的资源所在的目录。客户端只有在访问有效路径内的资源时,才会携带这个Cookie。

比如:/cookiesession/aa/servlt1生成的Cookie,那么有效路径是/cookiesession/aa

手动设置Cookie的有效路径:

cookie.setPath(“/cookiesession”);

(二)怎样发送Cookie到客户端

response.addCookie(cookie对象);

(三)怎样接收客户端携带的Cookie数据

Cookie[] cookies = request.getCookies();

Session

把会话数据保存到服务端的技术叫session技术

(一)怎样获取session对象

HttpSession session = request.getSession();

这个方法不仅可以创建session对象,也可以获取session对象:

什么时候创建新的:

服务端没有session对象时,会创建新的

一次新的会话开始,每一个客户端第一次访问,都会创建新的

什么时候获取已有的:

客户端携带了JSESSIONID,并且服务端有对应的session对象时,是获取原有的session

(二)怎样向session里存取数据(重要:域对象)

域对象必定有的三个方法 :

setAttribute(String name, Object value);

getAttribute(String name);

removeAttribute(String name);

session域对象

何时创建:

前提是必须要执行request.getSession方法

客户端的JSESSIONID和服务端的session对应不上的时候,会创建新的:

比如:

客户端没有JSESSIONID;

服务端没有和JSESSIONID对应的session对象

何时销毁:

1. 服务器关闭(非正常关闭)

2. 会话超时。默认30分钟会话超时,可以修改会话超时时间

在web.xml中配置以下代码(单位分钟):

<session-config>
<session-timeout>60</session-timeout>
</session-config>


手动销毁 session.invalidate();

作用范围:一次会话期间

(三)什么样的情况下可能会找不到session里的数据

如果客户端没有JSESSIONID,或者把JSESSIONID丢失了

就会找不到原本的session对象,session里的数据就找不到了

服务端把session对象给销毁掉了

session里的数据也会找不d到

应用场景

并不是所有数据都适合放在cookie或者session里的,因为数据会丢失,只能临时存储。可以用来保存以下的数据(会话中的临时数据):

1. 登录状态数据,一般保存的是登录的user对象,保存在session里

2. 购物车的数据,一般来说不登录可以向购物车里放数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息