会话技术Session快速入门和Session原理分析

会话技术Session快速入门

1.概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HTTPSession

2.快速入门:

  1.获取HTTPSession对象:

    HTTPSession session = request.getSession();

  2.使用HTTPSession对象:

    Object getAttribute(String name)

    void setAttribute(String name,Object value)

    void removeAttribute(String name)

Session1:

@WebServlet("/sessionD1")
public class SessionD1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //使用Session共享数据
        //获取session
        HttpSession session = request.getSession();
        //存储数据
        session.setAttribute("msg","hello Session");


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

Session2

@WebServlet("/sessionD2")
public class SessionD2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //使用Session获取数据
        //获取Session
        HttpSession session = request.getSession();
        //获取数据
        Object msg = session.getAttribute("msg");
        System.out.println(msg);


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

控制台打印结果:

 

 把浏览器进行关闭在进行获取获取不到了就

Session原理分析

  Session的实现是依赖于Cookie的

 

 

1、当客户端第一次请求会话对象时,服务器会创建一个 Session 对象,并为该 Session 对象分配一个唯一的 SessionID (用来标识这个 Session 对象);
2、服务器将 SessionID 以 Cookie(Cookie 名称为:“ JSESSIONID ”,值为 SessionID 的值,如 Set-Cookie:JESSIONID=10 )的形式发送给客户端浏览器;
3、客户端浏览器再次发送 HTTP 请求时,会将携带 SessionID 的 Cookie (如 cookie: JESSIONID=10 )随请求一起发送给服务器;
4、服务器从请求中读取 SessionID,然后根据 SessionID 找到对应的 Session 对象。
在 同一次会话中 ,多次请求获取的是 同一个Session对象

注意:

流程中的 Cookie 是容器自动生成的,它的 maxAge 属性取值为 -1,表示仅当前浏览器有效。
浏览器关闭时,对应的 Session 并没有失效,但此时与此 Session 对应的 Cookie 已失效,导致浏览器无法再通过 Cookie 获取服务器端的 Session 对象。
同一浏览器的不同窗口共享同一 Session 对象,但不同浏览器窗口之间不能共享 Session 对象。

posted @ 2022-08-11 17:33  魔光领域  阅读(50)  评论(0编辑  收藏  举报