Filter--过滤器学习笔记

一.简介

Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,即对servlet的请求和响应进行拦截;

在 Servlet API 中定义了三个接口类来开供开发人员编写Filter 程序:Filter, FilterChain, FilterConfig;

Filter 程序是一个实现了 Filter 接口的 Java 类,由 Servlet 容器进行调用和执行;

Filter 程序需要在 web.xml 文件中进行注册和设置它所能拦截的资源;

若有多个 Filter 程序对某个 Servlet 程序的访问过程进行拦截,当针对该 Servlet 的访问请求到达时,web 容器将把这多个

Filter 程序组合成一个 Filter 链(过滤器链)。Filter 链中各个 Filter 的拦截顺序与它们在应用程序的 web.xml 中映射的顺序一致。

二.Filter相关API

1.Filter接口

Filter生命周期与Servlet很类似

①在 web 应用程序启动时,web 服务器将根据 web.xml 文件中的配置信息来创建每个注册的 Filter 实例对象,并将其保存在服务器的内存中

②装载并创建Filter的一个实例对象:调用Filter实例对象的init(FilterConfig filterConfig)方法,该方法在 Filter 生命周期中仅执行一次

③当客户端请求目标资源的时候,容器就会调用与这个目标资源相关联的过滤器的doFilter(ServletRequest request,ServletResponse response,

FilterChain chain)方法;在特定的操作完成后,可以调用chain.doFilter(request,response)方法,把请求交给下个Filter或Servlet处理,或直接

将请求转发或重定向

④WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Filter,并在卸载之前调用Filter的destroy()方法,该方法在Filter的生命周期中仅执行一次

2.FilterConfig 接口

类似于ServletConfig接口,由容器实现

ServletConfig对象中封装了ServletContext 对象和 Filter 的配置参数信息,并将其作为参数传入Filter对象的init()方法中

3.FilterChain接口

代表当前 Filter 链的对象,由容器实现,并将其实例作为参数传入过滤器对象的doFilter()方法中

在doFilter()方法,通过chain.doFilter(request,response),使过滤器链中的下一个过滤器被调用。若为最后一个过滤器,则调用目标资源

三.Filter的注册与设置

定义完Filter类后,需要在web.xml中注册和映射Filter如下:

  <!-- Filter注册 -->
  <filter>
    <filter-name>testFilter</filter-name>
    <filter-class>com.milan.filter.TestFilter</filter-class>
  </filter>

  <!-- Filter映射 -->
  <filter-mapping>
    <filter-name>testFilter</filter-name>
    <url-pattern>/index.jsp</url-pattern>
  </filter-mapping

1.Filter注册

在注册Filter时,可以用<init-param>标签为过滤器指定初始化参数,在过滤器中,可以使用FilterConfig接口对象来访问初始化参数

2.Filter映射

Filter映射:用<filter-mapping>设置一个 Filter 所负责拦截的资源,其拦截的资源有两种:资源访问的请求路径(<url-pattern>)和

Servlet 名称(<servlet-name>)

<filter-mapping>还有一个<dispatcher>标签,用于指定过滤器所拦截的资源被 Servlet 容器调用的方式,可以是REQUEST(默认),

INCLUDE,FORWARD和ERROR之一,并且可以设置多个<dispatcher> 子元素用来指定 Filter 对资源的多种调用方式进行拦截,如下:

 <!-- Filter映射 -->
  <filter-mapping>
    <filter-name>testFilter</filter-name>
    <url-pattern>/index.jsp</url-pattern>
    <dispatcher>REQUEST</dispatcher><!-- 表示当用户直接访问index.jsp时拦截 -->
    <dispatcher>FORWARD</dispatcher><!-- 表示当用户请求被转发index.jsp时拦截 -->
  </filter-mapping>

  设置了<dispatcher> ,表示拦截器只拦截以指定方式访问资源的请求与响应

    REQUEST:用户直接访问页面

    INCLUDE:目标资源是通过RequestDispatcher的include()方法访问

    FORWARD:目标资源是通过RequestDispatcher的forward()方法访问

    ERROR:目标资源是通过声明式异常处理机制调用时

在同一个 web.xml 文件中可以为同一个 Filter 设置多个映射

时间: 2024-08-09 18:24:37

Filter--过滤器学习笔记的相关文章

CSS中filter滤镜学习笔记

1.CSS静态滤镜样式 (filter)(只有IE4.0以上支持)  CSS静态滤镜样式的使用方法:{ filter : filtername( parameters1, parameters2, ...) } Filter样式 简要说明 支持参数 alpha 设置图片或文字的不透明度 opacity.finishOpacity.style.startX.startY.finishX.finishY.add.direction.strength blur 在指定的方向和位置上产生动感模糊效果 a

javaweb学习总结——Filter(过滤器)学习

一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过F

javaWeb学习总结(10)- Filter(过滤器)学习

一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有 web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过

Filter(过滤器)学习

Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet,静态图片文件或静态html文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过Filter技

javaweb学习总结(四十二)——Filter(过滤器)学习

一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过F

javaWeb学习总结(10)- Filter(过滤器)学习(2)

在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可以使用Decorator(装饰器)模式对request.response对象进行包装,再把包装对象传给目标资源,从而实现一些特殊需求. 一.Decorator设计模式 1.1.Decorator设计模式介绍 当某个对象的方法不适应业务需求时,通常有2种方式可以对方法进行增强: 编写子类,覆盖需增强的方法. 使用Decorator设计模式对方法进行增强. 在阎宏博士的<JAVA与模式>一书中开头是这样

Vue过滤器学习笔记(不定期更新)~~

1.json 过滤器 1 {{exp | json 4}} 将表达式exp转换为json字符串,本质上是JSON.stringify(),后面接收一个Number类型的参数,用于决定转化后的JSON字符串的缩进距离,不输默认是2

Filter(过滤器) 学习①

1. Filter 简介 Filter 的基本功能是对 Servlet 容器调用Servlet 的过程进行拦截,从而在Servlet 进行响应处理的前后实现一些特殊的功能. 在Servlet API 中定义了三个接口来供开发人员编写Filter 程序: Filter, FilterChain, FilterConfig Filter 程序是一个实现了Filter 接口的Java 类, 与Servlet 程序相似, 它由Servlet 容器进行调用和执行 Filter 程序需要在web.xml 文

Filterpost请求中文字符编码的过滤器 --学习笔记

java代码: import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Lo

[原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------