付费节点推荐
免费节点
节点使用教程
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
<%@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
<%@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.setMaxInactiveInterval(10);
%>
//getValueNames()获取session中保存的属性。
session中保存的属性有:<%
String [] names=session.getValueNames();
for(String s:names)
{
out.println(s+" ");
}%>
Session生命周期
-
创建:
- 当客户端第一次访问某个Servlet时候,服务器会为当前会话创建一个Session Id,每次客户端向服务器发送请求时,都会将此Session Id携带过去,服务端会对此Session Id进行校验。
- 某次会话中通过超链接打开的新页面属于同一次会话。
- 只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话。
- 除非本次会话的所有页面都关闭后再重新访问某个Jsp或者Servlet将会创建新的会话。
- 1.调用session.invalidate()方法
- 2.Session过期(超时)
- 3.服务器重新启动。
活动:
-
销毁:(3种方法)
未经允许不得转载:Bcoder资源网 » jsp内置对象之-session对象
评论前必须登录!
登陆 注册