// 文件路径 D:\ApacheServer\web_java\HelloWorld\src\com\test\TestServletSession.java
package com.test;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
public class TestServletSession {
public void testfun(HttpServletRequest request) {
// 获取当前请求的 session 会话,需要在向客户端发送任何文档内容之前调用 request.getSession()。
// getSession() 等同于 getSession(true) 若存在会话,则返回该会话,否则新建一个会话。getSession(false) 则是如存在会话,则返回该会话,否则返回NULL
HttpSession session = request.getSession();
//下面总结了 HttpSession 对象中可用的几个重要的方法:
// 指定键名绑定一个对象到该 session 会话,绑定的对象可以是任意类型的对象包括字符串
Object anyObject = new Object();
session.setAttribute("testKey", anyObject);
// 获取 session 中指定键名的数据值,如果没有指定该键名对则返回 null,之前赋的键值无论何类型,getAttribute 方法返回的都是 Object 类型,使用时需要强制类型
Object val = session.getAttribute("testKey");
// 从该 session 会话移除指键名称及对应对象。
session.removeAttribute("testKey");
// 以枚举方式获取 session 中所有设置绑定的键名
Enumeration sessionEnumeration = session.getAttributeNames();
// 获取 session id
String sessionId = session.getId();
// 返回该 session 创建的时间戳,单位毫秒,创建完不一定已经回传给客户端。
long sessionBegin = session.getCreationTime();
// 判断该对话是否是第一次建立,即客户端还未保存 session id,或者客户选择不参入该 session 会话,则该方法返回 true
boolean isNew = session.isNew();
// 返回该 session 客户端最后一次请求到服务器的时间戳,单位毫秒
long sessionEnd = session.getLastAccessedTime();
// 设定 session 在用户请求间隔多少秒内不失效
session.setMaxInactiveInterval(360);
// 返回 Servlet 容器 session 在用户请求间隔多少秒内不失效
int interval = session.getMaxInactiveInterval();
// 使该 session 会话无效,并解除绑定到它上面的任何对象。
//session.invalidate();
// 输出相关信息
// session 创建时间
Date createTime = new Date(sessionBegin);
// 该网页的最后一次访问时间
Date lastAccessTime = new Date(sessionEnd);
//设置日期输出的格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 设置键值
String testStr = "";
int testInt = 0;
if(session.getAttribute("key_str") == null) {
testStr = "this is test str";
session.setAttribute("key_str", testStr);
}else {
testStr = (String)session.getAttribute("key_str");
}
if(session.getAttribute("key_int") == null) {
testInt = 0;
session.setAttribute("key_int", testInt);
}else {
testInt = (int)session.getAttribute("key_int") + 1;
session.setAttribute("key_int", testInt);
}
// 控制台输出
System.out.println("用户最后一次请求时间为 : " + dateFormat.format(lastAccessTime));
System.out.println("session key_str 键对应值为 : " + testStr);
System.out.println("session testInt 键对应值为 : " + testInt);
}
}