博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
session(会话)
阅读量:4305 次
发布时间:2019-05-27

本文共 1555 字,大约阅读时间需要 5 分钟。

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)验证码

       

3.session小结

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

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

转载地址:http://kzrws.baihongyu.com/

你可能感兴趣的文章
redis事务
查看>>
Java_基础语法之dowhile语句
查看>>
HDU 2175 汉诺塔IX
查看>>
PAT 甲级 1021 Deepest Root
查看>>
查找代码错误.java
查看>>
vc获取特殊路径(SpecialFolder)
查看>>
单例模式
查看>>
int(3)和int(11)区别
查看>>
201521123061 《Java程序设计》第十一周学习总结
查看>>
代码小思考
查看>>
Unity中的销毁方法
查看>>
ceph删除pool提示(you must first set the mon_allow_pool_delete config option to true)解决办法...
查看>>
2016-7-15(1)使用gulp构建一个项目
查看>>
Windows窗体技术
查看>>
菜鸟学IT之python词云初体验
查看>>
Linux6.9安装
查看>>
20190807更新数据相关笔记
查看>>
P1137 旅行计划
查看>>
MySQL查询执行的基础
查看>>
python - wsgi协议
查看>>