IT・ブラザーズJavaWebチュートリアルリスナー2のバンド

4つのHttpSessionリスナードメインオブジェクトの作成と破棄

HttpSessionListener聴取HttpSessionオブジェクトを作成し、破壊するためのインターフェース。

あなたがセッションを作成すると、sessionCreate(HttpSessionEventイベント)の方法に影響を与えました。

セッションを破壊した場合、のsessionDestroyed(HttpSessionEventイベント)の方法に影響を与えました。

例:MyHttpSessionListenerはのHttpSessionListener、HttpSessionのリスナーオブジェクトを作成し、破壊するインタフェースを実装するクラスを記述します。

●次のように、リスナーを書きます:

パッケージcom.xdl.listener。

輸入れるjavax.servlet.http.HttpSessionEvent。

輸入javax.servlet.http.HttpSessionListener。

/ **

 * MyHttpSessionListenerクラスは、インターフェイスを実装のHttpSessionListener

 *ですから、この二つのアクションのHttpSessionオブジェクトの作成と破棄のために聞くことができます

 * /

パブリッククラスMyHttpSessionListenerは{のHttpSessionListenerを実装します

    @オーバーライド

    公共のボイドのsessionCreated(HttpSessionEventイベント){

        System.out.println(event.getSession()+ "作成");

        System.out.println( "セッションID是:" + event.getSession()のgetId())。

    }

    @オーバーライド

    公共のボイドのsessionDestroyed(HttpSessionEventイベント){

        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对象就会销毁。


おすすめ

転載: blog.51cto.com/14311187/2403721