IT兄弟連 JavaWeb教程 監聽器2

4  監聽HttpSession域對象的建立和銷燬html

HttpSessionListener接口用於監聽HttpSession對象的建立和銷燬。java

建立一個Session時,激發sessionCreate(HttpSessionEvent event)方法。web

銷燬一個Session時,激發sessionDestroyed(HttpSessionEvent event)方法。瀏覽器

範例:編寫一個MyHttpSessionListener類,實現HttpSessionListener接口,監聽HttpSession對象的建立和銷燬。服務器

●  編寫監聽器,代碼以下:session

package com.xdl.listener;app

import javax.servlet.http.HttpSessionEvent;jsp

import javax.servlet.http.HttpSessionListener;ide

/**3d

 * MyHttpSessionListener類實現了HttpSessionListener接口

 * 所以能夠對HttpSession對象的建立和銷燬這兩個動做進行監聽

 */

public class MyHttpSessionListener implements HttpSessionListener {

    @Override

    public void sessionCreated(HttpSessionEvent event) {

        System.out.println(event.getSession() + "建立了");

        System.out.println("session id是:" + event.getSession().getId());

    }

    @Override

    public void sessionDestroyed(HttpSessionEvent event) {

        System.out.println("session銷燬了");

    }

}

●  在web.xml文件中註冊監聽器

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns="http://xmlns.jcp.org/xml/ns/javaee"

    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

    version="3.1">

    <listener>

        <description>HttpSessionListener監聽器</description>

        <listener-class>com.xdl.listener.MyHttpSessionListener</listener-class>

    </listener>

    <!-- 配置HttpSession對象的銷燬時機 -->

    <session-config>

        <!-- 配置HttpSession對象1分鐘以後銷燬 -->

        <session-timeout>1</session-timeout>

    </session-config>

</web-app>

當咱們訪問JSP頁面時,HttpSession對象就會建立,此時就能夠在HttpSessionListener觀察到HttpSession對象的建立過程了,咱們能夠寫一個JSP頁面觀察HttpSession對象建立的過程。

●  編寫index.jsp,詳細代碼以下

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>兄弟連IT教育</title>

</head>

<body>

    <h1>HttpSessionListener監聽器監聽HttpSession對象的建立</h1>

    訪問JSP頁面時,HttpSession就建立了,建立好的Session的id是:${pageContext. session.id }

</body>

</html>

啓動Tomcat服務器,使用瀏覽器訪問localhsot:8080/XDL/index.jsp,控制檯中將顯示如圖7所示的信息。

494dbc8938d74764be91800ef561b414.png

圖7  控制檯打印了建立Session的信息

 

在瀏覽器中,將顯示如圖8所示的頁面。

318ce247ba9840cfac90855ba3025cff.png

圖8  瀏覽器中顯示的頁面

 

等待一分鐘後,能夠在Eclipse的控制檯中發現session銷燬也被監聽到了。如圖9所示。

dcba2933b5b846baad6f2778a946eca0.png

圖9  控制檯中打印了Session被銷燬的信息

 

監聽ServletRequest域對象的建立和銷燬

ServletRequestListener接口用於監聽ServletRequest對象的建立和銷燬。

Request對象被建立時,監聽器的requestInitialized(ServletRequestEvent event)方法將會被調用。

Request對象被銷燬時,監聽器的requestDestroyed(ServletRequestEvent event)方法將會被調用。

ServletRequest域對象建立和銷燬時機:

建立:用戶每一次訪問都會建立request對象。

銷燬:當前訪問結束,request對象就會銷燬。

範例:編寫一個MyServletRequestListener類,實現ServletRequestListener接口,監聽ServletRequest對象的建立和銷燬。

●  編寫監聽器,代碼以下:

package com.xdl.listener;

import javax.servlet.ServletRequestEvent;

import javax.servlet.ServletRequestListener;

/**

 * MyServletRequestListener類實現了ServletRequestListener接口

 * 所以能夠對ServletRequest對象的建立和銷燬這兩個動做進行監聽

 */

public class MyServletRequestListener implements ServletRequestListener {

    @Override

    public void requestDestroyed(ServletRequestEvent event) {

        System.out.println(event.getServletRequest() + "銷燬了");

    }

    @Override

    public void requestInitialized(ServletRequestEvent event) {

        System.out.println(event.getServletRequest() + "建立了");

    }

}

●  在web.xml文件中註冊監聽器

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns="http://xmlns.jcp.org/xml/ns/javaee"

    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

    version="3.1">

    <listener>

        <description>ServletRequestListener監聽器</description>

        <listener-class>com.xdl.listener.MyServletRequestListener</listener-class>

    </listener>

</web-app>

打開Tomcat服務器,當第一次訪問index.jsp文件時,Eclipse控制檯輸出如圖10所示的信息。

979894a7fccb4f92b0bd0e6bc280beb4.png

10  控制檯輸出了request建立和銷燬的信息

 

點擊瀏覽器的刷新按鈕,再次訪問index.jsp文件時,Eclipse控制檯輸出如圖11所示的信息。

bd8f602eba184aecbb60361d991d51e6.png

圖11  控制檯再次輸出了request建立和銷燬的信息

 

從運行結果能夠看到,用戶每一次訪問都會建立request對象,當次訪問結束後,request對象就會銷燬。

相關文章
相關標籤/搜索