Servlet-监听器Listener

Servlet-监听器Listener

sf2gis@163.com

2015年9月17日

 

1 目标:监听Web应用的各种事件,如生命周期,属性变化等。

2 原理:特殊的Servlet,在应用中某些事件发生时发出消息。

3 流程:配置Listener,响应事件。

4 方法:web.xml配置Listener

4.1 配置:在<Listerner>标签中,设置listener-class指定实现类。

4.2 响应事件:实现不同的接口,以响应不同的事件。包括应用、请求、session。

4.3 示例:监听请求的生命周期。

//web.xml

<?xmlversion="1.0" encoding="ISO-8859-1"?>

<!--

  Licensed to the Apache Software Foundation(ASF) under one or more

  contributor license agreements.  See the NOTICE file distributed with

  this work for additional informationregarding copyright ownership.

  The ASF licenses this file to You under theApache License, Version 2.0

  (the "License"); you may not usethis file except in compliance with

  the License. You may obtain a copy of the License at

 

     http://www.apache.org/licenses/LICENSE-2.0

 

  Unless required by applicable law or agreedto in writing, software

  distributed under the License is distributedon an "AS IS" BASIS,

  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,either express or implied.

  See the License for the specific languagegoverning permissions and

  limitations under the License.

-->

<web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

                     http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

  version="3.1"

  metadata-complete="true">

  <listener>

      <listener-class>lee.ResponseListener</listener-class>

  </listener>

</web-app>

//ResponseListener.java

package lee;

 

importjavax.servlet.ServletRequestEvent;

importjavax.servlet.ServletRequestListener;

importjavax.servlet.annotation.WebListener;

 

/**

 * Application Lifecycle Listenerimplementation class ResponseListener

 *

 */

@WebListener

public class ResponseListenerimplements ServletRequestListener {

 

    /**

     * Default constructor.

     */

    public ResponseListener() {

        // TODO Auto-generated constructor stub

    }

 

      /**

     * @seeServletRequestListener#requestDestroyed(ServletRequestEvent)

     */

    public voidrequestDestroyed(ServletRequestEvent arg0) {

         // TODO Auto-generated method stub

      System.out.println("Finishreq="+arg0);

    }

 

      /**

     * @seeServletRequestListener#requestInitialized(ServletRequestEvent)

     */

    public voidrequestInitialized(ServletRequestEvent arg0) {

         // TODO Auto-generated method stub

      System.out.println("Startreq="+arg0);

    }

     

}

//catalina.out

Startreq=javax.servlet.ServletRequestEvent[source=org.apache.catalina.core.ApplicationContextFacade@23848630]

Finishreq=javax.servlet.ServletRequestEvent[source=org.apache.catalina.core.ApplicationContextFacade@23848630]

5  方法:注记配置Listener

目标:简化配置Listener。

原理:容器识别注记。

流程:在web.xml中启用注记。生成处理类。设置注记。

方法:增加@WebListener

示例:监听请求

//处理类:ResponseListener.java

package lee;

 

import java.util.Date;

 

importjavax.servlet.ServletRequestEvent;

importjavax.servlet.ServletRequestListener;

importjavax.servlet.annotation.WebListener;

importjavax.servlet.http.HttpSessionEvent;

importjavax.servlet.http.HttpSessionListener;

 

/**

 * Application Lifecycle Listenerimplementation class ResponseListener

 *

 */

@WebListener

public class ResponseListenerimplements ServletRequestListener {

 

    /**

     * Default constructor.

     */

    public ResponseListener() {

        // TODO Auto-generated constructor stub

    }

 

      /**

     * @seeServletRequestListener#requestDestroyed(ServletRequestEvent)

     */

    public voidrequestDestroyed(ServletRequestEvent arg0) {

         // TODO Auto-generated method stub

      System.out.println("Finishreq="+arg0);

    }

 

      /**

     * @seeServletRequestListener#requestInitialized(ServletRequestEvent)

     */

    public voidrequestInitialized(ServletRequestEvent arg0) {

         // TODO Auto-generated method stub

      System.out.println("Startreq="+arg0);

    }

}

 

//结果:a.jsp请求

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗里曼的小伙伴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值