• servlet session


    简介

     在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。

    参考:
    https://www.runoob.com/servlet/servlet-session-tracking.html

    测试代码

    package com.zjw;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    
    @WebServlet(name = "SessionServlet", value = "/ss")
    public class SessionServlet extends HttpServlet {
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request,response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            HttpSession session = request.getSession();
            session.setMaxInactiveInterval(60*60);//默认1800s 30分钟
            System.out.println("---------------------");
            System.out.println("id:"+session.getId());
            System.out.println("isNew:"+session.isNew());//是否为新的session
            System.out.println("creationTime:"+session.getCreationTime());//session创建时间
            System.out.println("maxInactiveInterval:"+session.getMaxInactiveInterval());//过期时间
            System.out.println("lastAccessedTime:"+session.getLastAccessedTime());//最后访问时间
            String user = (String) session.getAttribute("user");
            System.out.println(user);
            session.setAttribute("user","aaaaa");
        }
    }
    
    

    通过浏览器访问,控制台输出结果

    //第一次访问
    ---------------------
    id:7B851AF0382BDA8EE0E54DA5BDD4C66B
    isNew:true
    creationTime:1603892983582
    maxInactiveInterval:1800
    lastAccessedTime:1603892983582
    null
    
    //第二次访问
    ---------------------
    id:7B851AF0382BDA8EE0E54DA5BDD4C66B
    isNew:false
    creationTime:1603892983582
    maxInactiveInterval:1800
    lastAccessedTime:1603892983587
    aaaaa
    

    浏览器将sessionid以Cookie的方式存储,键为JSESSIONID.

    当第一次请求服务器时,服务器返回JSESSIONID,浏览器存储在Cookie中。在下一次请求服务器时(session未失效),将JSESSIONID发送给服务器。

    第一次请求

    第二次请求

    扩展 彻底理解cookie,session,token

    彻底理解cookie,session,token

    --------------- 我每一次回头,都感觉自己不够努力,所以我不再回头。 ---------------
  • 相关阅读:
    Delphi2010 DataSnap 学习(一)
    DLL封装ReportMachine/FastReport报表
    Delphi中的字符串压缩与解压缩
    Delphi 2010 DataSnap封装COM对象
    PHP&MySQL的一个乱码
    Indy接收邮件中文无编码乱码问题
    Asp.net Mvc自定义客户端验证(CheckBox列表的验证)
    浅谈在asp.net mvc3中使用IValidatableObject接口实现Model数据验证
    使用ModelBinder绑定IPrincipal (User)简化ASP.NET MVC单元测试
    asp.net mvc使用TagBuilder的应用程序集
  • 原文地址:https://www.cnblogs.com/zjw-blog/p/13893842.html
Copyright © 2020-2023  润新知