jsp内置对象之-session对象

session对象

  • session对象是一个JSP内置对象。
  • session对象在第一个JSP页面被装载时自动创建,完成回话期管理。
  • session生命周期从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束被称为一个会话。
  • 当一个客户访问一个服务器时,可能在服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要session对象。
  • session对象时HttpSession类的实例。

session的工作原理如下:

  • 客户首次访问服务器的一个页面时,服务器就会为该用户分配一个session对象,同时为这个session指定唯一的ID,并且将该ID发送到客户端并写入到cookie中,使得客户端与服务器的session建立一一对应的关系。
  • 当客户端继续访问服务器端的其它资源时,服务器不再为该客户分配新的session对象,直到客户端浏览器关闭、超时或调用session的invalidate()方法使其失效,客户端与服务器的会话结束。
  • 当客户重新打开浏览器访问网站时,服务器会重新为客户分配一个session对象,并重新分配sessionID。

session对象常用方法:

  • long getCreationTime() : 返回SESSION创建时间。
  • public String getId() : 返回SESSION创建时JSP引擎为它设的唯一ID号
  • public Object setAttribute(String name,Object value):使用指定名称将对象绑定到此会话。
  • public Object getAttribute(String name):返回与此会话中的指定名称绑定一起的对象,如果没有对象绑定在该名称下,则返回null
  • String [] getValueNames():返回一个包含此SESSION中所有可用属性的数组
  • int getMaxInactiveInterval():返回两次请求间隔多久时间此SESSION被取消(单位秒)

 session.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<% @page import = "java.util.*"  %>
<% @page import = "java.text.SimpleDateFormat" %>
<% @ page language = "java"  contentType = "text/html; charset=UTF-8"
pageEncoding = "UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>session内置对象</title>
</head>
<body>
<h1>session 内置对象</h1>
<hr>
<%
SimpleDateFormat time = new SimpleDateFormat ( "YYY:MM:dd -- HH:mm:ss" ) ;
Date d = new Date ( session. getCreationTime ( ) ) ;
session. setAttribute ( "username""wangzheng" ) ;
%>
会话创建时间: <% =time. format (d )  %><br>
会话的ID编号: <% = session. getId ( )  %><br>
会话中获取用户名: <% = session. getAttribute ( "username" )  %><br>
<a href="session2.jsp" target="_blank">跳转到session2.jsp,测试会话</a>

</body>
</html>

session2.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@page import="java.util.*" %>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>session内置对象 </title>
</head>
<body>
<h1>session 内置对象 </h1>
<hr>
<%
SimpleDateFormat time=new SimpleDateFormat("YYY:MM:dd -- HH:mm:ss");
Date d=new Date(session.getCreationTime());

%>
session创建时间: <%=time.format(d) %><br>
session的ID编号: <%=session.getId() %><br>
session中获取用户名: <%=session.getAttribute("username") %><br>

</body>
</html>

结果分析:session.jsp和session2.jsp中session ID一样,session2.jsp获取到了session.jsp中的用户名。说明两个页面在同一会话中。

session

//设置当前session最大生成期限单位为秒。

<%
session.setMaxInactiveInterval(10);
%>

//getValueNames()获取session中保存的属性。

session中保存的属性有:<%

String [] names=session.getValueNames();
for(String s:names)
{
out.println(s+”&nbsp;&nbsp;”);
}

%>

Session生命周期

  • 创建:

  • 当客户端第一次访问某个Servlet时候,服务器会为当前会话创建一个Session Id,每次客户端向服务器发送请求时,都会将此Session Id携带过去,服务端会对此Session Id进行校验。
  • 活动:

  • 某次会话中通过超链接打开的新页面属于同一次会话。
  • 只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话。
  • 除非本次会话的所有页面都关闭后再重新访问某个Jsp或者Servlet将会创建新的会话。
    • 销毁:(3种方法)

    • 1.调用session.invalidate()方法
    • 2.Session过期(超时)
    • 3.服务器重新启动。

转载请注明来自bcoder.cn网站所有,本文地址:http://www.bcoder.cn/?p=878
除非注明,Bcoder文章均为原创,转载请注明出处和链接!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值