博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet-listener监听器
阅读量:5785 次
发布时间:2019-06-18

本文共 4725 字,大约阅读时间需要 15 分钟。

基本概念  

JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。

Servlet监听器的分类

  在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为ServletContext,HttpSession和ServletRequest这三个域对象

  Servlet规范针对这三个对象上的操作,又把多种类型的监听器划分为三种类型:

1. 监听域对象自身的创建和销毁的事件监听器。2. 监听域对象中的属性的增加和删除的事件监听器。3. 监听绑定到HttpSession域中的某个对象的状态的事件监听器。

监听ServletContext域对象的创建和销毁

  ServletContextListener接口用于监听ServletContext对象的创建和销毁事件。实现了ServletContextListener接口的类都可以对ServletContext对象的创建和销毁进行监听。

  当ServletContext对象被创建时,激发contextInitialized (ServletContextEvent sce)方法。
  当ServletContext对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。

  ServletContext域对象创建和销毁时机:

    创建:服务器启动针对每一个Web应用创建ServletContext
    销毁:服务器关闭前先关闭代表每一个web应用的ServletContext

范例:编写一个MyServletContextListener类,实现ServletContextListener接口,监听ServletContext对象的创建和销毁

  1、编写监听器,代码如下:

1 package me.gacl.web.listener;23 import javax.servlet.ServletContextEvent;4 import javax.servlet.ServletContextListener;56 /**7 * @ClassName: MyServletContextListener8 * @Description: MyServletContextListener类实现了ServletContextListener接口,9 * 因此可以对ServletContext对象的创建和销毁这两个动作进行监听。10 *11 *12 *13 */14 public class MyServletContextListener implements ServletContextListener {1516 @Override17 public void contextInitialized(ServletContextEvent sce) {18 System.out.println("ServletContext对象创建");19 }2021 @Override22 public void contextDestroyed(ServletContextEvent sce) {23 System.out.println("ServletContext对象销毁");24 }25 }

  2、在web.xml文件中注册监听器

  我们在上面的中讲到,要想监听事件源,那么必须将监听器注册到事件源上才能够实现对事件源的行为动作进行监听,在JavaWeb中,监听的注册是在web.xml文件中进行配置的,如下:

1 
2
7
8
9
index.jsp
10
1112
13
14
ServletContextListener监听器
15
16
me.gacl.web.listener.MyServletContextListener
17
1819

  经过这两个步骤,我们就完成了监听器的编写和注册,Web服务器在启动时,就会自动把在web.xml中配置的监听器注册到ServletContext对象上,这样开发好的MyServletContextListener监听器就可以对ServletContext对象进行监听了。监听HttpSession域对象的创建和销毁

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

  创建一个Session时,激发sessionCreated (HttpSessionEvent se) 方法

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

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

  1、编写监听器,代码如下:

1 package me.gacl.web.listener;23 import javax.servlet.http.HttpSessionEvent;4 import javax.servlet.http.HttpSessionListener;56 /**7 * @ClassName: MyHttpSessionListener8 * @Description: MyHttpSessionListener类实现了HttpSessionListener接口,9 * 因此可以对HttpSession对象的创建和销毁这两个动作进行监听。10 *11 *12 *13 */14 public class MyHttpSessionListener implements HttpSessionListener {1516 @Override17 public void sessionCreated(HttpSessionEvent se) {18 System.out.println( se.getSession() + "创建了!!");19 }2021 /* HttpSession的销毁时机需要在web.xml中进行配置,如下:22 * 
23
1
24
25 这样配置就表示session在1分钟之后就被销毁26 */27 @Override28 public void sessionDestroyed(HttpSessionEvent se) {29 System.out.println("session销毁了!!");30 }31 }

  2、在web.xml文件中注册监听器

1 
2
3
HttpSessionListener监听器
4
me.gacl.web.listener.MyHttpSessionListener
5
6
7
8
9
1
10

  当我们访问jsp页面时,HttpSession对象就会创建,此时就可以在HttpSessionListener观察到HttpSession对象的创建过程了,我们可以写一个jsp页面观察HttpSession对象创建的过程。

如下:index.jsp

1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>23 4 5 6 HttpSessionListener监听器监听HttpSession对象的创建7 89 10 一访问JSP页面,HttpSession就创建了,创建好的Session的Id是:${pageContext.session.id}11 12 

监听ServletRequest域对象的创建和销毁

  ServletRequestListener接口用于监听ServletRequest 对象的创建和销毁

  Request对象被创建时,监听器的requestInitialized(ServletRequestEvent sre)方法将会被调用
  Request对象被销毁时,监听器的requestDestroyed(ServletRequestEvent sre)方法将会被调用

  ServletRequest域对象创建和销毁时机:

    创建:用户每一次访问都会创建request对象
    销毁:当前访问结束,request对象就会销毁

范例:编写一个MyServletRequestListener类,实现ServletRequestListener接口,监听ServletRequest对象的创建和销毁

  1、编写监听器,代码如下:

1 package me.gacl.web.listener;23 import javax.servlet.ServletRequestEvent;4 import javax.servlet.ServletRequestListener;56 /**7 * @ClassName: MyServletRequestListener8 * @Description: MyServletRequestListener类实现了ServletRequestListener接口,9 * 因此可以对ServletRequest对象的创建和销毁这两个动作进行监听。10 *11 *12 *13 */14 public class MyServletRequestListener implements ServletRequestListener {1516 @Override17 public void requestDestroyed(ServletRequestEvent sre) {18 System.out.println(sre.getServletRequest() + "销毁了!!");1920 }2122 @Override23 public void requestInitialized(ServletRequestEvent sre) {24 System.out.println(sre.getServletRequest() + "创建了!!");25 }26 }

  2、在web.xml文件中注册监听器

1 
2
3
ServletRequestListener监听器
4
me.gacl.web.listener.MyServletRequestListener
5

  用户每一次访问都会创建request对象,当访问结束后,request对象就会销毁。

转载地址:http://bntyx.baihongyu.com/

你可能感兴趣的文章
Scrum工具Leangoo“免费版”与“企业版”对比
查看>>
Daily Srum 10.30
查看>>
Debian Security Advisory(Debian安全报告) DSA-4412-1 drupal7 security update
查看>>
个人介绍
查看>>
calcite介绍
查看>>
cigarettes
查看>>
Android解析XML
查看>>
开发进度——3
查看>>
Linux tomcat
查看>>
Java封装、继承和抽象的实例
查看>>
计算机组成原理与系统结构---内存编址方法
查看>>
windows phone开发必备工具翔
查看>>
背包问题 (记忆化搜索)
查看>>
7 scrapy 初识
查看>>
exgcd
查看>>
activeMq学习
查看>>
day 09 初识函数
查看>>
2012/10/16
查看>>
post-message-stream的学习-metamask
查看>>
java项目中日志的配置
查看>>