Advertisement

会话技术Cookie和Session

阅读量:

会话跟踪 :对不同请求发送的数据,能够进行共享。可以用cookie和 session实现会话跟踪。

cookie: 英文 饼干,面包屑。客户端存(浏览器)储数据,用于多次请求 的数据跟踪(数据共享)。

session: 会话(对话,一次会话包含,n次请求和n次响应)。服务器端的内存 中存储数据,用于在一次会话的多次请求间共享数据,进行数据跟踪。

会话跟踪的作用: 因为http协议是一个无连接,无状态的协议,每一次请求之间互相独立,互不关 联,所以无法在多次请求之间共享数据,cookie和session解决的问题就是共享数据问题。

会话: 浏览器第一次给服务器发送请求开始---》到任意一方断开为止。 功能:在一次会话的范围内,多次请求之间共享数据。

1.Cookie技术

概念 :客户端会话技术,将数据保存到客户端

实现步骤:

1.创建cookie对象,绑定数据

new Cookie(String name,String value);

2.响应cookie对象到浏览器

response.addCookie(cookie对象);

3.获取cookie对象,获取数据。

Cookie[] cookies = request.getCookies()

原理: 通过Http协议中的响应头set-cookie和请求头cookie完成的。

特点:

1.存储数据在浏览器端

2.浏览器对单个cookie 的数据大小有限制(4k,4*`1024),同一个域名下的总cookie 个数也有限制(<20)

3. 数据也有限制,只能是字符串,特殊字符也不能有。

2.Session

概念: 在一次会话的多次请求之间共享数据,将数据保存在服务器端session对象中。是服务器端共享数据。

使用步骤:

1).获取session对象 request.getSession();==>getSession(true); 直接获取session,如果session不存在,就创建一 个。

a. request.getSession(false); 获取已经存在的session对象,如果不存在获取到null。

2).使用session对象

复制代码
 setAttribute(String name,Object value);设置session的值

    
 getAttribute(name);根据session的名字,获取session的值
    
 removeAttribute(String name);删除session
    
 session.invalidate(); //销毁session

如果使用请求的转发,可以通过request将数据转发到jsp页面,但是导致页面的路径不 会改变,如果使用重定向,可以改变地址栏路径,但是不能通过request传输数据,所以 此时用session进行数据的共享。 request 在一次请求之间共享数据。 session在一次对话(多次请求)之间共享数据。

原理: session的实现是依赖于cookie的,在客户端存储着sessionId的cookie数据,session就是依赖于此实现的。

注意事项:

当客户端关闭后,再次打开两次获取的session不是同一个。如果想保证是同一个,可以通过设 置cookie来完成。

复制代码
 Cookie c = new Cookie("JSESSIONID",session.getId());

    
 c.setMaxAge(60*60);
    
 response.addCookie(c);自己练习!

session钝化:在服务器正常关闭之前将数据序列化到硬盘上。

a. session活化:在服务器启动过后将序列化到硬盘上的文件再读取到session对象中。

session失效时间:

1.服务器关闭

2.session对象调用invalidate()方法 手动失效

3.session默认失效时间是30分钟

可以配置修改 tomcat--->conf目录---》web.xml--->session-config

特点:

1.session用于存储一次共享会话的多次请求的数据,在服务器端。

2.session可以存储任意数据类型,任意大小的数据。

3.cookie和session的区别

A:session存在服务器端;cookie存在客户端

B:session由服务器自己创建;Cookie也是服务器写进去响应到客户端

C:session存的对象,每一个客户端独立;Cookie存的是字符串,也是每一个客户端独享

D:客户端访问服务器,会带着一个jsessionid,如果没有服务器自动创建一个响应给客户端,下次请求带着,session靠jsessionid进行识别用户。

全部评论 (0)

还没有任何评论哟~