过滤器与监听器

本文详细介绍了Java Web中的过滤器(Filter)和监听器(Listener)。过滤器主要用于资源访问的过滤,如处理全站乱码。文章首先讲解了Filter的创建、配置、执行流程、API详解、配置映射路径、拦截方式以及过滤器链。接着,讨论了监听器,包括监听器的概念、分类和应用场景,特别阐述了ServletContextListener在服务器启动时加载配置信息的作用。
摘要由CSDN通过智能技术生成

过滤器 & 监听器

1章 过滤器****Filter

1.1 Filter****简介

fifilter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行

在这里插入图片描述

1.2 快速入门

在这里插入图片描述

通过API描述可知:

1. 我们创建一个过滤器的话需要实现Filter这个接口
  1. doFilter方法执行过滤器的功能

使用步骤

\1. 编写一个过滤器的类实现Filter接口

\2. 实现接口中尚未实现的方法(着重实现doFilter方法)

\3. 在web.xml中(注解)进行配置(主要是配置要对哪些资源进行过滤)

\4. 在doFilter方法中书写过滤任务

\5. FilterChain.doFilter方法放行

注意事项

过滤器doFilter方法默认拦截请求,如果需要经过过滤器之后,可以继续访问资源,要使用fifilterChain放行。

代码实现

public class MyFilter1 implements Filter {
    

@Override 

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, 

FilterChain filterChain) throws IOException, ServletException {
    

System.out.println("执行MyFilter1的filter......"); 

//放行,执行后面的Filter或目标资源 

filterChain.doFilter(servletRequest,servletResponse); 

}

@Override 

public void init(FilterConfig filterConfig) throws ServletException {
    

}

@Override 

public void destroy() {
    

} 

} 

web.xml配置

<filter> 

<filter‐name>MyFilter1</filter‐name> 

<filter‐class>com.soft.filter.MyFilter1</filter‐class> 

</filter> 

<filter‐mapping> 

<filter‐name>MyFilter1</filter‐name> 

<url‐pattern>/*</url‐pattern> 

</filter‐mapping> 

注解方式,不在web.xml中进行配置,使用@webFilter进行配置,如下:

@WebFilter(urlPatterns = "/*") 

public class MyFilter1 implements Filter {
   
  @Override 

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, 

FilterChain filterChain) throws IOException, ServletException {
    

System.out.println("执行MyFilter1的filter......"); 

//放行,执行后面的Filter或目标资源 

filterChain.doFilter(servletRequest,servletResponse); 

}

@Override 

public void init(FilterConfig filterConfig) throws ServletException {
    

}

@Override 

public void destroy() {
    

} 

} 

1.3 过滤器的执行流程

生活案例类比过滤器流程

花花从广州开车到长沙,中途途径韶关收费站。如果这座收费站业务通过了,韶关收费站放行,花花方可到达长

沙。但是如果没有通过韶关收费站的业务,就不能到达长沙目的地。而花花中途经过的收费站,就相当于我们java

中的过滤器。

图解过滤器的执行流程

在这里插入图片描述

1.4 FilterAPI详解1.4.1 fifilter****生命周期及其与生命周期相关的方法

Filter接口有三个方法,并且这个三个都是与Filter的生命相关的方法

init(Filterconfig) :代表fifilter对象初始化方法 fifilter对象创建时执行

doFilter(ServletRequest,ServletResponse,FilterCha) :代表fifilter执行过滤的核心方法,如果某资源在已

经被配置到这个fifilter进行过滤的话,那么每次访问这个资源都会执行doFilter方法

destory() :代表是fifilter销毁方法 当fifilter对象销毁时执行该方法

Filter对象的生命周期:

Filter何时创建:服务器启动时就创建该fifilter对象

Filter何时执行过滤:每当一个请求的路

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值