session机制大揭秘(结合cookie)
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)的更多相关文章
- session机制,浏览器禁用cookie后,怎么使用session
sessionid是存储在cookie中的,解决方案如下: Session URL重写,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session session机制.session机制是一种 ...
- Session机制(是对cookie的作用的提升,使用较多)
1.Session作用类似于购物车,第一次,放入物品,可以获得Session的id,并可以设置id失效的时间,这样便于多次将物品放在购物车里面,使用的就是获取的Session的id: 2.Sessio ...
- 理解Cookie和Session机制(转)
目录[-] Cookie机制 什么是Cookie 记录用户访问次数 Cookie的不可跨域名性 Unicode编码:保存中文 BASE64编码:保存二进制图片 设置Cookie的所有属性 Cookie ...
- 理解Cookie和Session机制
转载: 理解Cookie和Session机制 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录 ...
- cookie,Session机制的本质,跨应用程序的session共享
目录:一.术语session二.HTTP协议与状态保持三.理解cookie机制四.理解session机制五.理解javax.servlet.http.HttpSession六.HttpSession常 ...
- 深入理解Cookie和Session机制
转载理解Cookie和Session机制 目录 Cookie机制什么是CookieCookie的不可跨域名性Unicode编码:保存中文BASE64编码:保存二进制图片设置Cookie的所有属性Coo ...
- C#基础知识之理解Cookie和Session机制
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- cookie机制、session机制
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- 转:理解Cookie和Session机制
原文: 理解Cookie和Session机制 摘要: Cookie工作原理 由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份.怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论 ...
随机推荐
- Java -----transient 和static
越来越喜欢深究java基础了,讲讲 transient 和static 对序列化的影响.废话少说,直接上代码就可以了 package serializable; import java.io.Ser ...
- 解决js输出汉字乱码的问题
近期做安卓开发.安卓client调用server页面,可是server编码为gbk,安卓编码为utf-8.导致js输出内容报错,前期的做法是调整js文件编码.可是会生成两个版本号,非常不方便,最后找到 ...
- python 使用cx-freeze打包程序
python环境 3.6.5 win7 linux环境同理 先尝试了PyInstaller ,打包时一直提示 no module named gtk 而gtk 又依赖pygobj ...
- JobConf
/** * A map/reduce job configuration. * 翻译:一个map/reduce作业配置 * <p><code>JobConf</code ...
- 设置安卓开机动画、开机logo
我们要修改的是system>media文件夹下的bootanimation.zip(手机开机动画)这个文件 先来讲讲这个文件结构:该zip解压后得到两个文件, 第一个目录存放了开机时播放的图片( ...
- 关于 ++x 和 x++ 比较难的一个例子
public class testMain { static{ int x = 5;//如果后面有static int x, 前面的定义就没有用x会被重新定义为0 } static int y; st ...
- smali函数分析
一.函数调用 smali中的函数和成员变量也分为两种,分别为 direct 和 virtual 两者的区别 1.direct method 是指private函数 2.virtual method 是 ...
- kubernetes集群管理命令(三)
系列目录 前面两节我们由浅入深介绍了不少kubernetes管理比较常用的命令.本节我们通过案例讲解一些需要更为复杂的操作才能完成的命令. 选择一个deployment下的所有pod 前面讲到过,ku ...
- eclipse 导入web项目时常见错误
1. JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java B ...
- poj 3233 Matrix Power Series(矩阵二分,高速幂)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 15739 Accepted: ...