监听器和过滤器

监听器

作用: 监听web中的域对象:ServletContext, ServletRequest, HttpSession

监听内容(也叫事件源):

  1. 监听三个对象的创建和销毁(3个)
  2. 监听三个对象属性的变化(增,删,改)(3个)
  3. 监听session中javabean的状态(2个)[绑定和解绑;钝化和活化]

监听三个对象的创建和销毁

  1. ServletContextListener:监听ServletContext域对象
  2. ServletRequestListener:监听ServletRequest域对象
  3. HttpSessionListener: 监听HttpSession域对象
    需要实现每个域对象对应的监听接口并重写方法才能够实现监听

监听三个对象属性的变化

  1. ServletContextAttributeListener:监听ServletContext域对象的属性变化
  2. ServletRequestAttributeListener:监听ServletRequest域对象的属性变化
  3. HttpSessionAttributeListener:监听HttpSession域对象的属性变化
    需要实现每个域对象对应的监听接口并重写方法才能够实现监听

监听session中javabean的状态

  1. HttpSessionBindingListener: 监听绑定和解绑
  2. HttpSessionActivationListener: 钝化和活化

javabean类需要继承对应的监听接口并重写方法才能够实现监听

将监听器和事件源绑定

像配置servlet一样在xml中配置一个
    <listener>
    	<listener-class>监听器的全限定类名</listener-class>
    </listener>

三个域对象的生命周期

ServletContext:

​ 创建时间:服务器创建

​ 销毁时间:服务器关闭

ServletRequest:

​ 创建时间:请求来的时候

​ 销毁时间:响应完

HtttpSession:

​ 创建时间:

​ java中第一次调用request.getSession()方法时

​ jsp访问的时候创建

​ 销毁时间:

​ session超时

​ 手动销毁session(invalidate())

​ 服务器非正常关闭

Filter过滤器

什么是过滤器:

​ 一个实现了特殊接口(即Filter)的java类.实现对请求资源的过滤功能

过滤器的配置

像配置servlet一样在xml中配置
<filter>
	<filter-name>过滤器唯一标识</filter-name>
    <filter-class>过滤器的全限定类名</filter-class>
</filter>
<filter-mapping>
	<filter-name>过滤器唯一标识</filter-name>
    <url-pattern>/*</url-pattern><!--对指定请求路径拦截;此处针对所有请求进行拦截-->
</filter-mapping>

自定义监听器

步骤分析:

  1. 自定义一个监听器类,需要实现对应的监听器接口
  2. 重写接口提供的方法(即监听到之后要做什么事情)

以监听ServletContext的创建和销毁为例:

package com.daben.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyServletContextListener implements ServletContextListener {

	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		// 销毁操作
		System.out.println("servletContext被销毁了");

	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		// 创建操作
		System.out.println("servletContext被创建了!");

	}

}

在web.xml中将自定义的监听器和事件源进行绑定

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>listener</display-name>
  <listener>
  	<listener-class>com.daben.listener.MyServletContextListener</listener-class>
  </listener>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

声明:
有一些博文是看的黑马程序员视频,然后跟着老师做的笔记
Spring是跟子路老师学的
特此感谢,写这些文章的目的是为了自己方便查阅

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值