zoukankan      html  css  js  c++  java
  • 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

    --------------- 我每一次回头,都感觉自己不够努力,所以我不再回头。 ---------------
  • 相关阅读:
    String、StringBuffer、StringBuilder
    动态规划引入—矩阵乘法
    flask中间件
    有状态服务,无状态服务
    python 工厂模式
    python 单例模式
    python 工厂模式
    python timedelta() 和relativedelta()的区别
    mongo 查看(集合)表结构
    logstash 实现数据源分流
  • 原文地址:https://www.cnblogs.com/zjw-blog/p/13893842.html
Copyright © 2011-2022 走看看