[转]【会话技术】Session技术

创建时间:6.29 & 6.30

 

一、Session技术

Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间  存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内 存空间。所以说Session的实现是基于Cookie,Session需要借助于Cookie存储客  户的唯一性标识JSESSIONID

在Session这我们需要学习如下三个问题:

怎样获得属于本客户端的session对象(内存区域)?

怎样向session中存取数据(session也是一个域对象)?

session对象的生命周期?

1.获得Session对象

HttpSession session = request.getSession();

此方法会获得专属于当前会话的Session对象,如果服务器端没有该会话的Session      对象会创建一个新的Session返回,如果已经有了属于该会话的Session直接将已有      的Session返回(实质就是根据JSESSIONID判断该客户端是否在服务器上已经存在 session了)

 

 

2.怎样向session中存取数据(session也是一个域对象)

Session也是存储数据的区域对象,所以session对象也具有如下三个方法:

session.setAttribute(String name,Object obj);

session.getAttribute(String name);

session.removeAttribute(String name);

 

 

先访问1再访问2:

 

*使用同一个浏览器(客户端)访问两个资源时,两个中的Session是一样的,因为Session是会话级别的

3.Session对象的生命周期(面试题/笔试题)

创建:第一次执行request.getSession()时创建

销毁:

1)服务器(非正常)关闭时

2)session过期/失效(默认30分钟)

问题:时间的起算点 从何时开始计算30分钟?

从不操作服务器端的资源开始计时

可以在web项目的web.xml中进行配置

<session-config>

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

</session-config>

3)手动销毁session

session.invalidate();

作用范围:

默认在一次会话中,也就是说在,一次会话中任何资源公用一个session对象

面试题:浏览器关闭,session就销毁了? 不对

*情况:访问资源SessionServlet1后,客户端关闭、再次打开,session虽然已经创建,但cookie中的JSESSIONID丢失,找不到已创建的session。

解决:将Cookie设置持久化时间

注意要同名同路径

 

*验证码校验:

在CheckImgServlet中把随机生成的验证码内容存入session;

在LoginServlet中验证码校验

 

 

总结:

重点:图

会话技术:

Session技术:存到服务器端 借助cookie存储JSESSIONID

HttpSession session = request.getSession();

setAttribute(name,value);

getAttribute(name);

session生命周期

创建:第一次指定request.getSession();

销毁:服务器关闭、session失效/过期、手动session.invalidate();

session作用范围:默认一次会话中

原文地址:https://www.cnblogs.com/musecho/p/11202467.html