zoukankan      html  css  js  c++  java
  • Servlet的Listener介绍

      当Web应用在Web容器中运行时,Web应用内部会不断地发生各种事件:如Web应用被启动、Web应用被停止、用户session开始、用户session结束等。通常这些Web操作对开发者是透明的。但Servlet API也提供了相应的接口提供调用。

      当我们要使用Listener时,只需要两个步骤:

      ① 定义Listener实现类(实现对应的接口)

      ② 通过Annotation或在web.xml文件中配置Listener

    1、实现Listener类

    不同的Web事件对应的监听器也不同,常用的Web事件监听器接口有如下几个:

    ->ServletContextListener:用于监听Web应用的启动和关闭

    ->ServletContextAttributeListener:用于监听ServletContext范围(application)内属性的改变

    ->ServletRequestListener:用于监听用户请求

    ->ServletRequestAttributeListener:用于监听ServletRequest范围(request)内属性的改变

    ->HttpSessionListener:用于监听用户session的开始和结束

    ->HttpSessionAttributeListener:用于监听HttpSession范围(session)内属性的改变

    一般来说,需要监听哪些Web时间就实现对应接口的方法即可。

    2、配置Listener

    实现了Listener类之后,还需要配置Listener。你可以选择Annotaion方式或web.xml方式。

    Annotation方式:只需使用@WebListener修饰Listener实现类即可(要求Servlet3.0以上)

    web.xml方式的配置:

    <listener>
         <!-- 指定Listener的实现类 -->
         <listener-class>lee.GetConnListener</listener-class>
    </listener>
    

    下面举一个监听Web应用启动的例子:

    首先,实现Listener类(实现ServletContextListener接口):

    package com.chanshuyi.listener;
    
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    
    public class StartUpListener implements ServletContextListener {
    
    	/**
    	 * 关闭操作
    	 */
    	public void contextDestroyed(ServletContextEvent sc) {
    		System.out.println("------------------ Tomcat关闭! ------------------");
    	}
    
    	/**
    	 * 启动初始化
    	 */
    	public void contextInitialized(ServletContextEvent sc) {
    		//获取application。无法获取request/response/session
    		//ServletContext application = sc.getServletContext();
    		System.out.println("------------------ Tomcat启动! ------------------");
    	}
    }
    

    接着,在web.xml中配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    	xmlns="http://java.sun.com/xml/ns/javaee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <listener>
         <!-- 指定Listener的实现类 -->
      	<listener-class>com.chanshuyi.listener.StartUpListener</listener-class>
      </listener>
    </web-app>
    

    MARK:使用@WebListener注解的时候出错,不知道是什么原因。(MARK CHENYR)

    如果要监听其他Web应用事件,那么只是实现的接口不同而已。其他都是一样的。

  • 相关阅读:
    [考试反思]0421省选模拟76:学傻
    [考试反思]0420省选模拟75:安在
    [考试反思]0418省选模拟74:杂枝
    [考试反思]0417省选模拟73:纠结
    [考试反思]0416省选模拟72:停滞
    [考试反思]0415省选模拟71:限制
    [考试反思]0414省选模拟70:阻塞
    [考试反思]0413省选模拟69:遗弃
    [考试反思]0411省选模拟68:毒瘤
    [考试反思]0410省选模拟67:迷惑
  • 原文地址:https://www.cnblogs.com/chanshuyi/p/4067576.html
Copyright © 2011-2022 走看看