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

--------------- 我每一次回头,都感觉自己不够努力,所以我不再回头。 ---------------
原文地址:https://www.cnblogs.com/zjw-blog/p/13893842.html