Filter和Listener 快速入门笔记

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

一、Filter

1、快速入门

Filter和Listener 快速入门笔记_第1张图片Filter和Listener 快速入门笔记_第2张图片
但是此时我们会发现页面数据没有显示,因为被过滤,我们没有放行这个请求,所以访问不到页面
Filter和Listener 快速入门笔记_第3张图片

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文件配置

Filter和Listener 快速入门笔记_第4张图片Filter和Listener 快速入门笔记_第5张图片




<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">
   
    <filter>
        <filter-name>filter1filter-name>
        <filter-class>com.yzpnb.filter.Filter1filter-class>
    filter>
    
    <filter-mapping>
        <filter-name>filter1filter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

web-app>
        

3、Filter执行流程

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

Filter和Listener 快速入门笔记_第6张图片

4、Filter生命周期

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

Filter和Listener 快速入门笔记_第7张图片
Filter和Listener 快速入门笔记_第8张图片
Filter和Listener 快速入门笔记_第9张图片

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)//过滤转发来的所有请求

Filter和Listener 快速入门笔记_第10张图片在这里插入图片描述

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

Filter和Listener 快速入门笔记_第11张图片Filter和Listener 快速入门笔记_第12张图片

Listener

Filter和Listener 快速入门笔记_第13张图片
Filter和Listener 快速入门笔记_第14张图片

Filter和Listener 快速入门笔记_第15张图片
Filter和Listener 快速入门笔记_第16张图片

你可能感兴趣的:(java,web,过滤器,java)