- HttpSession对象
- 1、Session 的作用
-
Session 的作用就是为了标识一次会话,或者说确认一个用户;
-
并且在一次会话(一个用户的多次请求)期间共享数据。
-
可以通过 req.getSession()方法,来获取当前会话的 session 对象。
- 2、JSESSIONID
-
SessionId 是为了标识一次会话的唯一标志。
-
每当一次请求到达服务器,如果开启了会话(访问了 session),服务器第一步会查看是否从客户端回传一个名为 JSESSIONID 的 cookie;
-
如果JSESSIONID不存在,则服务器会新建session对象,并重新标识;
-
如果JSESSIONID存在,服务器会将客户端回传过来的ID去服务器中查找与之对应的session对象
-
如果没找到,则服务器会新建session对象,并重新标识;
-
如果找到,则获取 session对象,响应给客户端;
- 3、Session域对象
-
通过 setAttribute(name,value);方法向域对象中添加数据,
-
通过 getAttribute(name) 从域对象中获取数据,
-
通过 removeAttribute(name)从域对象中移除数据。
- 4、Session的失效
-
1、达到最大不活动时间
-
Tomcat中默认最大不活动时间为30分钟。
-
可以自行修改默认不活动时间,但不建议。在web.xml文件中
-
<session-config> <session-timeout>30</session-timeout> </session-config> 2、自己设定过期时间 通过 session.setMaxInactiveInterval(int);来设定 session 的最大不活动时间,单位为秒。 通过 getMaxInactiveInterval();方法来查看当前 Session 对象的最大不活动时间。 3、立即失效 手动销毁session对象 session.invalidate(); 4、关闭浏览器 session的底层依赖于cookie,默认关闭浏览器失效。 5、关闭服务器 非正常关闭服务器时才会失效。 如果是正常关闭服务器,session会被钝化到本地磁盘,下次访问时会从本地磁盘中活化出来。
- @author Lisa Li
*/
@SuppressWarnings(“serial”)
public class Session04 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Session04...");
// 创建或获取session对象
HttpSession session = req.getSession();
System.out.println(session.getId());
// 当前 Session 对象的最大不活动时间
System.out.println(session.getMaxInactiveInterval());
// 设置Session 对象的最大不活动时间
session.setMaxInactiveInterval(150);
// 手动销毁session
// session.invalidate();
}
}