4  监听HttpSession域对象的创建和销毁

HttpSessionListener接口用于监听HttpSession对象的创建和销毁。

创建一个Session时,激发sessionCreate(HttpSessionEvent event)方法。

销毁一个Session时,激发sessionDestroyed(HttpSessionEvent event)方法。

范例:编写一个MyHttpSessionListener类,实现HttpSessionListener接口,监听HttpSession对象的创建和销毁。

●  编写监听器,代码如下:

package com.xdl.listener;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

/**

* 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所示的信息。

图7  控制台打印了创建Session的信息

在浏览器中,将显示如图8所示的页面。

图8  浏览器中显示的页面

等待一分钟后,可以在Eclipse的控制台中发现session销毁也被监听到了。如图9所示。

图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所示的信息。

10  控制台输出了request创建和销毁的信息

点击浏览器的刷新按钮,再次访问index.jsp文件时,Eclipse控制台输出如图11所示的信息。

图11  控制台再次输出了request创建和销毁的信息

从运行结果可以看到,用户每一次访问都会创建request对象,当次访问结束后,request对象就会销毁。

IT兄弟连 JavaWeb教程 监听器2的更多相关文章

  1. IT兄弟连 JavaWeb教程 监听器4

    感知Session绑定事件的监听器 保存在Session域中的对象可以有多种状态:绑定(session.setAttribute("bean",Object)到Session中:从 ...

  2. IT兄弟连 JavaWeb教程 监听器3

    监听域对象中属性变更的监听器 域对象中属性的变更的事件监听器就是用来监听ServletContext.HttpSession.HttpServletRequest这三个对象中的属性变更信息事件的监听器 ...

  3. IT兄弟连 JavaWeb教程 监听器1

    1  基本概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程序,这个程序 ...

  4. IT兄弟连 JavaWeb教程 过滤器与监听器经典面试题

    1.谈谈你对Servlet过滤器的理解 过滤器是Servlet2.3规范中定义的一种小型的.可插入的Web组件.用来拦截Servlet容器的请求和响应过程,以便查看.提取客户端和服务器之间正在交换的数 ...

  5. IT兄弟连 JavaWeb教程 过滤器1

    Servlet过滤器是从Servlet2.3规范开始新增的功能,并在Servlet2.4规范中得到增强,监听器可以监听到Web应用程序启动和关闭.创建过滤器和监听器需要继承相应接口,并对其进行配置. ...

  6. IT兄弟连 JavaWeb教程 ServletContext对象

    ServletContext是Servlet与Servlet容器之间直接通信的接口.Servlet容器在启动一个Web应用时,会为它创建一个ServletContext对象.每个Web应用都有唯一的S ...

  7. IT兄弟连 JavaWeb教程 JSON和JSON字符串

    JSON (JavaScript Object Notation)是JavaScript语言中的一种对象类型.JSON的好处是易于阅读和解析.当客户端和服务器端需要交互大量数据时,使用JSON格式传输 ...

  8. IT兄弟连 JavaWeb教程 文件下载技术

    ●  列出提供下载的文件资源 我们要将Web应用系统中的文件资源提供给用户进行下载,首先我们要有一个页面列出上传文件目录下的所有文件,当用户点击文件下载超链接时就进行下载操作,编写一个ListFile ...

  9. IT兄弟连 JavaWeb教程 文件上传技术

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参 ...

随机推荐

  1. Java多线程系列 基础篇07 synchronized底层优化

    转载 http://www.cnblogs.com/paddix/ 作者:liuxiaopeng http://www.infoq.com/cn/articles/java-se-16-synchro ...

  2. bind(),live(),delegate(),on()绑定事件方式

    1.bind():向匹配元素添加一个或多个事件处理器. 适用所有版本,但是自从jquery1.7版本以后bind()函数推荐用on()来代替. $(selector).bind(event,data, ...

  3. M1卡破解(自从学校升级系统之后,还准备在研究下)【转】

    本文转载自: M1卡说明及使用proxmark3破解方法 看了网上写的一些关于M1卡的文章,多数有些误导之嫌.首先谈谈M1卡的规格,M1卡的容量为1KB,好多网上写8KB,这里其实是有个误区,应该是8 ...

  4. 《机器学习实战》学习笔记第三章 —— 决策树之ID3、C4.5算法

    主要内容: 一.决策树模型 二.信息与熵 三.信息增益与ID3算法 四.信息增益比与C4.5算法 五.决策树的剪枝 一.决策树模型 1.所谓决策树,就是根据实例的特征对实例进行划分的树形结构.其中有两 ...

  5. python根据圆的参数方程求圆上任意一点的坐标

    from math import cos, sin,pi x0,y0=0,0 r=4.0 angle=-25 x1 = x0 + r * cos(angle * pi / 180) y1 = y0 + ...

  6. 深度学习在gilt应用——用图像相似性搜索引擎来商品推荐和服务属性分类

    机器学习起源于神经网络,而深度学习是机器学习的一个快速发展的子领域.最近的一些算法的进步和GPU并行计算的使用,使得基于深度学习的算法可以在围棋和其他的一些实际应用里取得很好的成绩. 时尚产业是深度学 ...

  7. Apache Flink vs Apache Spark——感觉二者是互相抄袭啊 看谁的好就抄过来 Flink支持在runtime中的有环数据流,这样表示机器学习算法更有效而且更有效率

    Apache Flink是什么 Flink是一款新的大数据处理引擎,目标是统一不同来源的数据处理.这个目标看起来和Spark和类似.没错,Flink也在尝试解决 Spark在解决的问题.这两套系统都在 ...

  8. 反向ssh

    参考 https://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/ https://www.howtoforge.com/reverse-ssh-t ...

  9. linux命令学习笔记(33):df 命令

    linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了 多少空间,目前还剩下多少空间等信息. .命令格式: df [选项] [文件] .命令 ...

  10. PHP 正则表达示

    PHP 正则表达示 php如何使用正则表达式 正则表达式基本元字符 #正则表达式示例 ^:匹配输入字符串开始的位置.如果设置了 RegExp 对象的 Multiline 属性,^ 还会与“\n”或“\ ...