session(会话)

来源:互联网 发布:淘宝如何改价钱 编辑:程序博客网 时间:2024/05/22 10:32

session(会话)


1.session(会话)

   (1)session是什么?

      a,session是服务器端的状态管理技术

      b,当浏览器访问服务器时,服务器会创建一个session对象(该对象有一个唯一的id号,称之为sessionId),接下来,服务器在默认情况下,会使用set-cookie消息头将这个sessionId发送给浏览器;浏览器会将这个sessionId保存下来(内存);当浏览器再次访问服务器时,会将sessionId使用cookie消息头发送给服务器,服务器依据这个sessionId就可以找到之前创建的session对象。 

   (2)如何获取一个session对象

     1)方式一

         //HttpSession是一个接口

         HttpSession s = request.getSession(boolean flag);

         当flag = true时:

            先查看请求当中有没有sessionId,如果没有,则创建一个session对象;如果有sessionId,则依据该sessionId查找对应的session对象,如果找到了,则返回,找不到,则创建一个新的session对象。

        当flag = false: 

           先查看请求当中有没有sessionId,如果没有,返回null;如果有sessionId,则依据该sessionId查找对应的session对象,如果找到了,则返回,找不到,返回null。

     2)方式二

         HttpSession s = request.getSession();

         等价于   request.getSession(true);

   (3)常用的方法

       //获得sessionId

       String getId()     

       //绑定一个对象到session对象上

      setAttribute(String name,Object obj);

      //获得绑定对象,如果不存在,返回null

      Object getAttribute(String name);

      //解除绑订

      removeAttribute(String name);

   (4)session超时

       a.什么是session超时

          服务器会将空闲时间过长的session对象删除掉。

       b.缺省的超时时间

          服务器缺省的时间限制一般是30分钟。

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

         </session-config>

         修改之后需要重启服务器。

      c. setMaxInactiveInterval(int seconds);

   (5)删除session

        session.invalidate();


2.session案例

   (1)session验证

       session验证经常用于保护一些需要登录之后才能访问的资源。

         比如,只有登录成功之后,才能访问main.jsp

      step1,登录成功之后,绑定一些数据到session对象上。

         比如,session.setAttribute("user",user);

      step2,对于需要保护的资源,添加session验证的代码。

        比如,

            Object obj = session.getAttribute("user");

            if(obj == null){
                 //没有登录成功或者session超时
                response.sendRedirect("login.jsp");

            }

   (2)验证码

       案例代码链接:http://blog.csdn.net/u011637069/article/details/49820995




3.session小结

   相对于cookie,session的优点是安全,可以保存大量的数据,可以保存的数据类型更丰富。

   cookie是将状态(即数据)保存在浏览器端,而session保存在服务器端,如果访问量很大,使用session机制会占用大量的内存空间。



0 0
原创粉丝点击