当前课程知识点:Web后端开发技术 > 第3章 会话跟踪 > 3.2 Session技术 > 3.2.1 Session技术概述
欢迎大家回来继续学习
Web后端开发技术
在这一小节当中
我们将学习Session技术概述
Session技术
它是使用HttpSession对象
实现会话跟踪的一种技术
它是一种在服务器端保持会话跟踪的
解决方案
他的工作过程或者说工作原理如何呢
我们看一下
当用户发送第1次请求的时候
这里面需要指出请求的应该是jsp
或者servlet这种类型的资源
那么在服务器端就会创建httpSession对象
那么这个对象创建以后
他就应该有一个唯一的标识就是
SessionId当向客户端
发送响应的时候就会把会话对象的
ID
这里面叫做这JSESSIONID
作为响应当中响应头的一部分
返回给客户端了
当客户端第2次发送请求的时候
它将携带上刚才我们看到的JSESSIONID
也就是说 cookie返回给
服务器
那么通过这种方式服务器就能够记录
和识别用户
那么这是session他的工作的
同样我们可以使用浏览器当中的
开发者工具来观察
这JSESSIONID这张图我们看到在返回的
响应当中
这里面有一个对JSESSIONID
有这样一串数字
那么这个会话当中JSESSIONID
当他第2次发送请求的时候
他会携带上刚才我们看到的
这JSESSIONID
那么在开发当中我们如何获取到Session对象呢
换句话说
Session对象它是由容器创建的
我们怎样把它取到
那么Session对象
它是通过 http
ServletRequest的对象
这request接口来获取的
它有两个方法
第1个方法是getSession
那么这个方法是获取与客户端
相关联的有效的Session
如果当前没有Session
没有Session这个对象
他就会新增一个或者新创建一个
第2个方法和第1个方法它的名称是一样的
所差的就是参数不同
这里面有一个布尔型的参数
这是什么意思呢
就是说它也是用来获取客户端的一个
有效的Session
如果当前Session对象已经
存在了
那么它就返回当前这Session
如果当前Session这个对象不存在
在这种情况下
当这个参数为true的时候
它就会创建一个新的session返回去
当为false的时候
它的返回值就是为空了
所区别就在这里
这张表格列出了HttpSession
的接口的常用的方法
我们首先看前三个方法
叫做setAttribute
getAttribute和removeAttribute
大家想到这三个方法应该是很熟悉的
那么在之前的servlet
context的当中
我们会见到这三个方法
在HttpServletRequest
当中也见到了这三个方法
那么这三个方法是用来存取属性的
在Servlet
context当中
我们把它叫做在应用域当中存取属相
在Httpservlet
Request的接口当中
我们把它叫做在请求域当中存储属性
对于这里我们把它叫做在会话域当中
存取属性
大家要注意它们的范围是不一样的
方法名称是一样的
接下来这个方法叫做invite
它的作用是使一个会话失效
会话失效就意味着这次会话结束
那么从创建会话到会话结束之间的
我们把它称为一次会话
那么在一次会话当中
如果有用户多次的请求
那么它都属于一个会话
都有一个SESSIONID来维护
那么除了这种方式是会话失效之外
还有哪种方式
还有一种方式就是
Session本身它有一个最大的不活动时间
也就是说当我们创建了一个Session对象以后
换句话说
发送了一次
对servlet或jsp请求以后
我没做任何事情
那么他会超过一定时间以后
session也会删除的
那么这个时间就叫做最大不活动时间
那么最大不活动时间
通常是多少呢
对于他们开的服务器来讲
它是30分钟
在它的配置文件当中会看到这个数据
接下来这个方法叫做setMax
然后是最大的这种不活动时间
刚才我们指的时间
下面这个方法是用来获取最大的不活动时间
在接下来这个方法是用来获取
session的ID
对于每个会话它都有一个唯一的标识
就是SessionID在Cookie
当中叫做JSESSIONID最后一个方法是
用来获取Session创建对象的时间
好
下面这个事例是用来在会话域当中
存取属性
我们看一下这个方法
通过Request的对象得到
Session
然后调用
setAttribute
像会话域当中存取了一个名为username
值为mooc的属性
接下来这行代码是用来获取名称为
username那么的属性的值
注意这里面做了一个类型的转换
最下面这行代码是将
session当中属性删除掉
接下来代码呢是用来设置和获取会话
的最大不活动时间
这个代码应该比较简单
setMax
Inactive
Interval这样一个值
值呢应该是一个秒
以秒为单位
接下来是获取最大的值
最后这个是如何使一个会话失效
那么会话失效它到底还有什么重要
作用呢
我们在网站上面会看到这种页面
它上面有一个标识
安全退出
为什么要有这种功能呢
下面我给大家简单解释一下
当我们关闭浏览器的时候
大家都会认为 session已经
删除掉了
事实上不是这样的
当我们把浏览器关闭以后
如果这个session没有超过它的最大
不活动时间在服务器端还是存活的
那么这会儿就有可能会受到一些数据的攻击
或者说这个网站是不安全的
那么通过在这里设置一个选项叫做
安全退出
在安全退出当中调用session
当中的 evaluate
使会话失效
那么我们的网站就比不使用这种方式
变得更安全一些
好了
我们这节课就讲到这里
-1.0 导学
--1.0.1 导学
-1.1 Web应用开发概述
--1.1.3 测试
-1.2 准备Java Web应用开发环境
--1.2.2 测试
-1.3 任务实现:Hello World Web项目
--1.3.2 测试
-1.4 小结
--1.4.1 小结
-本课程所有代码
--课程参考代码
-2.0 导学
--2.0.1 导学
-2.1 Servlet概述
--2.1.3 测试
-2.2 创建Servlet
--2,2,3 作业
-2.3 Servlet应用
--2.3.4 测试
-2.4 任务实现:某高校毕业生信息发布系统-注册与登录(Servlet版)
--2.4.3 测试
-2.5 ServletConfig接口
-2.6 ServletContext接口
-2.7 HttpServletRequest接口
--2.7.5 测验
-2.8 HttpServletResponse接口
--2.8.3 测试
-2.9 任务实现:某高校毕业生信息发布系统-简历添加
--2.9.1 任务实现:某高校毕业生信息发布系统-简历添加
-2.10 小结
-动画演示:Java Web应用服务器处理客户端请求的过程
-3.0 导学
--3.0.1 导学
-3.1 Cookie技术
--3.1.3 测试
-3.2 Session技术
--3.2.2 Session技术-Session技术应用购物车
--3.2.3 测试
-3.3 URL重写与隐藏表单域
--3.3.2 测试
-3.4 任务实现:某高校毕业生信息发布系统-简历修改
--3.4.1 任务实现:某高校毕业生信息发布系统-简历修改
-3.5 小结
--3.5.1 小结
-4.0 导学
-4.1 jsp概述
--4.1.2 测试
-4.2 脚本元素
--4.2.2 测试
-4.3 指令元素
--4.3.2 测试
-4.4 动作元素
--4.4.3 测试
-4.5 内置对象
--4.5.3 测试
-4.6 JavaBean
--4.6.3 测试
-4.7 任务实现:某高校毕业生信息发布系统-首页(JSP版)
--4.7.1 任务实现:某高校毕业生信息发布系统-首页(JSP版)
-4.8 小结
--4.8.1 小结
-5.0 导学
--5.0.2 测试
-5.1 el语法
--5.1.2 测试
-5.2 el隐含对象
--5.2.2 测试
-5.3 任务实现:某高校毕业生信息发布系统-学生详细信息展示
--5.3.1 任务实现:某高校毕业生信息发布系统-学生详细信息展示
--5.3.2 测试
-5.4 小结
--5.4.1 小结
-6.0 导学
--6.0.2 测试
-6.1 核心标签库
--6.1.5 测试
-6.2 任务实现:某高校毕业生信息发布系统-首页(JSTL版)
--6.2.1 任务实现:某高校毕业生信息发布系统-首页(JSTL版)
--6.2.2 测试
-6.3 小结
--6.3.1 小结
-7.0 导学
--7.0_导学
-7.1 过滤器
--7.1.3 测试
-7.2 监听器
--7.2.1.1与ServletContext相关的监听器
--7.2.4 测试
-7.3 任务实现:某高校毕业生信息发布系统-单态登录
--7.3.1 任务实现:某高校毕业生信息发布系统-单态登录
--7.3.2 测试
-7.4 小结
--7.4.1小结
-8.0 导学
--8.0_导学
-8.1 JDBC API
--8.1.2 测试
-8.2 JDBC API访问MySQL基本步骤
--8.2.2 测试
-8.3 任务实现:某高校毕业生信息发布系统-注册与登录
--8.3.1 任务实现:某高校毕业生信息发布系统-注册与登录(JDBC版)
--8.3.2 测试
-8.4 小结
--8.4.1小结
-9.0导学
--9.0导学
-9.1 技术准备
--9.1.5 测试.
-9.2 系统设计
-9.3 系统实现
-9.4 小结
--9.4.1小结

