Servlet中的监听器
文章目錄
- 什么是監(jiān)聽(tīng)器
- 如何寫監(jiān)聽(tīng)器
- 配置監(jiān)聽(tīng)器
- 統(tǒng)計(jì)在線人數(shù)的案例
什么是監(jiān)聽(tīng)器
Servlet 規(guī)范當(dāng)中定義的一種特殊的類,作用是監(jiān)聽(tīng)容器當(dāng)中產(chǎn)生的一些事件并進(jìn)行相應(yīng)的處理。
容器產(chǎn)生的事件指的是兩大類事件:
第一大類
生命周期相關(guān)的事件,指的是當(dāng)容器創(chuàng)建或者銷毀 request,session,ServletContext 對(duì)象時(shí)產(chǎn)生的事件。
第二大類
綁訂事件,指的是當(dāng)調(diào)用 request,session,ServletContext 對(duì)象的setAttribute,removeAttribute 時(shí)產(chǎn)生的事件。
如何寫監(jiān)聽(tīng)器
step1
寫一個(gè) Java 類,實(shí)現(xiàn)特定的監(jiān)聽(tīng)器接口(依據(jù)要監(jiān)聽(tīng)的事件類型,去實(shí)現(xiàn)相應(yīng)的監(jiān)聽(tīng)器接口)。
step2
在接口聲明的方法中,實(shí)現(xiàn)監(jiān)聽(tīng)的邏輯。
step3
配置(web.xml)。
配置監(jiān)聽(tīng)器
有先后順序的要求,在 <context-param> 之后, <filter> 之前;<filter> 在 <listener> 之后,<servlet> 之前。
統(tǒng)計(jì)在線人數(shù)的案例
監(jiān)聽(tīng)器示例代碼:
package priv.lwx.servlet.web;import javax.servlet.ServletContext; import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener;/*** Session監(jiān)聽(tīng)器** @author liaowenxiong* @date 2022/2/27 16:29*/ @WebListener public class CountListener implements HttpSessionListener {private int count = 0;/*** Session對(duì)象創(chuàng)建后,就會(huì)執(zhí)行該方法** @param arg0*/public void sessionCreated(HttpSessionEvent arg0) {System.out.println("sessionCreated...");count++;HttpSession session = arg0.getSession();ServletContext sctx = session.getServletContext();sctx.setAttribute("count", count);}/*** Session對(duì)象銷毀前會(huì)執(zhí)行該方法** @param arg0*/public void sessionDestroyed(HttpSessionEvent arg0) {System.out.println("Session對(duì)象被銷毀...");count--;HttpSession session = arg0.getSession();ServletContext sctx = session.getServletContext();sctx.setAttribute("count", count);} }index.jsp 代碼:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head><title>當(dāng)前系統(tǒng)在線人數(shù)</title> </head> <body> 系統(tǒng)在線人數(shù): <%= application.getAttribute("count") %> <br/> <a href="logout.jsp">退出</a> </body> </html>logout.jsp 的示例代碼:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <%session.invalidate(); %> </body> </html>部署好之后,啟動(dòng)服務(wù)器,訪問(wèn):http://localhost:8080/sl/index.jsp,sl 項(xiàng)目的虛擬目錄。
總結(jié)
以上是生活随笔為你收集整理的Servlet中的监听器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安卓机型伪装app(安卓机型伪装)
- 下一篇: grafana监控linux(监控lin