Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Servlet过滤器笔记

Servlet过滤器笔记

作者头像
SuperHeroes
发布于 2019-03-12 06:48:17
发布于 2019-03-12 06:48:17
35200
代码可运行
举报
文章被收录于专栏:云霄雨霁云霄雨霁
运行总次数:0
代码可运行
  • Servlet过滤器用来动态拦截浏览器请求和服务端相应,对包含在请求或响应中的信息进行统一处理。
  • 一个过滤器可以附加在一个或多个Servlet上,也可以附加在JSP和HTML页面中。调用Servlet前调用所有的Servlet过滤器。

实现Servlet过滤器:

实现Servlet过滤器关键有两点,实现Filter接口,在web.xml中配置过滤器。

要实现Filter接口,首先了解Filter接口声明了哪些方法:

  • public void init(FilterConfig filterConfig):初始化过滤器(filter对象只会创建一次,init方法也只会执行一次)。
  • public void doFilter (ServletRequest, ServletResponse, FilterChain):该方法完成实际的过滤操作。
  • public void destroy():Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。

init()方法:

web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作。

init()方法中提供了一个FilterConfig对象,这是一个配置对象,在web.xml中可以进行如下配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<filter>
    <filter-name>FilterTest</filter-name>
    <filter-class>com.hellotomcat.test.FilterTest</filter-class>
    <init-param>
        <param-name>name</param-name>
        <param-value>value</param-value>
    </init-param>
</filter>

一般情况下只需要配置<filter-name>和<filter-class>即可,配置的参数可以在init()方法中获取:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void  init(FilterConfig config) throws ServletException {
    // 获取初始化参数
    String value = config.getInitParameter("name"); 
    // 输出初始化参数
    System.out.println("name: " + value); 
}

doFilter()方法:

该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法。该方法参数列表中最后一个参数FilterChain是过滤链,用于返回响应。

一个示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void  doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException {
    // 控制台输出访问信息
    System.out.println("正在访问***站点");
    // 把请求传回过滤链
    chain.doFilter(request,response);
}

destroy()方法:

用于在过滤器被回收时释放资源。

配置过滤器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<filter>
    <filter-name>FilterTest</filter-name>
    <filter-class>com.hellotomcat.test.FilterTest</filter-class>
    <init-param>
        <param-name>name</param-name>
        <param-value>value</param-value>
    </init-param>
</filter>

<filter-mapping>
  <filter-name>FilterTest</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

如果需要配置多个过滤器,只需要在配置文件中依次配置每个过滤器即可。web.xml 中的 filter-mapping 元素的顺序决定了 Web 容器应用过滤器到 Servlet 的顺序。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/06/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
过滤器Filter精华知识点,怎能不看 ​
过滤器Filter 1 什么是过滤器 过滤器JavaWeb三大组件之一,它与Servlet很相似!不它过滤器是用来拦截请求的,而不是处理请求的。 当用户请求某个Servlet时,会先执行部署在这个请求
Java帮帮
2018/03/19
9870
过滤器Filter精华知识点,怎能不看 ​
代码审计 | Java Web 过滤器 - filter
filter 被称为过滤器,是 Servlet 2.3 新增的一个特性,同时也是 Serlvet 技术中最实用的技术。
TeamsSix
2022/09/20
4920
代码审计 | Java Web 过滤器 - filter
Listener监听器和Filter过滤器
1、Listener监听器它是JavaWeb的三大组件1之一。JavaWeb的三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。 2、Listener它是JavaEE的规范,就是接口。 3、监听器的作用是,监听某种事物的变化。然后通过回调函数,反馈给客户(程序)去做一些相应的处理。
技术交流
2022/11/18
3840
Listener监听器和Filter过滤器
Java框架中常见的几个过滤器——JSP、Spring Boot、Servlet过滤器、Struts2拦截器
JSP过滤器是在JSP页面生成之前或之后执行的一种过滤器,它可以对请求进行拦截、处理和转发,还可以对响应进行修改和过滤。使用JSP过滤器可以实现很多功能,例如字符编码转换、登录验证、请求日志记录等。
秋名山码神
2023/10/16
7010
Java框架中常见的几个过滤器——JSP、Spring Boot、Servlet过滤器、Struts2拦截器
Java Web从入门到"改行"(3)--过滤器Filter
过滤器顾名思义就是位于中间层起到过滤作用的,用于拦截请求或响应信息。过滤器 (Filter)技术是在Servlet2.3新增的功能,过滤器并不是Servlet,而是位于请求与响应中间起过滤作用的程序。 Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说,就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理。
流川枫
2018/09/12
8120
Java Web从入门到"改行"(3)--过滤器Filter
Servlet-过滤器入门
Servlet 过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的: 1. 在客户端的请求访问后端资源之前,拦截这些请求。 2. 在服务器的响应发送回客户端之前,处理这些响应。
用户2146693
2019/08/08
3920
Servlet-过滤器入门
Servlet总结四(过滤器)
文章目录 1. Servlet总结四(过滤器的使用) 1.1. 简介 1.2. 过滤器的实现 1.2.1. 重点 1.2.2. 简单的例子 1.2.3. 过滤器的设置 1.2.3.1. 注意 1.2.4. 初始参数的设置和获取 1.2.4.1. 设置初始值 1.2.4.2. 获取初始参数的值 1.2.5. 设置触发的时机 Servlet总结四(过滤器的使用) 简介 在容器调用Servlet的service()的方法钱,Servlet其实并不会知道有请求的到来,而在service()方法执行后,容器真正
爱撒谎的男孩
2019/12/31
4180
拦截过滤器
J2EE核心模式(第二版)中这样写道:使用拦截过滤器,作为一个可插拔式的过滤器,实现请求、响应的预处理和后处理。另有一个过滤器管理器,负责把各个处于松耦合关系的过滤器结合成一个链,并把控制依次委派给合适的过滤器。这样一来,不必改动现有代码就可能以各种方式加入、删除、合并这些过滤器。
源哥
2018/08/28
4950
Java 中的 Filter 过滤器详解
Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
Java团长
2018/07/23
1.9K0
Spring Security 6.x 过滤器链SecurityFilterChain是如何工作的
上一篇主要介绍了Spring Secuirty中的过滤器链SecurityFilterChain是如何配置的,那么在配置完成之后,SecurityFilterChain是如何在应用程序中调用各个Filter,从而起到安全防护的作用,本文主要围绕SecurityFilterChain的工作原理做详细的介绍。
fullstackyang
2024/06/02
5660
Spring Security 6.x 过滤器链SecurityFilterChain是如何工作的
java过滤器Filter「建议收藏」
Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断如是否有权限访问页面等。其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应 (Request、Response)统一设置编码,简化操作;同时还可进行逻辑判断,如用户是否已经登陆、有没有权限访问该页面等等工作。它是随你的 web应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的web应用停止或重新部署的时候才销毁,以下通过代码示例来了解它 的使用。
全栈程序员站长
2022/06/27
5750
Web阶段:第十八章:Filter过滤器
Filter,什么是过滤器? 1.Filter过滤器是javaWeb的三大组件之一, 2.三大组件分别是:Servlet程序,Filter过滤器,Listener监听器。 3.Filter是接口。 4.Filter的作用是:拦截请求,过滤响应。
Java廖志伟
2022/09/28
1920
Web阶段:第十八章:Filter过滤器
[javaweb]Java过滤器与包装设计模式的实用案例.
在filter中可以得到代表用户请求和响应的request、response对象,因此在编程中可以使用Decorator(装饰器)模式对request、response对象进行包装,再把包装对象传给目标资源,从而实现一些特殊需求。 一、Decorator设计模式 1.1、Decorator设计模式介绍   当某个对象的方法不适应业务需求时,通常有2种方式可以对方法进行增强: 编写子类,覆盖需增强的方法。 使用Decorator设计模式对方法进行增强。   在阎宏博士的《JAVA与模式》一书中开头是这样描述装
一枝花算不算浪漫
2018/05/18
1.1K0
JavaWeb-过滤器Filter学习(二)设置全站编码与设置页面缓存
以前我们设置servlet的request和response的编码需要在每个servlet都设置,如果Servlet很多,显得很麻烦,现在我们可以用过滤器很简单的实现这个功能。 还有页面缓存,如果我们的网页是静态的,图片和内容基本上很少变化或者不变化的,我们就可以告诉客户端这个页面你缓存多久~以达到节省流量的目的。
谙忆
2021/01/21
4900
JavaWeb-过滤器Filter学习(二)设置全站编码与设置页面缓存
java过滤器怎么使用(过滤器滤纸怎么配置)
过滤器的作用:用于过滤请求,在请求发出前后,做一些检查或操作,配置及使用步骤如下:
全栈程序员站长
2022/07/28
1.3K0
java过滤器怎么使用(过滤器滤纸怎么配置)
Java Web Servlet过滤器
  过滤器就是可以对浏览器向jsp,servlet,html等这些web资源发出请求和
Hongten
2018/09/13
7170
Servlet过滤器,Servlet过滤器创建和配置
第一:Servlet的过滤器的创建和配置,创建一个过滤器对象需要实现javax.servlet.Filter接口,同时实现Filter的3个方法。        第一方法是过滤器中的init()方法用
别先生
2017/12/29
1K0
Servlet过滤器,Servlet过滤器创建和配置
Servlet 过滤器和异常处理
Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet。Servlet 过滤器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 页面。调用 Servlet 前调用所有附加的 Servlet 过滤器。
Carlos Ouyang
2019/08/19
1.2K0
Servlet 过滤器和异常处理
javaee的OA项目(六)过滤器的使用,解决中文乱码的过滤器和使用过滤器实现拦截判断
A、目前使用的baseServlet的优点就是方便可以进行乱码的统一的处理,但是如果我们以后不使用servlet,那么我们在进行中文乱码处理的时候就需要在每一个servlet 中去书写,但是比较麻烦。 B、在进行登陆拦截处理的时候,我们需要把拦截的代码在每一个页面中重复的书写,这样,就会变的非常的麻烦。
一写代码就开心
2021/06/17
1K0
javaee的OA项目(六)过滤器的使用,解决中文乱码的过滤器和使用过滤器实现拦截判断
使用过滤器解决中文乱码问题
在Web.xml文件中,配置过滤器,其过滤器的URL映射可以使用正则表达式进行配置,如实例中使用“/*”来匹配所有请求。
卡尔曼和玻尔兹曼谁曼
2019/01/25
1.5K0
相关推荐
过滤器Filter精华知识点,怎能不看 ​
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验