【Servlet】Java Serlvet Listener 监听器
生活随笔
收集整理的這篇文章主要介紹了
【Servlet】Java Serlvet Listener 监听器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Listener監聽器
Servlet規范中定義的一種特殊的組件,用來監聽Servlet容器產生的事件并進行相應的處理 容器產生的事件分類- 生命周期相關的事件- 設置和刪除Attribute數據相關的事件ServletContextListener監聽器
在ServletContext創建時和關閉時都會通知ServletContextListener 方法:servletContextInitialized(ServletContextEvent sce)當ServletContext創建的時候,將會調用這個方法servletContextDestroyed(ServletContextEvent sce)當ServletContext銷毀的時候(例如關閉應用服務器或者重新加載應用),將會調用這個方法。ServletContextAttributeListener監聽器
當往Servlet Context添加、刪除或者替換一個屬性的時候,將會通知ServletContextAttributesListener 方法:void attributeAdded(ServletContextAttributeEvent scab)往ServletContext中加入一個屬性的時候觸發;void attributeRemoved(ServletContextAttributeEvent scab)從ServletContext中刪除一個屬性的時候觸發;void attributeReplaced(ServletContextAttributeEvent scab)改變ServletContext中屬性的時候觸發。HttpSessionListener監聽器
當一個HttpSession剛被創建或者失效(invalidate)的時候,將會通知HttpSessionListener 方法:void sessionCreated(HttpSessionEvent hse)當一個HttpSession對象被創建時,將會調用這個方法;void sessionDestroyed(HttpSessionEvent hse)當一個HttpSession超時或者調用HttpSession的invalidate()方法讓它銷毀時,將會調用這個方法HttpSessionAttributesListener監聽器
HttpSession中添加、刪除或者替換一個屬性的時候,將會通知HttpSessionAttributesListener 方法:void attributeAdded(HttpSessionBindingEvent e)當往會話中加入一個屬性的時候,將會調用這個方法;void attributeRemoved(HttpSessionBindingEvent e)當從會話中刪除一個屬性的時候,將會調用這個方法;void attributeReplaced(HttpSessionBindingEvent e)當改變會話中的屬性的時候,將會調用這個方法上面只是列舉了一些常用的Listener,關于Listener中的方法,有一個規律,就是如果是Attribute的Listener那么就有三個抽象方法,如果是非Attribute的Listener就只有兩個抽象方法。其實官方提供了8大Listener,其中有2個ServletContextEvents,4個HttpSessionEvents,2個ServeltRequestEvents
ServletContextEvents:
ServletContextListener Servlet上下文更改監聽
ServletContextAttributeListener Servlet上下文屬性更改監聽
HttpSessionEvents:
HttpSessionListener 會話更改監聽
HttpSessionAttributeListener 會話屬性更改監聽
HttpSessionActivationListener 會話鈍化或激活監聽
HttpSessionBindingListener 會話綁定或取消監聽
ServetRequestEvents:
ServletRequestAttributeListener 請求屬性更改監聽
ServletRequestListener 請求更改監聽
在web.xml中配置listener組件
<listener><listener-class>cn.xdl.listener.ListenerName</listener-class></listener>看一個計算當前網站的在線人數案例:
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
加載一個JSP文件,會自動有application對象,所以會自動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 配置監聽器和配置過濾器不一樣。listener文件: package cn.xdl.listener;import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener;/*** 獲取當前網站 ,同時在線人數 **/ public class MySessionListener implements HttpSessionListener {public static int count = 0;/*** 當session創建時, 自動執行*/@Overridepublic void sessionCreated(HttpSessionEvent event) {System.out.println("網站進了一個新用戶");count+=1;}/*** 當session銷毀時 , 自動執行*/@Overridepublic void sessionDestroyed(HttpSessionEvent event) {System.out.println("網站離開了一個用戶");count-=1;}} MySessionListener.java
?
轉載于:https://www.cnblogs.com/HDK2016/p/7091111.html
總結
以上是生活随笔為你收集整理的【Servlet】Java Serlvet Listener 监听器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发布Web端
- 下一篇: Java Vector