简述session

1.Session概述

* session是服务器端技术

* 服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象

* 由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中

* 当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务

* session也是基于cookie技术的,传递是session的id值

2.Session对象的API

* void setAttribute(String name, Object value)
* Object getAttribute(String name)
* void removeAttribute(String name)
* String getId()                                        -- session的空间有唯一的id值,获取该id值的。
* void invalidate()                                     -- 销毁session对象
* ServletContext getServletContext()                    -- 获取ServletContext域对象

 3.使用request对象来获取到session的对象

* request.getSession()                                  -- 返回HttpSession对象,第一次调用,为你创建session对象(空间)

4.Session的创建和销毁

session对象的创建

* 针对是每个用户的浏览器,为每一个浏览器都创建一个独享的session的对象。

* request.getSession()      -- 该方法可以创建session的对象,但是也可以来获取到session对象

* 根据cookie对象中是否有jsessionid的cookie,如果有,通过id值查找,找到了不用创建了,返回。如果没有找到,创建一个新的session对象。

session对象的销毁

* 关闭服务器销毁session

* 非正常的原因关闭服务器,销毁session

* 如果正常关闭服务器,session会被序列化到磁盘上。
* 配置session的默认销毁时间,默认值是30分钟

* 在tomcat/conf/web.xml文件中设置了session默认超时时间

            <session-config>

                <session-timeout>30</session-timeout>

            </session-config>  

* 设置session最大的存活的时间
* void setMaxInactiveInterval(int interval)
* 直接使用方法,销毁session * invalidate();

5.Session域对象

5.1.session的域对象

* 作用:用来传递数据
* 区别:每个域对象的存活时间不同!!

5.2.方法

* void setAttribute(String name, Object value)
* Object getAttribute(String name)
* void removeAttribute(String name)

5.3.域对象(3个域对象最重要的)

* request               -- 真实对象HttpServletRequest

        * 代表的是一次请求的范围

        * 在服务器端给客户度传递一些提示的信息和查询的数据

 * session               -- 真实对象HttpSession

        * 代表的是一次会话的范围(可以发送多次请求和得到多次响应)

        * 保存的都是和每个用户相关的数据(登录后需要把用户的信息,购买商品需要保存起来)


* application -- 真实对象ServletContext * 代表的是一个WEB应用 * 保存全局共享的数据

 

原文地址:https://www.cnblogs.com/yadongliang/p/6232891.html