監(jiān)聽器

一 監(jiān)聽器作用
主要是用來監(jiān)聽特定對(duì)象的創(chuàng)建對(duì)象或銷毀,屬性的變化的!是一個(gè)實(shí)現(xiàn)特定接口的普通java類。
Servlet中哪些對(duì)象需要監(jiān)聽?
request/session/servletContext
分別對(duì)應(yīng)的request監(jiān)聽器,session相關(guān)監(jiān)聽器,servletContext監(jiān)聽器
二 監(jiān)聽器(listener)概述
監(jiān)聽器接口

  • 監(jiān)聽器對(duì)象創(chuàng)建/銷毀的監(jiān)聽器接口
    Interface ServletRequestListener 監(jiān)聽request對(duì)象的創(chuàng)建或銷毀
    Interface HttpSessionListener 監(jiān)聽session對(duì)象的創(chuàng)建或銷毀
    Interface ServletContextListener 監(jiān)聽servletContext對(duì)象的創(chuàng)建或銷毀
  • 監(jiān)聽對(duì)象屬性的變化
    Interface ServletRequestAttributeListener 監(jiān)聽request對(duì)象屬性變化: 添加、移除、修改
    Interface HttpSessionAttributeListener 監(jiān)聽session對(duì)象屬性變化: 添加、移除、修改
    Interface ServletContextAttributeListener 監(jiān)聽servletContext對(duì)象屬性變化
  • session相關(guān)監(jiān)聽器
    Interface HttpSessionBindingListener 監(jiān)聽對(duì)象綁定到session上的事件
    Interface HttpSessionActivationListener(了解) 監(jiān)聽session序列化及反序列化的事件
    三 程序?qū)崿F(xiàn)
    1 生命周期監(jiān)聽
    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.對(duì)象銷毀"+object);
    }

    public void requestInitialized(ServletRequestEvent servletRequestEvent) {
        Object object1 = servletRequestEvent.getServletRequest().getAttribute("name");
        System.out.println("1.對(duì)象創(chuàng)建"+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>

測試結(jié)果

2 屬性監(jiān)聽(監(jiān)聽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("創(chuàng)建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>

運(yùn)行結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 監(jiān)聽器(listener) 監(jiān)聽器簡介 :監(jiān)聽器就是一個(gè)實(shí)現(xiàn)特定接口的普通java程序,這個(gè)程序?qū)iT用于監(jiān)聽另一個(gè)...
    奮斗的老王閱讀 2,688評(píng)論 0 53
  • 一、概述 監(jiān)聽器就是一個(gè)實(shí)現(xiàn)特定接口的普通java程序,這個(gè)程序?qū)iT用于監(jiān)聽另一個(gè)java對(duì)象的方法調(diào)用或?qū)傩愿淖?..
    yjaal閱讀 2,115評(píng)論 0 5
  • 一、監(jiān)聽器的概覽 監(jiān)聽器是指專門用于對(duì)其他對(duì)象身上發(fā)生的事件或狀態(tài)的改變進(jìn)行監(jiān)聽和相應(yīng)處理的對(duì)象,當(dāng)被監(jiān)視的對(duì)象發(fā)...
    不知名的蛋撻閱讀 1,551評(píng)論 0 3
  • 僅作為自己學(xué)習(xí)記錄使用,文章來自: 1、http://blog.csdn.net/csh624366188/art...
    BakerZhang閱讀 1,145評(píng)論 1 5
  • 用來監(jiān)聽特定對(duì)象的創(chuàng)建或銷毀、屬性的變化的!是一個(gè)實(shí)現(xiàn)特定接口的普通java類! Servlet中哪些對(duì)象需要監(jiān)聽...
    _琳哥閱讀 676評(píng)論 0 0

友情鏈接更多精彩內(nèi)容