监听器

一 监听器作用
主要是用来监听特定对象的创建对象或销毁,属性的变化的!是一个实现特定接口的普通java类。
Servlet中哪些对象需要监听?
request/session/servletContext
分别对应的request监听器,session相关监听器,servletContext监听器
二 监听器(listener)概述
监听器接口

  • 监听器对象创建/销毁的监听器接口
    Interface ServletRequestListener 监听request对象的创建或销毁
    Interface HttpSessionListener 监听session对象的创建或销毁
    Interface ServletContextListener 监听servletContext对象的创建或销毁
  • 监听对象属性的变化
    Interface ServletRequestAttributeListener 监听request对象属性变化: 添加、移除、修改
    Interface HttpSessionAttributeListener 监听session对象属性变化: 添加、移除、修改
    Interface ServletContextAttributeListener 监听servletContext对象属性变化
  • session相关监听器
    Interface HttpSessionBindingListener 监听对象绑定到session上的事件
    Interface HttpSessionActivationListener(了解) 监听session序列化及反序列化的事件
    三 程序实现
    1 生命周期监听
    index.jsp
<%--
  Created by IntelliJ IDEA.
  User: pc
  Date: 2017/9/6
  Time: 17:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>路径问题</title>
</head>
<body>
<h2>欢迎访问index页面</h2>
<%
    request.setAttribute("name","Yang");
%>
</body>
</html>

RequestListener.java

package entity;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;

/**
 * Created by pc on 2017/9/12.
 */
public class RequestListener implements ServletRequestListener {
    public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
       Object object = servletRequestEvent.getServletRequest().getAttribute("name");
        System.out.println("2.对象销毁"+object);
    }

    public void requestInitialized(ServletRequestEvent servletRequestEvent) {
        Object object1 = servletRequestEvent.getServletRequest().getAttribute("name");
        System.out.println("1.对象创建"+object1);
    }
}

.xml配置

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
  <display-name>Archetype Created Web Application</display-name>
<listener>
  <listener-class>entity.RequestListener</listener-class>
</listener>
</web-app>

测试结果

2 属性监听(监听session变化)
index.jsp

<%--
  Created by IntelliJ IDEA.
  User: pc
  Date: 2017/9/6
  Time: 17:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>路径问题</title>
</head>
<body>
<h2>欢迎访问index页面</h2>
<%
    session.setAttribute("name","YY");
    session.removeAttribute("name");
%>
</body>
</html>

SessionAttributeListener.java

package entity;
import javax.servlet.http.*;

/**
 * Created by pc on 2017/9/12.
 */
public class SessionAttributeListener implements HttpSessionAttributeListener {

    public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("创建session");
    }

    public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("移除session");
    }

    public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("修改session");
    }
}

.xml配置

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <listener>
    <listener-class>entity.SessionAttributeListener</listener-class>
  </listener>
</web-app>

运行结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 监听器(listener) 监听器简介 :监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个...
    奋斗的老王阅读 2,570评论 0 53
  • 一、概述 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变...
    yjaal阅读 2,049评论 0 5
  • 一、监听器的概览 监听器是指专门用于对其他对象身上发生的事件或状态的改变进行监听和相应处理的对象,当被监视的对象发...
    不知名的蛋挞阅读 1,409评论 0 3
  • 仅作为自己学习记录使用,文章来自: 1、http://blog.csdn.net/csh624366188/art...
    BakerZhang阅读 1,054评论 1 5
  • 用来监听特定对象的创建或销毁、属性的变化的!是一个实现特定接口的普通java类! Servlet中哪些对象需要监听...
    _琳哥阅读 640评论 0 0