java web 40 : Cookie、Session

一、会话概述
1、什么是会话?
    会话:是指浏览器和服务器之间产生的多次请求以及响应加在一起,就称之为浏览器和服务器之间的一次会话。
    会话开始于,浏览器第一次访问服务器。
    会话结束于,浏览器最后一次访问服务器,并且浏览器关闭为止。

2、如何保存会话中产生的数据?
    在一次会话中往往会产生一些数据,如何来保存这些数据?
    可以使用cookie或者session来保存会话中产生的数据。

二、Cookie的原理和应用
1、cookie的工作原理
    参考讲义中的《cookie工作原理图》

2、cookie的API
    (1)创建cookie对象
        cookie cookie = new Cookie(String name,String value);
    (2)将cookie添加到响应中
        response.addCookie( cookie );
    
    (3)在服务器端获取请求中的所有cookie组成的数组
        Cookie[] cs = request.getCookies();
        如果请求中没有任何cookie,该方法会返回null;
        如果请求中有一个或一个以上的cookie,该方法就会返回cookie对象数组
        
    (4)删除浏览器内部的cookie
        由于浏览器是根据cookie的名字来区分一个cookie,因此要删除一个cookie,可以向
        浏览器再发送一个同名的cookie,并且指定cookie生存时间为零,将这个cookie发送
        给浏览器,浏览器收到后,会先将之前的cookie覆盖掉,再删除当前这个cookie.
    (5)cookie的常用方法
        cookie.getName() -- 获取cookie的名字
        cookie.getValue() -- 获取cookie中的保存的数据
        cookie.setValue() -- 设置/修改cookie保存的数据
        
    (6)cookie.setMaxAge()方法 -- 设置cookie的最大生存时间.
        如果不设置该方法,cookie默认是会话级别的cookie,当浏览器关闭,随着内存的释放
        (cookie默认存放在浏览器的内存中),cookie会跟着销毁!
        如果设置了该方法(设置的是正值),cookie就不会再存到浏览器的内存中,而是以文件
        形式保存在浏览器的临时文件夹中,即使浏览器关闭,内存释放,cookie也不会销毁.
        下次打开浏览器,还可以获取硬盘上文件中的cookie信息.

三、session的原理和应用
1、session的工作原理
    参考讲义中《session的工作原理图》

2、session是一个域对象
    通过如下方法可以获取session:
    (1)request.getSession()
       request.getSession(true)
       -- 表示如果在服务器内部有当前浏览器对应的session,就会直接返回该session对象;
       -- 如果服务器内部没有当前浏览器对应的session,就会创建一个session并返回;
    (2)request.getSession(false)
       -- 表示如果在服务器内部有当前浏览器对应的session,就会直接返回该session对象;
       -- 如果服务器内部没有当前浏览器对应的session,就会返回null值;

    session中提供的存取数据的方法:
    (1)session.setAttribute(String attrName, Object attrValue);
       -- 往session域中添加一个域属性,属性名只能是字符串类型,属性值可以是任意类型。
    (2)session.getAttribute(String attrName);
       -- 根据属性名获取域中的属性值,返回值是一个Object类型
   

posted @ 2020-08-18 17:58  Saturn5  阅读(27)  评论(0)    收藏  举报