* 在JavaWeb中使用HttpSession(以下简称session)对象来表示一个会话。
* Session的创建(代表会话周期的开始):第一次调用request.getSession()方法时,会创建一个session对象。
* Session的销毁(代表会话周期的结束):在某个请求周期内调用了Session.invalidate()方法,此请求周期结束后,session被销毁;或者是session超时后自动销毁。
* 对于JSP,如果指定了
session="false"%>,则在JSP中无法直接访问内置的session变量,同时也不会主动创建session,因为此时JSP未自
动执行request.getSession()操作获取session。
* 在session对象刚创建的第一个请求周期内,调用session.isNew()方法将得到true。
1.有效期设置
* 可以在web.xml文件中配置session默认的超时时间(分钟):
10
也可以调用session.
setMaxInactiveInterval()方法设置session超时时间(分钟)
2.监控
* 通过SessionListenr可以监听session的创建和销毁,步骤:
1.写一个类MySessionListener,实现javax.servlet.http.HttpSessionListener接口及其sessionCreated()、sessionDestroyed()方法
2.在web.xml中配置SessionListener:
MySessionListener类全名
* 当session
被创建和销毁时,容器会分别调用SessionListener的sessionCreated()方法和sessionDestroyed()方法,这
两个方法中传入了一个参数对象HttpSessionEvent,可以通过此对象的getSession()方法获取session对象。
应用示例:在线人数统计
1 importjava.util.HashSet;2 3 importjavax.servlet.ServletContext;4 5 importjavax.servlet.http.HttpSession;6 7 importjavax.servlet.http.HttpSessionEvent;8 9 importjavax.servlet.http.HttpSessionListener;10 11 publicclassMySessionListenerimplementsHttpSessionListener {12 13 publicvoidsessionCreated(HttpSessionEvent event) {14 15 HttpSession session=event.getSession();16 17 ServletContext application=session.getServletContext();18 19 //在application范围由一个HashSet集保存所有的session20 21 HashSet sessions=(HashSet) application.getAttribute("sessions");22 23 if(sessions==null) {24 25 sessions=newHashSet();26 27 application.setAttribute("sessions", sessions);28 29 }30 31 //新创建的session均添加到HashSet集中32 33 sessions.add(session);34 35 //可以在别处从application范围中取出sessions集合36 37 //然后使用sessions.size()获取当前活动的session数,即为“在线人数”38 39 }40 41 publicvoidsessionDestroyed(HttpSessionEvent event) {42 43 HttpSession session=event.getSession();44 45 ServletContext application=session.getServletContext();46 47 HashSet sessions=(HashSet) application.getAttribute("sessions");48 49 //销毁的session均从HashSet集中移除50 51 sessions.remove(session);52 53 }54 55 }56