一.監(jiān)聽器作用:
主要是用來監(jiān)聽特定對象的創(chuàng)建或銷毀狰住、屬性的變化的肮蛹! 是一個實現(xiàn)特定接口的普通java類稿辙!
Servlet中哪些對象需要監(jiān)聽邻储?
request
/session
/servletContext
分別對應(yīng)的是request監(jiān)聽器冬耿、session相關(guān)監(jiān)聽器、servletContext監(jiān)聽器
二.監(jiān)聽器(listener)概述
監(jiān)聽器接口:
- 監(jiān)聽對象創(chuàng)建/銷毀的監(jiān)聽器接口
Interface ServletRequestListener
監(jiān)聽request對象的創(chuàng)建或銷毀
Interface HttpSessionListener
監(jiān)聽session對象的創(chuàng)建或銷毀
Interface ServletContextListener
監(jiān)聽servletContext對象的創(chuàng)建或銷毀 - 監(jiān)聽對象屬性的變化
Interface ServletRequestAttributeListener
監(jiān)聽request對象屬性變化: 添加缤骨、移除燎斩、修改
Interface HttpSessionAttributeListener
監(jiān)聽session對象屬性變化: 添加、移除师枣、修改
Interface ServletContextAttributeListener
監(jiān)聽servletContext對象屬性變化 - session相關(guān)監(jiān)聽器
Interface HttpSessionBindingListener
監(jiān)聽對象綁定到session上的事件
Interface HttpSessionActivationListener
(了解) 監(jiān)聽session序列化及反序列化的事件
三,程序?qū)崿F(xiàn)
1.生命周期監(jiān)聽器
聲明周期監(jiān)聽器: 監(jiān)聽對象的創(chuàng)建、銷毀的過程陨倡!
監(jiān)聽器開發(fā)步驟:
1.寫一個普通java類,實現(xiàn)相關(guān)接口帖旨;
2.配置(web.xml)
- 監(jiān)聽request對象的創(chuàng)建或者銷毀
index.jsp
<%--
Created by IntelliJ IDEA.
User: 馬歡歡
Date: 2017/5/30
Time: 10:52
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>Hello World!</h2>
<h1>歡迎訪問index頁面</h1>
<%
request.setAttribute("huan","mahuan");
%>
</body>
</html>
web.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>
<!--監(jiān)聽request對象創(chuàng)建,銷毀-->
<listener>
<listener-class>ed.huan.listener.RequestListener</listener-class>
</listener>
</web-app>
RequestListener.java
package ed.huan.listener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
/**
* Created by 馬歡歡 on 17-6-1.
*/
public class RequestListener implements ServletRequestListener {
//對象銷毀
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
Object obj = servletRequestEvent.getServletRequest().getAttribute("huan");
System.out.println("2.對象銷毀"+obj);
}
//對象創(chuàng)建
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
Object obj1 = servletRequestEvent.getServletRequest().getAttribute("huan");
System.out.println("1.對象創(chuàng)建"+ obj1);
}
}
2.屬性監(jiān)聽
- 監(jiān)聽session屬性的變化
index.jsp
<%--
Created by IntelliJ IDEA.
User: 馬歡歡
Date: 2017/5/30
Time: 10:52
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>Hello World!</h2>
<h1>歡迎訪問index頁面</h1>
<%
session.setAttribute("huan","mahuan");
session.removeAttribute("huan");
%>
</body>
</html>
web.xml
<listener>
<listener-class>ed.huan.listener.Session</listener-class>
</listener>
SessionAttributeListener.java
package ed.huan.listener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
/**
* Created by 馬歡歡 on 17-6-1.
*/
public class RequestListener implements ServletRequestListener {
//對象銷毀
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
Object obj = servletRequestEvent.getServletRequest().getAttribute("huan");
System.out.println("2.對象銷毀"+obj);
}
//對象創(chuàng)建
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
Object obj1 = servletRequestEvent.getServletRequest().getAttribute("huan");
System.out.println("1.對象創(chuàng)建"+ obj1);
}
}
上一篇:過濾器 - 學(xué)習(xí)筆記