Session机制
Session:在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。
采用的是在服务器端保持HTTP有状态的信息方案
服务器端首先应该判断SessionID,如果有SessionID,就证明session创建如果没有SessionID,证明还没有创建Session
会话的生命周期
1.什么时候创建HttpSession对象
浏览器访问任何JSP和Servlet页面,服务会立即创建Session对象吗?
答:不一定
若当前JSP(servlet)是客户端访问的当前web应用的第一个资源,且JSP的page指定的session 属性值为false。则服务器就不会为JSP创建一个session对象了
若当前JSP页面不是客户端访问的当前web应用的第一个资源页面,且其他页面已经创建一个HTTPSession对象,则当前JSP页面返回一个会话的HttpSession对象,而不会创建一个新的httpSession对象
对于servlet而言:若servlet是客户端访问的第一个web资源,则只用调用request.getSession方法或request.getSession(true)才会创建Session对象
2.什么时候销毁
1.直接调用HTTPSession的invalidate方法:该方法使httpSession失效
2.服务器卸载web项目
3.超过httpSession的过期时间
设置session.setMaxInactiveInterval(5);单位为秒
在web.xml文件配置session过期时间
并不是关闭浏览器就销毁HttpSeesion
当时间 > 1800 时,则销毁HttpSeesion
HttpSession:
HttpSession是java web对用户进行会话跟踪的一个接口
HttpSession由Servlet容器的提供者实现
HttpSession通过HttpServletRequst的getSession()或getSession(boolean)方法获取
getSession(): 如果会话没有被创建则创建并返回,若创建则返回已有的session对象
getSession(boolean): 如果参数是false,如果会话存在则返回,否则返回null
例:
Session中的方法
• String getId() 返回包含分配给此会话的唯一标识符的字符串
• void invalidate() 使会话无效,然后取消对任何绑定到它的对象的绑定
• void removeAttribute(String name) 从此会话中移除不指定名称绑定在一起的对象
• void setAttribute(String name, Object value) 使用指定名称将对象绑定到此会话
• Object getAttribute(String name) 返回不此会话中的指定名称绑定在一起的对象
• void setMaxInactiveInterval(int interval) 指定在servlet容器使此会话失效之前客户端请求之间的时间间隔。负数时间指示会话永进不会超时(以秒为单位,默认为1800秒)
• int getMaxInactiveInterval() 返回servlet容器在客户端访问之间将使此会话保持打开状态的最大时间间隔
• ServletContext getServletContext() 返回此会话的ServletContext
• boolean isNew() 如果客户端还不知道该会话,或者客户端选择丌加入该会话,则返回true。例如,如果服务器仅使用基于Cookie的会话,而客户端已经禁止了Cookie的使用,则每个请求上的会话都将是新会话
在xml配置中配置session过期时间(以分钟为单位)