Filter和Listener 快速入门笔记

网页右边,向下滑有目录索引,可以根据标题跳转到你想看的内容
如果右边没有就找找左边

一、Filter

1、快速入门

在这里插入图片描述在这里插入图片描述
但是此时我们会发现页面数据没有显示,因为被过滤,我们没有放行这个请求,所以访问不到页面
在这里插入图片描述

package com.yzpnb.filter;


import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter("/*")//客户端访问任何资源都需要经过此过滤器过滤
public class Filter1 implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("Filter1----------doFilter");
        //放行
        filterChain.doFilter(servletRequest, servletResponse);
    }

    public void destroy() {

    }
}

2、使用web.xml配置过滤器Filter

上面快速入门,我们使用的是注解@WebFilter()来配置过滤器,接下来介绍web.xml文件配置

在这里插入图片描述在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?><!-- 这是xml文档的文档声明 -->

<!--
  - 这是XML Schema格式约束文件,此文件将约束用户编写xml文档的规则
  -->
<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
   <!--与Servlet一样,先指定filter的名称和类-->
    <filter>
        <filter-name>filter1</filter-name><!--filter的名字-->
        <filter-class>com.yzpnb.filter.Filter1</filter-class><!--filter的实体类-->
    </filter>
    <!--filter映射-->
    <filter-mapping>
        <filter-name>filter1</filter-name><!--通过filter名字,映射到指定filter-->
        <url-pattern>/*</url-pattern><!--配置当前过滤器的拦截路径-->
    </filter-mapping>

</web-app>
        

3、Filter执行流程

执行流程
执行过滤器
执行放行后的资源
执行过滤器放行代码下面的代码

在这里插入图片描述

4、Filter生命周期

生命周期
1、init()方法,会在服务器启动时,创建Filter对象时执行
2、doFilter(),会在客户端访问被拦截资源时执行,不需要拦截的不会执行
3、destroy(),服务器正常关闭时,执行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、Filter配置详解

配置拦截路径,就是规定用户请求哪些路径时,会被过滤器拦截
@WebFilter("/*")//此注解标识的Filter类,过滤所有请求,只要它请求是这个项目
@WebFilter("/user/*")//过滤/user/路径下资源,只要用户请求地址有/user/就过滤
@WebFilter("*.jsp") //过滤所有后缀为jsp的文件,只要用户请求jsp文件就过滤
@WebFilter("index.jsp")//只过滤这一个静态资源,用户只有请求index.jsp文件才会被过滤

在这里插入图片描述

配置拦截方式,就是某用户请求某路径资源,此时与过滤器的拦截路径匹配,那么此时不会直接拦截,而是看拦截方式,比如配置了拦截方式为浏览器,那么只有浏览器直接来的请求会拦截,而转发等其它方式来的请求,不会拦截
@WebFilter(urlPatterns = "/*",dispatcherTypes = DispatcherType.REQUEST)//过滤所有由浏览器直接请求资源的请求
@WebFilter(urlPatterns = "/*",dispatcherTypes = DispatcherType.FORWARD)//过滤转发来的所有请求

在这里插入图片描述在这里插入图片描述

6、过滤器链(多个Filter配置)

在这里插入图片描述在这里插入图片描述

Listener

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殷丿grd_志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值