欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Session和Cookie(会话跟踪技术)

程序员文章站 2024-03-20 11:46:10
...

Session和Cookie(会话跟踪技术)

Cookie通过在客户端记录信息确定用户身份

Session通过在服务器端记录信息确定用户身份

Cookie的应用:

1.保持用户登录状态
将用户的信息保存到Cookie中,并发送给浏览器,并且将有效时间设置为一个较长的时间,这样浏览器在以后访问 网站时,都会带着该Cookie,服务器以此来辨识用户,用户就不再需要输入用户名和密码等信息。

2.记录用户名

一旦用户登录成功以后,下次再登录时,直接将Cookie中的用户名读取并显示出来,这样用户就不需要再次输入 用户名,只输入密码即可

Cookie的设置和获取:

通过HttpServletResponse.addCookie的方式设置Cookie

 Cookie cookie = new Cookie("jieguo","true");       
 response.addCookie(cookie)

通过HttpServletRequest获取 Cookie:

Cookie[] cookies = request.getCookies();                    
if(cookies != null)                       
    for(Cookie c : cookies){                            
        String name = c.getName();//获取Cookie名称    
        if("jieguo".equals(name)){                                
        String value = c.getValue();//获取Cookie的值                               
            bool = Boolean.valueOf(value);//将值转为Boolean类型                            
        }                       
     } 

设置Cookie的有效时间:

//setMaxAge用来设置Cookie的大有效时间,需要int型的参数,代表有效的秒数 
    cookie.setMaxAge(秒数)//当参数大于0时,会设置为指定的秒数            
    cookie.setMaxAge(30);            
//当参数等于0时,浏览器不会保存Cookie,Cookie立即失效           
    cookie.setMaxAge(0);           
//当参数小于0时,和不设置是一样,当前会话有效           
    cookie.setMaxAge(-100);            
//设置一个永久有效的Cookie,并非永久,只是使Cookie的生命很长而已   
    cookie.setMaxAge(60*60*24*365*10);
 

session的设置和获取

HttpSession session = request.getSession();    // 获取Session对象 
session.setAttribute("loginTime", new Date());   // 设置Session中的属性
session.getAttribute("loginTime")           //获取session中存储的数据

为防止内存溢出,服务器会把长时间内没有活 跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自 动失效了。

setMaxInactiveInterval(100)  //设置用户超时访问session失效时间,单位是秒

Session和Cookie的区别

(1) Cookie数据保存在客户端,Session数据保存在服务器端。

(2) Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的 SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户 端,用Cookie保存的,用户提交页面时,会将这一SessionID提交到服务器端,来存取Session数据。这一过程,是 不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。
(3) Cookies是属于Session对象的一种。但有不同,Cookies不会占服务器资源,是存在客服端内存或者一个 Cookie的文本文件中;而Session则会占用服务器资源。所以,尽量不要使用Session,而使用Cookies。但是我们 一般认为Cookie是不可靠的,Cookies是保存在本机上的,但是其信息的完全可见性且易于本地编辑性,往往可以 引起很多的安全问题Session是可靠地。但是目前很多著名的站点也都用Cookie