JSP session对象的用法(附带实例)
session 是 JSP 技术提供的一个内置对象,session 一词本来的含义是有始有终的一系列动作或消息。比如打电话时,从拿起电话拨号到挂断电话,这一系列过程可以称为一个 session。
在网络应用中,session 内置对象存储特定用户会话的属性及配置信息。这样,当用户在 Web 页面之间跳转时,存储在 session 内置对象中的信息将不会丢失,并在整个用户会话过程中一直存在。
当用户请求来自 Web 页面时,如果该用户还没有会话,则 Web 服务器将自动创建一个 session 内置对象。当会话过期或被放弃后,服务器将终止该会话,并释放该 session 内置对象所占用的内存空间。
session 内置对象的常用方法如下表所示:
【实例】利用 session 内置对象,统计访问该网站的人数。
本例在 sessionCount.jsp 页面中,利用 session 内置对象中的 isNew() 方法,判断当前是否为一个新创建的 session 内置对象,如果是则访问数加 1,否则访问数不变。
seesionCount.jsp 页面的代码如下。

图 1 第1次运行页面的效果
在浏览器中刷新页面时,因为没有创建新的会话,所以访问人数并不会有变化。当关闭浏览器(即关闭客户端与服务器当前会话)后,再次打开该页面,访问人数会加 1,如下图所示:

图 2 访问人数增加后的页面效果
在网络应用中,session 内置对象存储特定用户会话的属性及配置信息。这样,当用户在 Web 页面之间跳转时,存储在 session 内置对象中的信息将不会丢失,并在整个用户会话过程中一直存在。
当用户请求来自 Web 页面时,如果该用户还没有会话,则 Web 服务器将自动创建一个 session 内置对象。当会话过期或被放弃后,服务器将终止该会话,并释放该 session 内置对象所占用的内存空间。
session 内置对象的常用方法如下表所示:
方法 | 说明 |
---|---|
setAttribute(String name, Object obj) | 在会话中设定 name 所指定的属性值为 obj |
getAttribute(String name) | 返回会话中 name 所指定的属性值 |
getAttributeNames() | 返回会话中所有变量的名称 |
removeAttribute(String name) | 删除会话中 name 所指定的属性 |
invalidate() | 销毁与用户关联的会话 |
getCreationTime() | 返回会话建立的时间,返回值为从格林尼治时间 1970 年 1 月 1 日开始算到会话建立时的毫秒数 |
getLastAccessedTime() | 返回客户端对服务器提出请求至处理 session 中数据的最后时间,若为新建的会话,则返回-1 |
getMaxInactiveInterval() | 返回客户端未对会话提出请求而会话开始停滞到自动消失之间所间隔的时间,返回值单位为秒 |
isNew() | 返回布尔值表示是否为新建的会话。新建是指程序调用会话内置对象在服务器建立会话,而尚未将此会话的信息记录到客户端的 Cookie 中 |
setMaxInactiveInterval(int interval) | 设置客户端未对会话提出请求而会话开始停滞到自动消失之间所间隔的时间为 interval,以秒为单位 |
session 内置对象的应用
下面通过对 session 内置对象的应用的讲解,来帮助大家进一步理解该内置对象的使用。【实例】利用 session 内置对象,统计访问该网站的人数。
本例在 sessionCount.jsp 页面中,利用 session 内置对象中的 isNew() 方法,判断当前是否为一个新创建的 session 内置对象,如果是则访问数加 1,否则访问数不变。
seesionCount.jsp 页面的代码如下。
<%@page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>session内置对象计数器--sessionCount.jsp</title> <style type="text/css"> h1 { color: red; text-align: center; font-size: 7px; } p { color: green; text-align: center; font-size: 5px; } </style> </head> <body> <%! int Num = 0; %> <% if (session.isNew()) { Num += 1; session.setAttribute("Num", Num); // 将Num变量值存入session } %> <h1>session计数器</h1> <br> <p> 您是第 <%=session.getAttribute("Num")%> 个访问本网站的用户 </p> </body> </html>第 1 次运行 sessionCount.jsp 页面时,效果如下图所示:

图 1 第1次运行页面的效果
在浏览器中刷新页面时,因为没有创建新的会话,所以访问人数并不会有变化。当关闭浏览器(即关闭客户端与服务器当前会话)后,再次打开该页面,访问人数会加 1,如下图所示:

图 2 访问人数增加后的页面效果