Java EE基础知识学习(七)

来源:互联网 发布:有数据分析软件吗 编辑:程序博客网 时间:2024/04/27 05:25

当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 * */@WebListenerpublic 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类的时候要注意识别每个方法是在什么时候被调用的。

0 0
原创粉丝点击