在Servlet2.5中提供了三种对象的事件监听:
1,ServletContext监听web上下文信息。
2,HttpSession监听Servelt的会话信息。
3,ServletRequest监听Servlet的请求信息。
监听器的普通配置:web.xml
<listener>
<listener-class>com.wcent.listener.ServletContextListener</listener-class>
</listener>
<listener>
<listener-class>com.wcent.listener.SessionTraceListener</listener-class>
</listener>
Session监听器的使用
package com.wcent.listener;
import java.util.Set;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionTraceListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
// 会话session
HttpSession session = arg0.getSession();
// 上下文对象
ServletContext sc = session.getServletContext();
// 获取注销人员账号
String username = (String) session.getAttribute("username");
// 获取在线人员
Set<String> online = (Set<String>) sc.getAttribute("online");
// 删除注销人员
online.remove(username);
}
}
监视Session的创建和销毁,实现在线用户的粗略统计。
监视ServletContextListener
package com.wcent.listener;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
public class ServletContextListener implements javax.servlet.ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// 获取上下文对象
ServletContext sc = arg0.getServletContext();
sc.removeAttribute("users");
sc.removeAttribute("online");
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// 获取上下文对象
ServletContext sc = arg0.getServletContext();
// 创建所有有效账号、密码集合
Map<String, String> users = new HashMap<>(4);
users.put("tom", "111");
users.put("rose", "111");
users.put("jerry", "111");
users.put("kate", "111");
// 创建在线人员列表
Set<String> online = new HashSet<>();
sc.setAttribute("users", users);
sc.setAttribute("online", online);
}
}
启动Tomcat时,进行一系列的文件操作。
内容尚未完整,待续……