session运行机制

当一个session开始时,servlet容器将创建一个httpSession对象,在HttpSession对象中可以存放客户状态信息。

servlet容器为HttpSession分配唯一一个标识符,成为sessionID,servlet容器把session id 作为cookie保存在客户端浏览器中,每次客户发送http请求时,servlet容器可以从HTTPServletRequest对象中读取session  ID,然后根据session ID找到相应的HttpSession对象,从而获取客户的状态信息。

理解图:

它通过getID的方式产生一个sessionID,通过cookie的方式写入客户端,客户端再通过请求,再将该ID返回给服务器端,这样,一来一去,服务器就知道与客户端对应的session对象是什么了,所以产生服务器端多个session对象之间不会出现干扰。他们之间是相互独立的。

HttpSession接口

1.getID():获取session值

2.isNew():判断是否创建新的sessin

3.SetMaxInactiveInterval() 设置一个session可以处于不活动状态的最大时间间隔,以秒为单位,如果为负数,表不限制session处于不活动状态的时间,默认值为30分钟

设置sessin失效时间(在xml中)

<session-config>

  <session-timeout>10</session-timeout>

</session-config>

默认页面都对session支持,因为

<%@page session="true">为默认的

sessin生命周期

当客户第一次访问web应用中支持session的某个页面时,就会开始一个新的sessin。

接下来当客户浏览这个web应用的不同网页时,始终处于同一个session中。

结束:在以下情况中,session将会结束生命周期,servlet容器会将session所占用的资源释放掉

1.客户端关闭浏览器(正常关闭)

2.sessin过期

3.服务器端调用了HttpSession的invalidation()方法。

严格的讲:关闭浏览器不一定删除sessin,有时候用以下几种方法可以强制关闭

1.可以在所有页面中js的window.onclose来见识浏览器是否关闭

但是对于浏览器崩溃或者强行杀死进程,这些非常规手段无能为力,所以在实际项目中,我们让sessin过期时,释放删除。

sessinID对应的cookie是存在于浏览器进程上得,当浏览器关闭时,对应的进程消失,cookie也随之消失、。

session对应的cookie是存在于浏览器进程上面的,所以我们称之为会话cookie,所以,当关闭浏览器时,客户端不会向服务器发送任何请求,也不会收到任何响应,服务器端的session依然存活着,当新开一个浏览器时,就会新开一个sessionID。

session过期,是指当session开始后,在一段时间内,客户没有和web服务器交互,这个session会话会失效,我们可以通过HttpSession的setMaxInactiveInterval()方法设置允许session保持不活动的时间(以秒为单位)

练习题:

哪一个说法正确:

A.对于每个请求访问mailLogin.jsp的Http请求,servlet容器都会创建一个HttpSession对象。

B.每个HttpSession对象都有唯一的ID

C.javaWeb应用程序必须负责为HttpSession分配唯一的ID

session机制大揭秘(结合cookie)的更多相关文章

  1. session机制,浏览器禁用cookie后,怎么使用session

    sessionid是存储在cookie中的,解决方案如下: Session URL重写,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session session机制.session机制是一种 ...

  2. Session机制(是对cookie的作用的提升,使用较多)

    1.Session作用类似于购物车,第一次,放入物品,可以获得Session的id,并可以设置id失效的时间,这样便于多次将物品放在购物车里面,使用的就是获取的Session的id: 2.Sessio ...

  3. 理解Cookie和Session机制(转)

    目录[-] Cookie机制 什么是Cookie 记录用户访问次数 Cookie的不可跨域名性 Unicode编码:保存中文 BASE64编码:保存二进制图片 设置Cookie的所有属性 Cookie ...

  4. 理解Cookie和Session机制

    转载: 理解Cookie和Session机制 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录 ...

  5. cookie,Session机制的本质,跨应用程序的session共享

    目录:一.术语session二.HTTP协议与状态保持三.理解cookie机制四.理解session机制五.理解javax.servlet.http.HttpSession六.HttpSession常 ...

  6. 深入理解Cookie和Session机制

    转载理解Cookie和Session机制 目录 Cookie机制什么是CookieCookie的不可跨域名性Unicode编码:保存中文BASE64编码:保存二进制图片设置Cookie的所有属性Coo ...

  7. C#基础知识之理解Cookie和Session机制

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  8. cookie机制、session机制

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  9. 转:理解Cookie和Session机制

    原文: 理解Cookie和Session机制 摘要: Cookie工作原理 由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份.怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论 ...

随机推荐

  1. 公共返回JSON信息的方法

    java代码: public void returnMessage(HttpServletResponse response, Object str){ PrintWriter write = nul ...

  2. angular - 小结

    引入样式: 导入全局 - >styles.css 导入第三方 - > 在package.json配置,然后再 npm install 安装好以后,最后再angular.json里面的sty ...

  3. JavaScript 工厂模式和订阅模式

    设计模式的好处: 代码规范 // 例如表单验证,两个 input ,一个用户名,一个密码 // 通常做法是 function checkUser(){ //..... } function check ...

  4. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  5. linux 信号屏蔽

    <span style="font-size:18px;">#include <sys/types.h> #include <unistd.h> ...

  6. Django缓存问题

    由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...

  7. opencv中的SVM图像分类(二)

    opencv中的SVM图像分类(二) 标签: svm图像 2015-07-30 08:45 8296人阅读 评论(35) 收藏 举报  分类: [opencv应用](5)  版权声明:本文为博主原创文 ...

  8. LeetCode215:Kth Largest Element in an Array

    Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...

  9. 深入理解spring国际化

    深入理解spring国际化 转自http://blog.csdn.net/ethan_fu/article/details/45621337

  10. android检测当前网络是否可用

    在android程序中运行第一步就是检测当前有无可用网络  如果没有网络可用就退出程序  if (isConnect(this)==false)           {                ...