这里主要研究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
原文地址:https://www.cnblogs.com/qlqwjy/p/9833669.html
时间: 2024-11-19 15:41:56