1. 什么是session

   当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该浏览器分配一个空间,该空间被这个浏览器独占。这个空间就是session空间。

 

2. session的用途

  1.网上商城中的购物车

  2.保存登陆用户的信息

  3.将某些数据放入到session中,供同一用户的各个方面使用

  4.防止用户非法登陆到某个页面等等

 

3. 如何理解session

    可以把session看做一张表,这张表有两列,而表有多少行理论上没有限制,每一行就是session的一个属性。每个属性包含有两个部分,一个是该属性的名字String,另外一个是它的值Object。

 

4. 运行机制

    ① session开始时,服务器会为客户端创建HttpSession对象,用于存放信息。

    ② servlet容器为HttpSession分配唯一的标识符session id,容器把session id作为cookie保存在客户端浏览器中。

    ③ 每次客户发出HTTP请求时,servlet容器可以从HttpServletRequest对象中获取session id,与服务器session比较从而获得相应信息。

5. HttpSession接口中常用的方法

    getId(),返回此对话包含的唯一的标识符。

    setAttribute(java.lang.String name, java.lang.Object value),使用指定的名字将对象绑定到会话中。

    getAttribute(java.lang.String name),返回这个会话中指定名称的对象,如果没有则返回null。

    setMaxInactiveInterval(int interval),指定一个时间,以秒为单位,servlet容器将可以使这个会话。

6. 使用session

    1.得到session
         HttpSession hs=request.getSession(true);
    2.向session添加属性
         hs.setAttribute(String name,Object val);
    3.从session得到某个属性
        String name=hs.getAttribute(String name);
    4.从session中删除掉某个属性
        hs.removeAttribute(String name);
    5.注销session中的内容(比较安全的一种方式)
       ht.setMaxInactiveInterval(0);

7. session的注意事项

    ①.session中属性存在的默认时间是30min,你也可修改它存在的时间:(a)修改web.xml  (对所有项目都起作用)  (b)在程序中修改

    ②.上面说的这个30min指的是用户的发呆时间,而不是累计时间

    ③.当某个浏览器访问网站时,服务器会给浏览器分配一个唯一的session id,并以此来区分不同的浏览器(即客户端)

    ④.因为session的各个属性要占用服务器的内存,慎用。