Java学习日记4(Servlet监听器)

监听器

事件分为三个部分:

  • 事件源:事件发生的场所,比如tomcat
  • 事件:ServletContextEvent
  • 事件处理器:ServletContextListener,也就是监听器
contextDestroyed(ServletContextEvent sce) 
contextInitialized(ServletContextEvent sce) 

只要servlet容器实列化ServletContext对象,contextInitialized()方法自动调用
只要Servlet容器销毁ServletContext对象,contextDestroyed()自动调用

其实不止ServletContext对象有监听器,session什么的也都有,查询API便可以知道。

实现步骤:

  1. 编写事件处理器,实现处理器接口
  2. 注册给Servlet容器

配置xml:

<web-app>
<listener>
    <listener-class>com.oracle.WebinitListener</listener-class>
  </listener>
</web-app>

也可以用Annotation:

@WebListener

两个简单的Listener:
ServletContextListener:

package com.listener;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class ServletContextListenerDemo implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent arg0) 
    {
        //当容器销毁时,回调此方法
        System.out.println("销毁ServletContext.........");

    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) 
    {
        System.out.println("初始化ServletContext..............");
        //当容器初始化ServletContext   回调此方法
        // DBpool  db=new DBPool();
        ServletContext sc=arg0.getServletContext();

        //ArticleDao ad=new ArticleDaoImp();
        //sc.setAttribute("articleDao",ad);
        sc.setAttribute("pool","pool");

    }

}

ServletContextAttributeListener:

package com.listener;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class ServletContextAttrDemo implements ServletContextAttributeListener {

    @Override
    public void attributeAdded(ServletContextAttributeEvent arg0) 
    {
      System.out.println("在servletContext中加了一个属性:"+arg0.getName()+"--"+arg0.getValue());

    }

    @Override
    public void attributeRemoved(ServletContextAttributeEvent arg0) {
         System.out.println("在servletContext中删除了一个属性:"+arg0.getName()+"--"+arg0.getValue());
    }

    @Override
    public void attributeReplaced(ServletContextAttributeEvent arg0) 
    {
         System.out.println("在servletContext中替换一个属性:"+arg0.getName()+"--"+arg0.getValue());

    }

}

我们也可以在listener中加入代码,实现我们需要的功能。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值