深入理解Cookie和Session会话技术

前言:在JavaWeb技术中有着一个很重要的技术就是会话技术,会话技术就是在一次会话的多次请求间共享数据;主要方式就分为两种,一种是客户端会话技术(cookie),另一种就是服务器会话技术(session),下面就详细的了解下这两种会话技术。

Cookie:客户端会话技术

cookie的实现原理:简单的来说是基于响应头set-cookie和请求头cookie实现的;

详细的来说就是客户端向服务器端发起第一次请求,此时服务器端就创建一个cookie对象,将要响应的内容放到cookie对象中,通过一个响应头的方式响应给客户端(Set-Cookie:msg=hello),客户端就会将cookie中的内容保存到浏览器中;下一次向服务器端发起请求的时候就会将cookie中的内容放到消息头(Cookie:msg=hello)中带过去,此时服务器就可以获取cookie中的内容。

图解:

cookie的使用步骤:

1.创建cookie对象,绑定数据:new Cookie(String name,String value);

2.发送cookie对象:response.addCookie(Cookie cookie);

3.获取cookie,拿到数据:request.getCookies();

cookie的特点和作用:

特点:

         1.cookie存储数据在客户端浏览器中。

         2.浏览器对单个cookie的大小是有限制的,在4kb内;同一个域名下的cookie数量也有限制,20个以下。

作用:

         1.一般用于存储少量不太敏感的数据。

         2.在不登录的情况下浏览器完成对用户的身份识别。

有些注意的地方:

1.一次可以发送多个cookie。

2.cookie在浏览器中的保存时间可以通过setMaxAge(int seconds)方法来指定存活时间,但是只要关闭了浏览器,cookie就会被销毁,同时到了设置的时间cookie也会失效。

Session:服务器端会话技术

Session的实现原理:Session的实现是依赖于Cookie的;

详细的原理就是客户端向服务器端发出请求,服务器端就会获取Session对象,如果是第一次获取Session对象,没有Cookie,会在内存中创建一个新的Session对象,并且这个Session对象有一个唯一的id值(假设为789c379af21);这时给客户端响应时就会将这个id存放到响应头中发送过去(set-cookie:JSESSIONID=789c379af21),这时浏览器就会将响应头中的cookie信息存储到浏览器中;当浏览器下一次访问该项目中的资源时就会携带这个cookie头到服务器中(cookie:JSESSIONID=789c379af21),服务器就会自动的获取这个cookie信息,然后就会查询服务器中有没有一个id为(789c379af21)的session对象,这样一找就找到了这个session对象,所以这两个session对象就是同一个了;所以Session就完成了一次会话的多次请求间共享数据。

图解:

Session的使用:

1.获取HttpSession对象:HttpSession session=request.getSession();

2.使用HttpSession对象:

          void session.setAttribute(String name,object value);

          Object getAttribute(String name) ;

          void removeAttribute(String name)  ;

session的特点:

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

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

有些注意的地方:

1.session是在服务器关闭时销毁,同时它的默认失效时间是30分钟

2.客户端不关闭,服务器关闭后,两次获取的session不是同一个,但是如果要确保数据不丢失,tomcat可以自动完成以下动作;

        *session的钝化:在服务器正常关闭之前,将session对象系列化到硬盘上

        *session的活化:在服务器启动后,将session文件转化为内存中的session对象即可。

 

通过上面的详细了解我们可以最后总结一下两种会话技术的区别

Cookie与Session的区别:

1.session存储数据是在服务器端,cookie存储数据是在客户端。

2.session没有数据大小的限制,cookie有。

3.session数据安全,cookie相对不安全。

 

 

你可能感兴趣的:(JavaWeb)