码迷,mamicode.com
首页 > Web开发 > 详细

jsp内置对象之-session对象

时间:2015-07-12 09:45:42      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:jsp

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.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文章均为原创,转载请注明出处和链接!

版权声明:本文为博主原创文章,未经博主允许不得转载。

jsp内置对象之-session对象

标签:jsp

原文地址:http://blog.csdn.net/bf0719/article/details/46845337

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!