Cookie会话管理

来源:互联网 发布:jenkins 编译java项目 编辑:程序博客网 时间:2024/05/29 19:07

Cookie会话管理

1、Cookie指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)Cookie伴随着用户请求和页面在web服务器和浏览器之间传递,Cookie包含每次用户访问站点时web应用程序都可以读取的信息。

  例如:用户打开浏览器点击多个链接或访问多个web资源之后,关闭浏览器,这个过程就是一个会话的过程。当下次再打开次链接或者访问该web资源时,浏览器就会知道以前访问过,这就称之为有状态的会话。

2Cookie是保存字符串的,浏览器对它是有大小限制的 ,并且它会每次随着用户请求被发送到服务器,所以应该保证Cookie值不要太大,一般限制cookie大小为4K。浏览器一般只存放300Cookie

3、保存会话的两种技术

(1)Cookie

Cookie是客户端技术,程序员用程序把每个用户的数据以Cookie的形式写给用户各自浏览器。如果用户再次用浏览器访问服务器中的web资源时,就会带着各自的数据直接去访问,web资源处理的就是用户自己的信息数据。

(2)Session

Session是服务器端技术,当服务器在运行的时候可以为每个用户的浏览器创建一个其独享的Session对象,所以用户在访问服务器的web资源的时候,可以把各自的数据存放在各自独享的Session中去,每当用户再次访问服务器中的其他web资源时,其他web资源再从用户各自的Session中取出数据为用户服务。

4、设置Cookie的有效时间

Cookie的有效期是指:设置Cookie的最大保存时间。

1)、当服务器给浏览器送一个cookie时,如果在服务器端没有调用setMaxAge方法设置Cookie的有效期,那么cookie的有效期只在一次会话过程中有效。当用户关闭浏览器时,会话就会结束,cookie也就失效了。

2)、如果在服务器端调用了setMaxAge方法设置的cookie有效期,如30分钟,那么当服务器把cookie发送给浏览器时,cookie就会在客户端的硬盘上存储30分钟,即使浏览器关闭了,cookie依然存在,在这30分钟之内,再次打开浏览器访问服务器时,浏览器就会把cookie值一起带上,就可以在服务器端获取客户端浏览器传过来的cookie里面的用户数据信息。

Cookie.setMaxAge(30*60);   //设置cookie的有效期为30分钟

3)、request接口中定义了一个getCookie方法,主要是获取客户端提交的Cookie。   

Cookie[ ] cookies = request.getCookie(cookie);  //获取浏览器访问服务器 时传递过来的cookie数组

5、Cookie中可以存取中文

(1)cookie中存储中文时,必须进行中文转码,使用的是URLEncoder类中的encode()方法进行转码。

Cookie cookie = new Cookie(uername,URELEncoder(大学UTF-8);

(2)获取cookie中的中文数据时,必须进行解码操作,使用的是URLDecoder类中的decode()方法进行解码。

URLDecoder.decode(cookies[i].getValue(),UTF-8);