Servlet Session

// 文件路径 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);
    }
}

 

posted @ 2019-09-08 15:37  风吹屁股凉冰冰  阅读(173)  评论(0编辑  收藏  举报