【JavaWeb】Java Web三大组件之Filter过滤器

简介: JavaWeb中的过滤器:当浏览器访问服务器资源时,过滤器就会拦截浏览器发过来的请求,实现一些特别的功能。作用:一般用于完成通用的操作,如登录验证,身份验证,统一字符编码和敏感字过滤等。

本文只是先做下简单的介绍,文章会持续更新.......


Java Web三大组件(Servlet、Filter、Listener)


一、Filter过滤器概念


生活中的过滤器:净水器,空气净化器,大山里的土匪等。


JavaWeb中的过滤器:当浏览器访问服务器资源时,过滤器就会拦截浏览器发过来的请求,实现一些特别的功能。


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


二、Filter过滤器快速入门

2.1 步骤

   1. 定义一个类,实现接口Filter

   2. 复写方法

   3. 配置拦截路径

            1. web.xml

            2. 注解

2.2 代码


@WebFilter("/*")//访问所有资源之前,都会执行该过滤器publicclassFilterDemo1implementsFilter {
@Overridepublicvoidinit(FilterConfigfilterConfig) throwsServletException {
    }
@OverridepublicvoiddoFilter(ServletRequestservletRequest, ServletResponseservletResponse, FilterChainfilterChain) throwsIOException, ServletException {
// 拦截之后执行这里System.out.println("filterDemo1被执行了....");
//放行filterChain.doFilter(servletRequest,servletResponse);  
    }
@Overridepublicvoiddestroy() {
    }
}


三、过滤器细节

3.1 web.xml配置


<filter><filter-name>demo1</filter-name><filter-class>com.jiaoyu.web.filter.FilterDemo1</filter-class></filter><filter-mapping><filter-name>demo1</filter-name><!--注意这里是拦截路径--><url-pattern>/*</url-pattern></filter-mapping>


3.2 过滤器执行流程

> 1. 执行过滤器

> 2. 执行放行后的资源

> 3. 回来执行过滤器放行代码下边的代码

3.3 过滤器生命周期方法

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

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

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

四、过滤器配置详解

4.1 拦截路径配置:

> 1. 具体资源路径: /index.jsp   只有访问index.jsp资源时,过滤器才会被执行

> 2. 拦截目录: /user/*    访问/user下的所有资源时,过滤器都会被执行

> 3. 后缀名拦截: *.jsp        访问所有后缀名为jsp资源时,过滤器都会被执行

> 4. 拦截所有资源:/*        访问所有资源时,过滤器都会被执行

4.2 拦截方式配置:资源被访问的方式

4.2.1 注解配置:设置dispatcherTypes属性

> 1. REQUEST:默认值。浏览器直接请求资源

> 2. FORWARD:转发访问资源

> 3. INCLUDE:包含访问资源

> 4. ERROR:错误跳转资源

> 5. ASYNC:异步访问资源

4.2.2 web.xml配置

设置`<dispatcher></dispatcher>`标签即可

             

五、过滤器链(配置多个过滤器)

5.1 执行顺序:如果有两个过滤器:过滤器1和过滤器2

> 1. 过滤器1

> 2. 过滤器2

> 3. 资源执行

> 4. 过滤器2

> 5. 过滤器1  

5.2 过滤器先后顺序问题:

> 1. 注解配置:按照类名的字符串比较规则比较,值小的先执行

>                        如: AFilter 和 BFilter,AFilter就先执行了。

> 2. web.xml配置: `<filter-mapping>`谁定义在上边,谁先执行

 

 

到这里本文就结束了,希望对大家有帮助;


如果感觉写的好,确实帮助了你,那就麻烦帮忙点个赞,多谢!



**本文首发于CSDN,为博主原创文章,如果需要转载,请注明出处,谢谢!**



完结!

相关文章
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
377 37
|
27天前
|
前端开发 JavaScript 开发者
Web组件:一种新的前端开发范式
【10月更文挑战第9天】Web组件:一种新的前端开发范式
34 2
|
29天前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
30 2
|
1月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
45 5
|
11天前
|
消息中间件 监控 Kafka
Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面
随着大数据技术的发展,Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面,方便管理和监控 Kafka 集群。本文详细介绍了 Kafka Manager 的部署步骤和基本使用方法,包括配置文件的修改、启动命令、API 示例代码等,帮助你快速上手并有效管理 Kafka 集群。
35 0
|
1月前
|
前端开发 JavaScript Go
前端开发趋势:从响应式设计到Web组件的探索
【10月更文挑战第1天】前端开发趋势:从响应式设计到Web组件的探索
36 3
|
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炸弹
94 2
|
2月前
|
SQL JSON JavaScript
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
Vue 指令、生命周期、this和$、vue脚手架进行模块化开发/ElementUI框架、综合案例,element商品列表展示增删改查
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
|
2月前
|
中间件 编译器 数据处理
在web开发中应用管道过滤器
【9月更文挑战第1天】本文介绍管道-过滤器架构将数据处理流程分解为一系列独立组件,通过管道连接,适用于数据流处理如图像处理、编译器设计等。通过具体实例说明了Gin如何有效支持管道-过滤器风格的设计,构建高性能Web服务。
93 9
下一篇
无影云桌面