session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。

常用方法:

Object getAttribute(String name)	//获取指定名字的属性
Enumeration getAttributeName()	//获取 session 中全部属性的名字,一个枚举
long getCreationTime()	//返回 session 的创建时间,单位:毫秒
String getld()	 //返回创建 session 时 JSP 引擎为它设置的唯一 ID 号
long getLastAccessedTime()	 //返回此 session 中客户端最近一次请求的时间,单位是毫秒。使用这个方法,可以判断某个用户在站点上一共停留了多长时间
int getMaxInactiveInterval()	 //返回两次请求间隔多长时间 session 被销毁(单位:秒)
void setMaxlnactivelnterval(int interval)	//设置两次请求间隔多长时间 session 被销毁(单位:秒)
void invalidate()	//销毁 session 对象
boolean isNew()	 //判断请求是否会产生新的 session 对象
void removeAttribute(String name)	//删除指定名字的属性
void setAttribute(String name,String value) 	//设定指定名字的属性值

创建及获取客户会话属性:

JSP 页面可以将任何对象作为属性来保存。使用 setAttribute() 方法设置指定名称的属性,并将其存储在 session 对象中,使用 getAttribute() 方法获取与指定名字 name 相联系的属性。

语法格式如下:

session.setAttribute(String name,String value);    //参数name为属性名称,value为属性值
session.getAttribute(String name);    //参数 name 为属性名称

例如:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>创建及获取客户会话属性</title>
</head>
<body>
	session的创建时间:<%=new Date(session.getCreationTime()).toString()  %><br>
	session的ID: <%=session.getId() %><br><hr>
	当前时间:<%=new Date().toString( ) %> <br>
    该 session 是新创建的吗?:<%=session.isNew()?"是":"否" %> <br> <hr>
    当前时间:<%=new Date().toString( ) %> <br>
</body>
</html>

从会话中移除指定的对象:

JSP 页面可以将任何已经保存的对象部分或者全部移除。
使用removeAttribute() 方法,将指定名称的对象移除,也就是说,从这个会话删除与指定名称绑定的对象。使用 invalidate() 方法,可以将会话中的全部内容删除。
语法格式如下:

session.removeAttribute(String name);    //参数name为session对象的属性名,代表要移除的对象名
session.invalidate();    //把保存的所有对象全部删除

例如:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	session的创建时间:<%=new Date(session.getCreationTime()).toString()  %><br>
	session的ID: <%=session.getId() %><br><hr>
	当前时间:<%=new Date().toString( ) %> <br>
        该 session 是新创建的吗?:<%=session.isNew()?"是":"否" %> <br> <hr>
        当前时间:<%=new Date().toString( ) %> <br><br><hr>
    <%
    session.removeAttribute("info");
    if(session.getAttribute("info")==null)
    {
        out.println("session 对象 info 已经不存在");
    }
    else
    {
        out.println(session.getAttribute("info"));
    }
	%>
</body>
</html>

设置会话时限:

当某一客户与 Web 应用程序之间处于非活动状态时,并不以显式的方式通知服务器,所以,在 Servlet 程序或 JSP 文件中,做超时设置是确保客户会话终止的唯一方法。

Servlet 程序容器设置一个超时时长,当客户非活动的时间超出时长的大小时,JSP 容器将使 session 对象无效,并撤销所有属性的绑定,这样,就清除了客户申请的资源,从而实现了会话生命周期的管理。

session 用于管理会话生命周期的方法有 getLastAccessedTime()、getMaxInactiveInterval() 和 setMaxInactiveInterval(int interval)。

session.getMaxInactiveInterval() //对象默认的有效时间
 session.setMaxInactiveInterval(60*5)   //设置session的有效时间为5分钟
 session.getMaxInactiveInterval()  //修改有效时间

购物车例题:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="shop.jsp" method="post">
<p>各种球类大甩卖</p>
<p>
	<input type="checkbox" name="ball" value="篮球">篮球
	<input type="checkbox" name="ball" value="足球">足球
	<input type="checkbox" name="ball" value="乒乓球">乒乓球
</p>
<p>
	<input type="submit"value="确认">
	<a href="meat.jsp">买点别的</a>
	<a href="shop.jsp">购物车</a>
	</p>
	<%
	    request.setCharacterEncoding("utf-8");
		String b[]= request.getParameterValues("meat");
    	if(b!=null)
			session.setAttribute("b",b);
	%>
</form>
</body>
</html>