• Servlet Session


    // 文件路径 D:ApacheServerweb_javaHelloWorldsrccom	estTestServletSession.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);
        }
    }
  • 相关阅读:
    DataGrid 的鼠标点击
    Menu菜单
    密码问题
    Combobox代码
    EndpointContracts
    the Differences between abstract class & interface in C#接口和抽象类的区别
    How to get MetaData on client side in WCF?如何在客户端获取WCF service的元数据
    Endpoint
    Assembly Essence 程序集深入探讨:程序集结构及部署
    EndpointBinding
  • 原文地址:https://www.cnblogs.com/dreamhome/p/11486608.html
Copyright © 2020-2023  润新知