0%

【JavaWeb】Session

Session学习


1 Session介绍

  • Session,翻译为会话,是用来维护一个客户端和服务器之间关联的一种技术
  • 每个客户端都有自己的一个Session会话
  • 在Session会话中,常用于保存用户登录后的信息
  • Session的信息存储在服务端
1
2
3
// Session获取
HttpServletRequest req;
HttpSession session = req.getSession();

2 Session常用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 判断是否是新创建的Session
boolean isNew();

// 获取sessionId
String getId();

// 在Session域设置参数
void setAttribute(String key, Object value);

// 从Session域中获取参数
Object getAttribute(String key);

// 设置Session超时时间(单位为秒)(负数永不超时)
void setMaxInactiveInterval(int second);

// 获取Session超时时间
int getMaxInactiveInterval();

// Session失效(销毁)
void invalidate();

3 Session超时

  • Session的超时,是指客户端两次请求的时间间隔是否超出时间
  • Session的默认超时为30分钟,这是由tomcat中/conf/web.xml文件中所配置
  • 若需要修改,可以在自己项目中的web.xml做同样设置
    1
    2
    3
    <session-config>
    <session-timeout>30</session-timeout>
    </session-config>

4 Session技术原理

  • (1)客户端发送请求给服务器,服务器创建Session,并将创建好的Session放入到内存中
  • (2)服务器通过Cookie的形式,将SessionId返回给客户端保存
  • (3) 客户端下一次请求,携带上SessionId的Cookie,服务器获取到SessionId,从内存中取出对应的Session
  • (4)客户端关闭浏览器,Cookie被清除,再想服务器发送请求,服务器获取不到SessionId,会重新创建Session保存在内存中