
第8章Filter和Listener·Filter概述·Filter开发·Filter的链式调用。Filter的应用
第8章 Filter和Listener • Filter概述 • Filter开发 • Filter的链式调用 • Filter的应用

Filter概述8.1巨点击查看本小节知识架构Filter开发8.2一点击查看本小节知识架构Filter的链式调用8.3Filter的应用8.4-点击查看本小节知识架构
Filter概述 Filter开发 ☞点击查看本小节知识架构 Filter的链式调用 Filter的应用 ☞点击查看本小节知识架构 ☞点击查看本小节知识架构

学习目标理解Filter的概掌握Filter的工作念原理掌握理解掌握掌握Filter常用的掌握Filter的创建及API的使用配置
理解Filter的概 念 1 掌握Filter常用的 4 API的使用 掌握Filter的工作 2 原理 掌握 3 Filter的创建及 配置 学习目标

8.1Filter概述返回目录Filter简介8.1.1Filter相关API8.1.2.....Filter的生命周期8.1.3
8.1 Filter概述 8.1.1 Filter简介 返回目录 8.1.2 Filter相关API 8.1.3 Filter的生命周期

8.1Filter概述8.1.1Filter简介Filter被称作过滤器,当用户访问Web资源时,它能够对服务器调用Web资源的过程进行拦截,从而实现一些特定的功能,比如设置字符编码、敏感词过滤等。一个Filter就是一个运行在服务器中的特殊Java类,当用户的请求到达目标Web资源之前,Filter可以检查ServletRequest对象,修改请求头和请求正文的内容,或者对请求进行预处理。当执行结果响应到客户端之前,Filter可以检查ServletResponse对象,修改响应头和响应正文。Filter的拦截过程如图所示。请求Web资源客服过滤器JSP中户端务FilterServlet器HTML响应图中展示了Filter的拦截过程,具体来讲,Filter的拦截过程可进一步细分为如下几个步骤
8.1 Filter概述 8.1.1 Filter简介 • Filter被称作过滤器,当用户访问Web资源时,它能够对服务器调用Web资源的过程进行拦截,从而 实现一些特定的功能,比如设置字符编码、敏感词过滤等。 • 一个Filter就是一个运行在服务器中的特殊Java类,当用户的请求到达目标Web资源之前,Filter可以 检查ServletRequest对象,修改请求头和请求正文的内容,或者对请求进行预处理。当执行结果响应 到客户端之前,Filter可以检查ServletResponse对象,修改响应头和响应正文。Filter的拦截过程如 图所示。 • 图中展示了Filter的拦截过程,具体来讲,Filter的拦截过程可进一步细分为如下几个步骤

8.1Filter概述8.1.1Filter简介(1)当客户端发送请求时,服务器判断请求的资源是否匹配有相应的过滤器,如果有,服务器将请求交给过滤器处理。:(2)过滤器可以修改请求信息或对请求进行预处理,然后将请求直接返回或转发给目标资源。:(3)如果请求被转发给目标资源,则由目标资源对请求进行处理后做出响应。·(4)响应被转发给过滤器。·(5)过滤器可根据业务需要对响应的内容进行修改:(6)服务器将响应内容发送给客户端
8.1 Filter概述 • (1)当客户端发送请求时,服务器判断请求的资源是否匹配有相应的过滤器,如果有,服务器将请 求交给过滤器处理。 • (2)过滤器可以修改请求信息或对请求进行预处理,然后将请求直接返回或转发给目标资源。 • (3)如果请求被转发给目标资源,则由目标资源对请求进行处理后做出响应。 • (4)响应被转发给过滤器。 • (5)过滤器可根据业务需要对响应的内容进行修改。 • (6)服务器将响应内容发送给客户端。 8.1.1 Filter简介

8.1Filter概述8.1.1Filter简介,在Web开发中,不同的Web资源中的相同操作可以放到同一个Filter中来完成,当这些Web资源被访问时,对应的Filter会帮助它们实现重复的功能。这样一来,相关Web资源中的重复代码减少,程序的性能提高
8.1 Filter概述 • 在Web开发中,不同的Web资源中的相同操作可以放到同一个Filter中来完成,当这些Web资源被 访问时,对应的Filter会帮助它们实现重复的功能。这样一来,相关Web资源中的重复代码减少,程 序的性能提高。 8.1.1 Filter简介

8.1Filter概述8.1.2Filter相关API1.Filter接口·Filter接口位于iavax.servlet包中,它定义了服务器与Filter程序交互时遵循的协议。所有Filter类必须先实现Filter接口,然后才能被服务器识别,进而实现过滤器的功能。Filter接口共提供了三种方法,方法说明具体如表所示。Filter的初始化方法。服务器创建好Filter对象之后,会调用该方法来void init(FilterConfig config)初始化Filter对象。init(方法中有一个类型为FilterConfig的参数,服务器通过这个参数向Filter传遗配置信息Filter的功能实现方法。当用户请求经过时,服务器调用该方法对请void doFilter(ServletRequest req,求和响应进行处理。该方法由服务器传入三个参数对象,分别是ServletResponse res,ServletRequest对象,ServletResponse对象和FilterChain对象,其中FilterChain chain)ServletRequest对象和ServletResponse对象分别才装了请求信息和响应信息,FilterChain对象用于将请求交给下一个Filter或目标资源Filter的销嫂方法。该方法在Filter生命周期结束前由服务器调用,可void destroyO以释放打开的资源·在实际开发中,一般通过实现Filter接口的形式编写Filter程序
8.1 Filter概述 8.1.2 Filter相关API 1. Filter接口 • Filter接口位于javax.servlet包中,它定义了服务器与Filter程序交互时遵循的协议。所有Filter类必 须先实现Filter接口,然后才能被服务器识别,进而实现过滤器的功能。Filter接口共提供了三种方法, 具体如表所示。 方法 说明 void init(FilterConfig config) Filter 的初始化方法。服务器创建好 Filter 对象之后,会调用该方法来 初始化 Filter 对象。init()方法中有一个类型为 FilterConfig 的参数,服 务器通过这个参数向 Filter 传递配置信息 void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) Filter 的功能实现方法。当用户请求经过时,服务器调用该方法对请 求和响应进行处理。该方法由服务器传入三个参数对象,分别是 ServletRequest 对象、ServletResponse 对象和 FilterChain 对象,其中, ServletRequest 对象和 ServletResponse 对象分别封装了请求信息和响 应信息,FilterChain 对象用于将请求交给下一个 Filter 或目标资源 void destroy() Filter 的销毁方法。该方法在 Filter 生命周期结束前由服务器调用,可 以释放打开的资源 • 在实际开发中,一般通过实现Filter接口的形式编写Filter程序

8.1Filter概述8.1.2Filter相关API2.FilterConfig接口:FilterConfig接口用于封装Filter程序的配置信息,在Filter初始化时,服务器将FilterConfig对象作为参数传给Filter对象的初始化方法FilterConfig接口共提供了四种方法,具体如表所示。方法说明返回配置信息指定的Filter的名称StringgetFilterNameO返回配置信息中指定名称的初始化的值StringgetInitParameter(String name)返回配置信息中所有初始化参数的名称的集合EnumerationgetlnitParameterNamesO:返回FilterConfig对象中所包装的ServletContext对象ServletContextgetServletContextO
8.1 Filter概述 2. FilterConfig接口 • FilterConfig接口用于封装Filter程序的配置信息,在Filter初始化时,服务器将FilterConfig对象作为 参数传给Filter对象的初始化方法。 • FilterConfig接口共提供了四种方法,具体如表所示。 方法 说明 String getFilterName() 返回配置信息指定的 Filter 的名称 String getInitParameter(String name) 返回配置信息中指定名称的初始化的值 Enumeration getInitParameterNames(); 返回配置信息中所有初始化参数的名称的集合 ServletContext getServletContext(); 返回 FilterConfig 对象中所包装的 ServletContext 对象 8.1.2 Filter相关API

8.1Filter概述8.1.2Filter相关AP3.FilterChain接口·:FilterChain接口主要用于调用过滤器链中的下一个过滤器,如果当前过滤器是过滤器链中的最后一个,那么就直接调用目标资源。·FilterChain接口只有1个方法,具体如下所示。void doFilter(ServletRequest req,ServletRespons res)在实际应用中,FilterChain对象被作为参数传给Filter对象的doFilterO方法,如有需要,直接在doFilter(方法体中调用即可
8.1 Filter概述 3. FilterChain接口 • FilterChain接口主要用于调用过滤器链中的下一个过滤器,如果当前过滤器是过滤器链中的最后一 个,那么就直接调用目标资源。 • FilterChain接口只有1个方法,具体如下所示。 void doFilter(ServletRequest req,ServletRespons res) • 在实际应用中,FilterChain对象被作为参数传给Filter对象的doFilter()方法,如有需要,直接在 doFilter()方法体中调用即可。 8.1.2 Filter相关API