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