Servlet中的监听器
生活随笔
收集整理的這篇文章主要介紹了
Servlet中的监听器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 什么是監聽器
- 如何寫監聽器
- 配置監聽器
- 統計在線人數的案例
什么是監聽器
Servlet 規范當中定義的一種特殊的類,作用是監聽容器當中產生的一些事件并進行相應的處理。
容器產生的事件指的是兩大類事件:
第一大類
生命周期相關的事件,指的是當容器創建或者銷毀 request,session,ServletContext 對象時產生的事件。
第二大類
綁訂事件,指的是當調用 request,session,ServletContext 對象的setAttribute,removeAttribute 時產生的事件。
如何寫監聽器
step1
寫一個 Java 類,實現特定的監聽器接口(依據要監聽的事件類型,去實現相應的監聽器接口)。
step2
在接口聲明的方法中,實現監聽的邏輯。
step3
配置(web.xml)。
配置監聽器
有先后順序的要求,在 <context-param> 之后, <filter> 之前;<filter> 在 <listener> 之后,<servlet> 之前。
統計在線人數的案例
監聽器示例代碼:
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監聽器** @author liaowenxiong* @date 2022/2/27 16:29*/ @WebListener public class CountListener implements HttpSessionListener {private int count = 0;/*** Session對象創建后,就會執行該方法** @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對象銷毀前會執行該方法** @param arg0*/public void sessionDestroyed(HttpSessionEvent arg0) {System.out.println("Session對象被銷毀...");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>當前系統在線人數</title> </head> <body> 系統在線人數: <%= 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>部署好之后,啟動服務器,訪問:http://localhost:8080/sl/index.jsp,sl 項目的虛擬目錄。
總結
以上是生活随笔為你收集整理的Servlet中的监听器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓机型伪装app(安卓机型伪装)
- 下一篇: Maven构建Artifact时,不会创