【Servlet】Java Serlvet Listener 监听器
生活随笔
收集整理的這篇文章主要介紹了
【Servlet】Java Serlvet Listener 监听器
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Listener監(jiān)聽(tīng)器
Servlet規(guī)范中定義的一種特殊的組件,用來(lái)監(jiān)聽(tīng)Servlet容器產(chǎn)生的事件并進(jìn)行相應(yīng)的處理 容器產(chǎn)生的事件分類- 生命周期相關(guān)的事件- 設(shè)置和刪除Attribute數(shù)據(jù)相關(guān)的事件ServletContextListener監(jiān)聽(tīng)器
在ServletContext創(chuàng)建時(shí)和關(guān)閉時(shí)都會(huì)通知ServletContextListener 方法:servletContextInitialized(ServletContextEvent sce)當(dāng)ServletContext創(chuàng)建的時(shí)候,將會(huì)調(diào)用這個(gè)方法servletContextDestroyed(ServletContextEvent sce)當(dāng)ServletContext銷(xiāo)毀的時(shí)候(例如關(guān)閉應(yīng)用服務(wù)器或者重新加載應(yīng)用),將會(huì)調(diào)用這個(gè)方法。ServletContextAttributeListener監(jiān)聽(tīng)器
當(dāng)往Servlet Context添加、刪除或者替換一個(gè)屬性的時(shí)候,將會(huì)通知ServletContextAttributesListener 方法:void attributeAdded(ServletContextAttributeEvent scab)往ServletContext中加入一個(gè)屬性的時(shí)候觸發(fā);void attributeRemoved(ServletContextAttributeEvent scab)從ServletContext中刪除一個(gè)屬性的時(shí)候觸發(fā);void attributeReplaced(ServletContextAttributeEvent scab)改變ServletContext中屬性的時(shí)候觸發(fā)。HttpSessionListener監(jiān)聽(tīng)器
當(dāng)一個(gè)HttpSession剛被創(chuàng)建或者失效(invalidate)的時(shí)候,將會(huì)通知HttpSessionListener 方法:void sessionCreated(HttpSessionEvent hse)當(dāng)一個(gè)HttpSession對(duì)象被創(chuàng)建時(shí),將會(huì)調(diào)用這個(gè)方法;void sessionDestroyed(HttpSessionEvent hse)當(dāng)一個(gè)HttpSession超時(shí)或者調(diào)用HttpSession的invalidate()方法讓它銷(xiāo)毀時(shí),將會(huì)調(diào)用這個(gè)方法HttpSessionAttributesListener監(jiān)聽(tīng)器
HttpSession中添加、刪除或者替換一個(gè)屬性的時(shí)候,將會(huì)通知HttpSessionAttributesListener 方法:void attributeAdded(HttpSessionBindingEvent e)當(dāng)往會(huì)話中加入一個(gè)屬性的時(shí)候,將會(huì)調(diào)用這個(gè)方法;void attributeRemoved(HttpSessionBindingEvent e)當(dāng)從會(huì)話中刪除一個(gè)屬性的時(shí)候,將會(huì)調(diào)用這個(gè)方法;void attributeReplaced(HttpSessionBindingEvent e)當(dāng)改變會(huì)話中的屬性的時(shí)候,將會(huì)調(diào)用這個(gè)方法上面只是列舉了一些常用的Listener,關(guān)于Listener中的方法,有一個(gè)規(guī)律,就是如果是Attribute的Listener那么就有三個(gè)抽象方法,如果是非Attribute的Listener就只有兩個(gè)抽象方法。其實(shí)官方提供了8大Listener,其中有2個(gè)ServletContextEvents,4個(gè)HttpSessionEvents,2個(gè)ServeltRequestEvents
ServletContextEvents:
ServletContextListener Servlet上下文更改監(jiān)聽(tīng)
ServletContextAttributeListener Servlet上下文屬性更改監(jiān)聽(tīng)
HttpSessionEvents:
HttpSessionListener 會(huì)話更改監(jiān)聽(tīng)
HttpSessionAttributeListener 會(huì)話屬性更改監(jiān)聽(tīng)
HttpSessionActivationListener 會(huì)話鈍化或激活監(jiān)聽(tīng)
HttpSessionBindingListener 會(huì)話綁定或取消監(jiān)聽(tīng)
ServetRequestEvents:
ServletRequestAttributeListener 請(qǐng)求屬性更改監(jiān)聽(tīng)
ServletRequestListener 請(qǐng)求更改監(jiān)聽(tīng)
在web.xml中配置listener組件
<listener><listener-class>cn.xdl.listener.ListenerName</listener-class></listener>看一個(gè)計(jì)算當(dāng)前網(wǎng)站的在線人數(shù)案例:
jsp文件: <%@page import="cn.xdl.listener.MySessionListener"%> <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> </body> </html> demo.jsp
加載一個(gè)JSP文件,會(huì)自動(dòng)有application對(duì)象,所以會(huì)自動(dòng)ServletContext文件
web.xml文件: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"><display-name>day09_listener</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><listener><listener-class>cn.xdl.listener.MySessionListener</listener-class></listener> </web-app> web.xml 配置監(jiān)聽(tīng)器和配置過(guò)濾器不一樣。listener文件: package cn.xdl.listener;import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener;/*** 獲取當(dāng)前網(wǎng)站 ,同時(shí)在線人數(shù) **/ public class MySessionListener implements HttpSessionListener {public static int count = 0;/*** 當(dāng)session創(chuàng)建時(shí), 自動(dòng)執(zhí)行*/@Overridepublic void sessionCreated(HttpSessionEvent event) {System.out.println("網(wǎng)站進(jìn)了一個(gè)新用戶");count+=1;}/*** 當(dāng)session銷(xiāo)毀時(shí) , 自動(dòng)執(zhí)行*/@Overridepublic void sessionDestroyed(HttpSessionEvent event) {System.out.println("網(wǎng)站離開(kāi)了一個(gè)用戶");count-=1;}} MySessionListener.java
?
轉(zhuǎn)載于:https://www.cnblogs.com/HDK2016/p/7091111.html
總結(jié)
以上是生活随笔為你收集整理的【Servlet】Java Serlvet Listener 监听器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 发布Web端
- 下一篇: jquery-easyui环境的搭建及测