一、基本概念
1.HTTPSession是JavaWeb中用来会话跟踪的类。HTTPSession提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式。
2.HTTPSession的实例session保存在服务器端,是servlet三大域对象之一,其他两个域对象是request、application(ServletContext)
3.HTTPSession底层依赖cookie,或是URL重写。
4.当某个客户端首次请求服务器时,服务器会为这个客户端创建一个session对象,session对象就好像是客户在服务器端的账户,它们被服务器保存到一个Map中,即session缓存中。
5.session生命周期开始于客户端首次请求服务器,结束于用户关闭浏览器。
二、session域常用方法
1.request.getSession(),获取session对象。
2. session.setAttribute(String name, Object value) ,该方法使用指定的名称绑定一个对象到该 session 会话。
3.session.getAttribute(String name),该方法返回在该 session 会话中具有指定名称的对象,如果没有指定名称的对象,则返回 null。
4.session.removeAttribute(String name),该方法将从该 session 会话移除指定名称的对象。
5.public String getId(),该方法返回一个包含分配给该 session 会话的唯一标识符的字符串。
6.public void setMaxInactiveInterval(int interval),设置session被允许的最大不活动时间(秒),默认为30分钟,如果某个session在30分钟内没有被使用,那么服务器会在session池中移除这个session。
<!--web.xml中配置session的最大不活动时间,单位:分钟--> <session-config> <session-timeout>30</session-timeout> </session-config>
7.public int getMaxInactiveInterval(),该方法返回 Servlet 容器在客户端访问时保持 session 会话打开的最大时间间隔,以秒为单位。
8.public void invalidate(),该方法指示该 session 会话无效,并解除绑定到它上面的任何对象。
9.public boolean isNew(),判断session是否为新。当客户端第一次请求时,服务器为客户端创建一个session,但这时服务器还没有响应客户端,也就是还没把sessionId放到cookie里,这时session.isNew()返回true。