【Filter】基本使用

本文详细介绍了JavaWeb中的Filter过滤器,包括其作为拦截请求和响应的接口,使用步骤,生命周期,FilterConfig类的功能,FilterChain的工作方式,以及如何配置拦截路径。Filter常见于权限检查、日记记录和事务管理等场景。通过配置不同的url-pattern,可以实现精确匹配、目录匹配和后缀名匹配来控制过滤范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 概念

  • JavaWeb的三大组件Servlet程序、Listener监听器、Filter过滤器。
  • Filter是一个接口
  • 作用:拦截请求,过滤响应。
  • 常见的应用场景:权限检查、日记操作、事务管理…

在这里插入图片描述

2 Filter过滤器的使用步骤

  • 1、编写一个类实现Filter接口
  • 2、实现方法doFilter()
  • 3、到web.xml中配置Filter的拦截路径
// 注意Filter不要导错包
import javax.servlet.Filter;
public class EncodingFilter implements Filter {
    @Override
    public void destroy() {
    }
 
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        request.setCharacterEncoding("UTF-8");
 		// 这一行代码的作用是:让程序继续往下访问目标资源,不能省略
        chain.doFilter(request, response);
    }
 
    @Override
    public void init(FilterConfig arg0) throws ServletException {
    }
}

3 生命周期

  • 构造方法,启动web工程时执行
  • init初始化方法,启动web工程时执行
  • doFilter过滤器方法,拦截到请求时执行
  • destroy销毁方法,停止web工程时执行

4 FilterConfig类

  • 是init方法中的参数。
  • 是Filter过滤器的配置文件类
  • tomcat每次创建一个Filter时,也会同时创建一个FilterConfig类,这里包含了Filter配置文件的配置信息。

FilterConfig类的作用(与ServletConfig类的作用相似):

  • 获取Filter的名称,即filter-name标签中的内容。
  • 获取web.xml配置文件中,Filter标签下的init-param参数。
  • 获取ServletContext对象。

5 FilterChain过滤器链

  • 是doFilter方法的参数
  • 含义:多个过滤器如何一起工作

在这里插入图片描述

6 Filter过滤器的拦截路径

  • 精确匹配
<url-pattern>/target.jsp</url-pattern>
<!-- 
表示精确匹配的路径为:http://ip:port/工程路径/target.jsp 
/与servlet标签中一样,不能省略
target.jsp表示一个具体的资源名
-->
  • 目录匹配
<url-pattern>/admin/*</url-pattern>
<!-- 
表示请求地址为:http://ip:port/工程路径/admin/* 
-->
  • 后缀名匹配
<url-pattern>*.html</url-pattern>
<!-- 
表示请求地址必须以.html结尾,不能加/号
-->
  • Filter过滤器只关心请求的地址是否匹配,不关心请求的资源是否存在

参考资料

【1】尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值