Filter概述、接口及配置

news/2024/7/5 8:41:45

目录

一、Filter概述

二、Filter接口

三、Filter配置


一、Filter概述

● Filter称为过滤器,位于客户端与处理程序之间,能够对请求和响应进行检查和修改
● 当客户端对服务器资源发送请求时,服务器根据过滤规则进行检查,如果满足过滤规则,则对客户请求进行拦截,然后对请求头或请求数据进行修改或检查,并依次通过Filter链,最后将请求交给处理程序
● 请求信息可以在过滤器中被修改,也可以根据请求条件不让请求发往处理程序

二、Filter接口

 编写一个Filter必须实现Filter接口

相关方法:

方法名说明
default void
init(FilterConfig
filterConfig)
创建Filter后用于初始化Filter,通过参数FilterConfig对象获取配置参数
void doFilter(ServletRequest
var1, ServletResponse
var2, FilterChain var3)
用于完成过滤的操作,其中Request对象和Response对象是由上一个过滤器或者Web服务器传递过来的请求和响应对象,FilterChain对象代表当前过滤链对象
default void destroy()用于释放过滤器中占用的资源,在对象被销毁之前调用

Filter接口提供了三个方法,其中init()方法和destroy()方法是默认方法不强制重写,而doFilter()方法是抽象方法,在实训Filter接口四必须重写

三、Filter配置

配置Filter有两种方式,一种是通过web.xml文件进行配置,一种是通过@WebFilter注解进行配置

web.xml配置方式:

<!--在web.xml文件的web-app标签下写入以下内容-->
<filter>
    <filter-name>FilterDemo</filter-name>
    <filter-class>com.liaoxiangqian.filter.FilterDemo</filter-class>
</filter>
    <filter-mapping>
    <filter-name>FilterDemo</filter-name>
    <url-pattern>/ServletDemo</url-pattern>
</filter-mapping>

@WebFilter注解配置方式:

@WebFilter("/ServletDemo")
public class FilterDemo implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("FilterDemo执行了");
    }
}

@WebFilter常用属性:

属性名类型说明
filterNameString指定过滤器名称
urlPattrenString[]指定需要过滤的资源,如某个Servlet或jsp
valueString[]等价于urlPattern,不能同时使用
servletNamesString[]指定过滤器将应用于哪些Servlet,取值是@WebServlet中name属性的取值
dispatcherTypesDispatcherType指定过滤器转发模式,取值有ERROR、
FORWARD、INCLUDE、REQUEST
initParamsWebInitParam[]指定过滤器的一组初始化参数

注意:

1、DispatcherType是枚举类,取值的作用如下:
2、DispatcherType.ERROR表示过滤器拦截那些跳转到某个异常处理页面的请求
3、DispatcherType.FORWARD表示过滤器拦截那些通过forward()方法来请求的转发的请求
4、DispatcherType.INCLUDE表示过滤器拦截那些通过include()方法来请求包含的请求
5、DispatcherType.REQUEST表示过滤器只会拦截普通的请求,而请求转发和请求包含类
的请求不会拦截

如果需要拦截用户的所有请求,则可以使用*号通配符,如:

<url-pattern>/*</url-pattern>

@WebFilter("/*")


http://lihuaxi.xjx100.cn/news/31189.html

相关文章

2021-第五空间智能安全大赛-PNG图片转换器 | 管道符与反引号的配合、open()函数绝杀

目录一、原理二、操作过程一、原理 1、base64 -d&#x1f37a; 从标准输入中读取已经进行base64编码的内容&#xff0c;解码输出 2、管道符 |&#x1f37a; 使用此管道符"|"可以将两个命令分隔开&#xff0c;"|"左边命令的输出就会作为"|"右边…

Vmware部署Linux无人值守安装Centos7系统

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

datart在windows的源码部署

datart在windows的源码部署IDEA克隆master分支编译Parser.jj安装javaCC插件编译项目创建mysql数据库修改后端配置启动后端启动前端登录页面参考这篇微博&#xff1a;【datart】数据可视化工具datart在IDEA中进行代码调试 IDEA克隆master分支 https://gitee.com/running-eleph…

数据结构day13

昨天写了一天transformer代码&#xff0c;就写了一题简单模拟题&#xff0c;今天打了球&#xff0c;也没补上&#xff0c;花费1.5h左右&#xff1b; 题目详情 - 1042 Shuffling Machine (pintia.cn) 思路&#xff1a;用两个数组储存&#xff0c;start装着一开始的0-53编号&am…

Web前端:如何评估前端开发人员

前端开发人员在弥合任何web或应用程序开发项目的技术和非技术方面的差距方面发挥着关键作用。它们建立在后端开发人员的工作基础上&#xff0c;创建我们在网站和应用程序上与之交互的面向用户的内容。 鉴于他们角色的双重性&#xff0c;他们的工作需要在功能和形式之间取得平衡…

Android 实现seekBar仿抖音拖动后改变thumb kotlin实现

Android 实现seekBar仿抖音拖动后改变thumb kotlin实现 又是一个没被甲方采用的方案哈哈哈 抖音的进度条默认状态下是半透明的灰色&#xff0c;thumb是一个同样的灰色的圆 点击、拖动后&#xff0c;progress变为白色&#xff0c;高度变高&#xff0c;thumb变为圆角矩形&#xf…

微服务 Spring Boot 整合Redis分布式锁 实现优惠卷秒杀 一人一单

文章目录⛅前言一、集群环境下 秒杀 一人一单的并发问题二、什么是分布式锁&#xff1f;⛄基本原理和实现方式⚡Redis 分布式锁的核心实现思路三、实战开发 实现 Redis 分布式锁四、ApiFox 测试 集群模式下是否能够解决并发问题⛵小结⛅前言 在微服务 Spring Boot 整合Redis 实…

基于java高校新生报道及宿舍分配平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

基于java高校新生报道及宿舍分配平台计算机毕业设计源码系统lw文档mysql数据库调试部署 基于java高校新生报道及宿舍分配平台计算机毕业设计源码系统lw文档mysql数据库调试部署本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件…