Java EE基础知识学习(七)

当Web应用在Web容器中运行时,Web应用内部会不断发生各种事件:如Web应用被启动、Web应用被停止、用户Session开始、用户Session结束、用户请求到达等,通常来说这些Web事件对于开发者是透明的。Servlet API提供了大量的监听器来监听Web应用的内部事件,从而允许当Web内部事件发生时回调事件监听器内的方法。这些监听器就是我们这一节要介绍的Listener。


Listener

实现Listener的步骤:

我们在使用Listener的过程中,只需要两个步骤:

  1. 定义Listener实现类。
  2. 通过注解或者在web.xml文件中配置Listener。

常用的Web事件监听器:

  • ServletContextListener:用于监听Web应用的启动和关闭。
  • ServletContextAttributeListener:用于监听ServletContext范围(application)内属性的改变。
  • ServletRequestListener:用于监听用户请求。
  • ServletRequestAttributeListener:用于监听ServletRequest范围(request)内属性的改变。
  • HttpSessionListener:用于监听用户Session的开始和结束。
  • HttpSessionAttributeListener:用于监听HttpSession范围(session)内属性的改变。

Listener配置:

配置Listener只要向Web应用注册Listener实现类就可以了,无需配置参数之类的东西,所以配置过程非常简单,并且它的配置和Servlet一样,有两种配置的方式:

  1. 使用@WebListener修饰Listener实现类即可。
  2. 在web.xml文档中使用
<listener>
    <listener-class>com.example.TestListener</listener-class>
</listener>

Listener使用举例:

在这里我们使用ServletContextListener来实例使用Listener,在使用的时候我们只需要在我们的类中实现ServletContextListener接口,然后将我们要做的工作写在相应的方法中就可以了,代码如下:

package com.example;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

/**
 * Application Lifecycle Listener implementation class TestListener
 *
 */
@WebListener
public class TestListener implements ServletContextListener {

    /**
     * Default constructor. 
     */
    public TestListener() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @see ServletContextListener#contextDestroyed(ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent arg0)  { 
         // TODO Auto-generated method stub
        System.out.println("Web应用启动");
    }

    /**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent arg0)  { 
         // TODO Auto-generated method stub
        System.out.println("Web应用关闭");
    }

}

在上面的代码中,我们在contextInitialized方法中输出了“Web应用启动”,在contextDestroyed方法中输出了“Web应用关闭”,这样当Web应用启动的时候,我们可以在控制台中看到“Web应用启动”的字段,而在Web应用关闭的时候看到“Web应用关闭”的字段,这样说明我们的Listener已经成功监听到了Web应用的启动和关闭,而我们也可以在这里让监听器做更多的工作,例如可以在Web应用启动的时候连接数据库并且获取到数据库的连接,然后在Web应用关闭的时候断开数据库的连接。

其他的Web Listener类就不在一一举例,它们的使用都和上述例子中的使用类似,只是不同的Listener实现类中方法也不同,我们在使用这些Listener类的时候要注意识别每个方法是在什么时候被调用的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值