Listener的使用

在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时,进行一系列的文件操作。

内容尚未完整,待续……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值