当前位置 博文首页 > 浮若星光的博客:如何获取Session中的时间

    浮若星光的博客:如何获取Session中的时间

    作者:[db:作者] 时间:2021-07-12 15:38

    如何获取Session中的时间

    Session机制详解

    虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答。

    术语session

    在我的经验里, session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。有时候我们可以看到这样的话“在一个浏览器会话期间,…”,

    然而当session一词与网络协议相关联时,它又往往隐含了“面向连接”和/或“保持状态”这样两个含义,

    由于HTTP协议是无状态的,而出于种种考虑也不希望使之成为有状态的,因此,后面两种方案就成为现实的选择。具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。 
    
    
    
    理解session机制 
    
    
    
    session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 
    

    1、session在何时被创建

    一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用HttpServletRequest.getSession(true)这样的语句时才被创建 由于session会消耗内存资源,因此,如果不打算使用session,应该在所有的JSP中关闭它。 
    
    
    
    2、session何时被删除 
    
    
    
    综合前面的讨论,session在下列情况下被删除a.程序调用HttpSession.invalidate();或b.距离上一次收到客户端发送的session id时间间隔超过了session的超时设置;或c.服务器进程被停止(非持久session) 
    

    首先设计一个Session
    在这里插入图片描述

    读取session中的用户信息

    设置session机制
    在这里插入图片描述

    计算登录时长

    获取Session中的时间//获取登录那一刻的时间

    string loginTime =
    Session[“ServerTime”].ToString();

    转为datetime

    DateTime dateTimeLogin = Convert.ToDateTime(loginTime);

    DateTime dateTimeNow = DateTime.Now;//获取当前时间

    求时间差

    TimeSpan ts = dateTimeNow - dateTimeLogin;

    声明返回变量

    在这里插入图片描述

    最后的结果如下图

    在这里插入图片描述

    cs