JavaWeb过滤器(Filter)详解

简介: Filter:过滤器1.概念:web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能过滤器的作用:一般用于完成通用的操作,如登录验证、统一编码处理、敏感字符过滤等等。

JavaWeb过滤器(Filter)详解



Filter:过滤器


1.概念:


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


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


2.Filter接口源码


public interface Filter {
    default void init(FilterConfig filterConfig) throws ServletException {
     }
    void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
    default void destroy() {
    }
  }  


注意:通过查看源码我们发现,只有doFilter方法没有实现,我们可以只重写doFilter方法,其他两个方法可以不重写


过滤器的生命周期方法:


(1)init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次,用于加载资源


(2)doFilter:每一次请求被拦截资源时,会执行。执行多次


(3)destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法,只执行一次。用于释放资源


3.Filter的快速入门


@WebFilter("/*")//注解配置
public class FilterDemo implements Filter {    
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("对request进行过滤");
        filterChain.doFilter(servletRequest,servletResponse); //放行
        System.out.println("对response进行过滤");
    }
}


4.Filter配置拦截路径


(1)web.xml配置


<filter>
    <filter-name>写filter的名字</filter-name>
    <filter-class>写filter的全类名路径</filter-class>
</filter>
<filter-mapping>
    <filter-name>写filter的名字</filter-name>
    <url-pattern>写拦截路径</url-pattern>
</filter-mapping>


(2)注解配置:查看源码得以下配置项


filterName:该filter的名字

initParams:初始化参数

displayName:filter显示名称

servletNames:指定对哪些servlet进行过滤

asyncSupported:是否支持异步模式

urlPatterns:指定拦截路径

value:指定拦截路径


注意:urlPatterns和value是一样的。urlPatterns和value只能配置一个,不能两个都配置,两个都配置就会报错。


实例:


@WebFilter(filterName = "loginCheckFilter",urlPatterns = "/*")



目录
相关文章
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
335 37
|
19天前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
29 2
|
26天前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
29 5
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
2月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
81 2
|
2月前
|
SQL JSON JavaScript
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
Vue 指令、生命周期、this和$、vue脚手架进行模块化开发/ElementUI框架、综合案例,element商品列表展示增删改查
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
|
2月前
|
监控 前端开发 Java
Java里的过滤器和拦截器是什么原理,如何选择?
Java里的过滤器和拦截器是什么原理,如何选择?
24 0
|
3月前
|
安全 Java API
Java 8 流库的魔法革命:Filter、Map、FlatMap 和 Optional 如何颠覆编程世界!
【8月更文挑战第29天】Java 8 的 Stream API 通过 Filter、Map、FlatMap 和 Optional 等操作,提供了高效、简洁的数据集合处理方式。Filter 用于筛选符合条件的元素;Map 对元素进行转换;FlatMap 将多个流扁平化合并;Optional 安全处理空值。这些操作结合使用,能够显著提升代码的可读性和简洁性,使数据处理更为高效和便捷。
81 0
|
4月前
|
存储 程序员
JavaWeb之Listener监听器
JavaWeb之Listener监听器
65 0
|
5月前
|
安全 Java
使用FilterChain实现Java中的过滤器链
使用FilterChain实现Java中的过滤器链