【tomcat】sessionId学习(未完待续)

  这里主要研究tomcat中session的管理方式以及sessionId的原理,下文将研究sessionid存到redis中以及基于redis以及redis实现session共享。

  平时也就是了解session是基于cookie实现的,cookie是保存在客户端,而session是保存在服务端,对其原来也没有深入理解。下面将深入理解。

1.什么是session

  对Tomcat而言,Session是一块在服务器开辟的内存空间,其存储结构为ConcurrentHashMap;

2.Session的目的

Http协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;

Session的主要目的就是为了弥补Http的无状态特性。简单的说,就是服务器可以利用session存储客户端在同一个会话期间的一些操作记录;

3.简单的研究session的创建时机

   我们知道request.getSession(boolean create)   获取session,并根据参数动态的获取session,如果传的参数是true的话不存在session就创建一个并返回一个session;如果传false,不存在session也不会创建,如下代码:

throws ServletException, IOException {
        HttpSession session = request.getSession(true);// 传true会创建一个并返回,false不会创建
        PrintWriter writer = response.getWriter();
        if (session == null) {
            writer.write("null");
        } else {
            writer.write(session.toString());
        }
    }

查看grequest.etSession(boolean create)的源码并分析:

参考:http://www.cnblogs.com/chenpi/p/5434537.html

猜你喜欢

转载自www.cnblogs.com/qlqwjy/p/9833669.html