Filter过滤器与listener监听器

什么是Filter过滤器:

1.Filter过滤器是JavaWeb的三大组件之一。其中三大组件分别是“servlet程序”,“listener监听器”与“Filter过滤器”。
2.Filter过滤器是JavaEE的规范,也就是接口。
3.Filter过滤器的主要作用是:拦截请求,过滤响应。

拦截请求常见的应用场景有:

	1.权限检查
	2.日记操作
	3.事务管理
	4.等。

在客户端与服务器交互时Filter过滤器的原理示意图:

在这里插入图片描述

Filter的基本使用步骤:

1.编写一个类去实现Filter接口。
2.实现过滤方法doFilter()。
3.到web.xml中配置Fliter的拦截路径。

Filter的生命周期:

Filter的生命周期包含几个方法:
		1.构造器方法
		2.init初始化方法
			第1,2步,在web工程启动时执行(Filter已经创建)
		3.doFilter过滤方法
			每次兰街道请求都会执行。
		4.destroy销毁方法
			停止web工程时就会执行,(停止web工程,就会销毁Filter过滤器)

FilterConfig类

FilterConfig类是Filter过滤器的配置文件类。
Tomcat每次创建Filter过滤器时,同时也会创建一个FilterConfig类,包含了Filter配置文件的配置信息。
FilterConfig类的作用:
获取filter过滤器的配置内容。
1.获取Filter的名称filter-name的内容。
2.获取在web.xml中配置的init-param初始化参数。
3.获取ServletContext对象。

FilterChain过滤器链:

Filter 过滤器
Chain 链,链条
FilterChain 就是过滤器链(多个过滤器如何在一起工作)
在这里插入图片描述

多个Filter过滤器执行时,执行顺序由Web.xml中从上到下配置的顺序执行。
多个Filter过滤器执行特点:
1.所有filter和目标资源默认都执行在同一线程中;
2.多个filter共同执行时,他们都使用同一个request对象。

Filter的拦截路径:

  • 精确匹配
<url-pattern>/xxx.jsp</url-pattern>

以上配置路径表示,请求地址为http://ip:port/工程路径/xxx.jsp

  • 目录匹配
<url-pattern>/目录名/*</url-pattern>

以上配置路径表示,请求地址为http://ip:port/工程路径/目录名/*
某个目录下的全部资源

  • 后缀名匹配
<url-pattern>*.html</url-pattern>

以上配置路径表示,请求地址为必须以.html结尾才会拦截到

<url-pattern>*.do</url-pattern>

以上配置路径表示,请求地址为必须以.do结尾才会拦截到

<url-pattern>*.action</url-pattern>

以上配置路径表示,请求地址为必须以.action结尾才会拦截到
Filter过滤器只关心请求的路径是否匹配,不关心请求的资源是否存在。

Listener监听器

Listener简介:

Listener是服务器三大组件之一。

  • 监听者:程序员自己创建
  • 监听对象:ServletContext、HttpSession、HttpServletRequest等
  • 监听事件:创建、修改、销毁等
  • 监听结果:项目需求

服务器组件共性

  • 都需要实现某个接口
  • 都需要在web.xml中注册

Listener作用

  • Listener用于监听JavaWeb程序中的事件。

Listener使用:

public class TestServletContextListener implements ServletContextListener {
    /**
     * ServletContext【application】对象被创建时,调用
     * @param sce
     */
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("application对象被创建啦!");
    }

    /**
     * ServletContext【application】对象被销毁时,调用
     * @param sce
     */
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("application对象被销毁啦!");
    }
}
<listener>
    <listener-class>com.atguigu.listener.TestServletContextListener</listener-class>
</listener>

总结三大服务器组件

  • 组件加载顺序,与注册顺序无关。【Listener > Filter > Servlet】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值