Java Web—Filter(过滤器)

web中的过滤器的作用:

当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。

web中过滤器的应用场景:

一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤...

Filter的创建:

1.直接在New中选择 Web Filter

2.修改你创建文件的Name

3.其中各个方法的作用:

package FilterDemo;

import javax.servlet.*;

import javax.servlet.annotation.*;

import java.io.IOException;

/**

过滤器是在服务器启动时就会创建的,只会创建一个实例,常驻内存,也就是说.

*/

@WebFilter(filterName = "FilterDemo1")

public class FilterDemo1 implements Filter {

/**

* 初始化方法,常用于数据初始化

* 服务器一启动就会执行Filter的init(FilterConfig config)方法

* 且只执行一次

*/

public void init(FilterConfig config) throws ServletException {

}

/**

* 销毁时调用,常用于释放资源

* 当Filter被移除或服务器正常关闭时,会执行destroy方法

* 仅执行一次

*/

public void destroy() {

}

/**

* 过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理

* 可执行多次

*/

@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {

chain.doFilter(request, response);//过滤放行

}

}

4.注解的配置

注解的配置有以下11种

@Target({ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface WebFilter {

String description() default "";

String displayName() default "";

WebInitParam[] initParams() default {};

String filterName() default "";

String smallIcon() default "";

String largeIcon() default "";

String[] servletNames() default {};

String[] value() default {};

String[] urlPatterns() default {};

DispatcherType[] dispatcherTypes() default {DispatcherType.REQUEST};

boolean asyncSupported() default false;

}

常用的配置项

1.urlPatterns

配置要拦截的资源

以指定资源匹配。例如:"/index.jsp"

以目录匹配。例如:"/servlet/*"

以后缀名匹配,例如:"*.jsp"

通配符,拦截所有web资源:"/*"

2.dispatcherTypes

配置拦截的类型,可配置多个。默认为DispatcherType.REQUEST,

FORWARD,//转发的

INCLUDE,//包含在页面的

REQUEST,//请求的

ASYNC,//异步的

ERROR;//出错的

如果需要配置多个使用大括号包起来。

@WebFilter(filterName = "FilterDemo1",

dispatcherTypes= {DispatcherType.FORWARD,DispatcherType.REQUEST})

注:如有错误与不足,希望大佬们多加指正与补充

相关文章

面试突击90:过滤器和拦截器有什么区别?

过滤器(Filter)和拦截器(Interceptor)都是基于 AOP(Aspect Oriented Programming,面向切面编程)思想实现的,用来解决项目中某一类问题的两种“工具”,但二...

Springboot过滤器和拦截器详解及使用场景

一、过滤器和拦截器的区别1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。2、拦截器可...

聊聊Redis布隆过滤器(原理+实践篇)

1 Bloom Filter 介绍布隆过滤器(Bloom Filter)是 Redis 4.0 版本提供的新功能,我们一般将它当做插件加载到 Redis 服务器中,给 Redis 提供强大的去重功能。...

一种基于布隆过滤器的大表计算优化方法

问题背景在大数据行业内,尤其是数仓建设中,一直有一个绕不开的难题,就是大表的分析计算(这里的大表指亿级以上)。特别是大表之间的 Join 分析,对任何公司数据部门都是一个挑战!主要有以下挑战:由于数据...

JAVA:如何实现 Bloom 过滤器?它是做什么用的?

在处理大型数据集时,经常需要快速确定一个元素是否属于某个集合。虽然传统的数据结构如哈希表和树可以完成这项任务,但随着数据量的增加,它们对空间的需求也随之激增。Bloom过滤器提供了一种高度空间效率的概...