JSP内置对象——session对象

举个购物流程的例子:

这整个购物过程,它是属于一次回话。那么这个session是保存在服务器内存当中,并且它保存着不同用户对应的session,一个用户对应一个session。看下面这幅图:

从图中可以看出,我们的session是保存在服务器当中的,保存着3个session,这三个session对象跟用户客户端是以一一对应的。
接下来再看一下session对象的一些相关说明:

Session对象呢,也是我们JSP的一个内置对象,它在用户第一次访问JSP页面的时候,就会自动创建,完成一次客户端与服务器之间的会话管理。那么这个Session的生命周期呢,从用户打开浏览器开始和服务器的一个会话,到关闭浏览器,那么整个这个期间都会称为叫做一个会话,那么当用户访问服务器的时候,可能会在多个页面切换,那么服务器就需要有一种办法去保存用户的状态,这个时候就可以使用Session对象,那么也就是说,Session对象是保存用户状态的一种机制。然后看一下Session对象有哪些常用的方法:

下面通过一个具体的实例来说明下,这些方法的如何使用:

运行结果:

ok,没有问题,这些参数都获取得到了。接下来我在session_page1.jsp中做一个超链接,跳到session_page2.jsp页面。代码如下:
sesson_page1.jsp:

sesson_page2.jsp:

运行结果:


也没问题,从session_page1.jsp页面和session_page2.jsp页面的Session的ID可以看出,这两个页面是属于同一个Session。也就是说,这个Session它从客户端打开浏览器就建立了和服务器的一个会话,直到用户把本次会话相关的所有的浏览器都关闭了,才代表它本次会话结束了。当然了,一个Session也有它自己的生存周期,比方说用户停留在一个页面长时间没有任何的操作,它就会提示这个页面已经过期了,同样也就意味着这个会话结束了。
再来看下另一个方法:getValueNames():
先在session_page1中多设置几个属性:


getValueNames()方法是返回一个所有Session属性名称的数组,所以这里通过遍历的形式进行了打印,运行结果如下:


ok,也没有问题。同样,我们可以设置这个Session的生存期限,我们可以使用setMaxInactiveInterval()方法去设置,(单位是秒),比如我们设置10秒,那么这个Session过10秒就过期了,当这时候再打开一个页面呢,实际上就创建了一个新的Session。
比如说我们在session_page1.jsp当中加上一句代码,如下:

运行结果:


可以看到,当session_page1.jsp页面打开后,停留10秒钟后再点击,跳转到的session_page2.jsp页面后,Session的ID已经不一样了,也就是说之前的Session已经过期了,已经被创建了一个新的Session。因为是创建爱的新的Session,所以从上个页面Session保存的用户名和属性,也已经也获取不到了。
Session的生命周期经过以下几个阶段如下:



接下来,举一些实例来讲下这个Session生命周期的这三个阶段。
现在我们有“session_page1.jsp”和“session_page2.jsp”两个界面如下:
session_page1.jsp:

session_page2.jsp:

运行:

现在找到我们在浏览器输入“http://localhost:8080/manager/html”进入Tomcat后台管理,没有Tomcat账号密码的,需要先到tomcat安装目录“conf”文件夹下的tomcat-users.xml文件里添加一个账号和密码,例如以下所示:

进入后找到我们部署的项目:

这上面可以看到,我们活动的会话,点击这个“3”数字,

发现,这个Session Id跟我们之前session_page1.jsp页面获取到的ID一模一样,那现在我先来测试第一种情况“在某次会话中通过超链接打开的新页面属于同一次会话”。操作如下:


发现这个session id 是完全相同的,符合这种情况。
还有一种情况,现在我测试“当前会话界面没有完全关闭,重新打开新的浏览器窗口访问同一项目资源时,属于同一次会话”,操作如下:
我现在把刚刚打开的session_page2.jsp页面关了,重新打开一个浏览器,还是单独输入访问session_page2界面。输入“http://localhost:8080/session_page2.jsp”后发现,显示的SessionID仍然不变。
第三种情况是“本次会话的所有页面都关闭的情况下,再重新访问某个JSP或者Servlet时会创建新的会话。”
注意:原有会话仍存在,但只是这个旧的SessionId仍存在于服务器端,但再也没有客户端会携带它然后交予服务器端去校验了。
JSP内置对象——session对象的更多相关文章
- JSP内置九个对象Request请求对象
jsp内置对象是什么呢? 例如Java语言使用一个对象之前需要实例化(也就是所说的new一个对象),创建对象这个过程有点麻烦,所以在jsp中提供了一些内置对象,用来实现很多jsp应用.在使用内置对象时 ...
- JSP内置对象——session
sessionsession表示客户端与服务器的一次会话Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所进过的这段时间,也就是用户浏览这个网站所花费的时间从上述定义中可以看 ...
- jsp内置对象浅谈
jsp内置对象浅谈 | 浏览:1184 | 更新:2013-12-11 16:01 JSP内置对象:我们在使用JSP进行页面编程时可以直接使用而不需自己创建的一些Web容器已为用户创建好的JSP内置对 ...
- JSP内置对象有哪些呢?
内置对象 request request 对象是 javax.servlet.httpServletRequest类型的对象. 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的 ...
- JSP内置对象-request
JSP内置对象即无需声明就可以直接使用的对象实例,在实际的开发过程中,比较常用的JSP对象有request,response,session,out和application等,笔者在本文章中将简单介绍 ...
- JavaWeb学习----JSP内置对象详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Jsp内置对象及EL表达式的使用
一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...
- Java遇见HTML——JSP篇之JSP内置对象(上)
一.JSP内置对象简介 1.1.内置对象简介 JSP内置对象是WEB容器中创建的一组对象,可以直接使用不需要new,如截图中的out 对象. JSP有九大内置对象: 五大常用对象: out.reque ...
- JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础
JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...
- jsp内置对象和el表达式
九个内置对象 *out jsp的输出流,用来向客户端响应 *page 当前jsp页面, 它的引用数据类型是Object,即真身中有如下代码 Object page=this; *config 它对应真 ...
随机推荐
- vue教程2-03 vue计算属性的使用 computed
vue教程2-03 vue计算属性的使用 computed computed:{ b:function(){ //默认调用get return 值 } } ---------------------- ...
- 解释一下核主成分分析(Kernel Principal Component Analysis, KPCA)的公式推导过程(转载)
KPCA,中文名称”核主成分分析“,是对PCA算法的非线性扩展,言外之意,PCA是线性的,其对于非线性数据往往显得无能为力,例如,不同人之间的人脸图像,肯定存在非线性关系,自己做的基于ORL数据集的实 ...
- centos6 Linux安装redis 2.6.14
1.获取安装文件 wget http://download.redis.io/redis-stable.tar.gz 2.解压文件 tar xzvf redis-stable.tar.gz 3.进入目 ...
- 详解C#特性和反射(三)
类型信息(Type Information)用来表示类型声明的信息,通过抽象基类System.Type的实例存储这些信息,当使用反射时,CLR获取指定类型的Type对象,通过这个对象即可访问该类型的任 ...
- CentOS 7下搭配简单的C语言开发环境
在CentOS 7下安装gcc,gcc是编译和运行C语言的工具, 安装命令: yum install gcc 中途如果有询问则输入y 安装成功后,通过以下命令 gcc --version 来查看安装的 ...
- CRM项目hellokitty部分交互界面
登录界面 实现密码的不显示,验证码的跟换 员工管理界面 完成所有的功能 学校统计界面 完成所有的功能 班级管理 差一个手风琴组件 其他功能也完成了
- Re:从零开始的Spring Session(三)
上一篇文章中,我们使用Redis集成了Spring Session.大多数的配置都是Spring Boot帮我们自动配置的,这一节我们介绍一点Spring Session较为高级的特性. 集成Spri ...
- AWK工具的用法
基本格式 awk '{commands}' filename 或者 stdin | awk '{commands}' 以下,均简写为awk '{commands}'的形式 commands的用法 co ...
- 无责任Windows Azure SDK .NET开发入门篇(一):开发前准备工作
Windows Azure开发前准备工作 什么是 Azure SDK for .NET?微软官方告诉我们:Azure SDK for .NET 是一套应用程序,其中包括 Visual Studio 工 ...
- 选择ORACLE数据库字符集
如何选择数据库的字符集是一个有争议的话题,字符集本身涉及的范围很广,它与应用程序.客户的本地环境.操作系统.服务器等关系很密切,因此要做出合适的 选择,需要明白这些因素之间的关系.另外对字符集的基本概 ...