`
gotothework
  • 浏览: 82723 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
最近访客 更多访客>>
社区版块
存档分类
最新评论

Servlet的Filter过滤器

阅读更多
过滤器是请求和响应之间的一种WEB组件,它驻留在服务器端,用来截取客户端与资源之间的请求,并对这些信息进行“过滤”。

Servlet容器对部署描述符中声明的每一个过滤器只会创建一个实例。与Servlet类似,容器将在同一个过滤器实例上运行多个线程来同时为多个请求服务,因此开发过滤器时要注意线程安全问题。

当Web容器接受到一个对资源的请求时,它将判断是否有过滤器与这个资源相关联,如果有那么容器将把请求交给过滤器进行处理,在过滤器中可以改变请求的内容,或重新设置请求的报头信息,然后将请求发送给目标资源,当目标资源对请求做出响应时,容器同样会将响应转发给过滤器,在过滤器中可以对响应的内容进行过滤,从上面的过程我们可以看出,客户端和目标资源不需要知道过滤器的存在,对于客户端来说是透明的。

过滤器位于javax.servlet包中,有3个主要方法:
1.init(FilterConfig config)
  Web容器调用方法来初始化过滤器,容器在调用该方法时,向过滤器传递FilterConfig对象,FilterConfig用法和ServletConfig类似。利用FilterConfig对象可以得到ServletContext对象,以及在部署描述符中配置的过滤器的初始化参数。

2.doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
  doFilter()方法类似Servlet接口的service()方法。当客户端请求目标资源的时候,容器会调用与这个目标资源想关联的过滤器的doFilter()方法。在这个方法中,可以对请求和响应进行处理,实现过滤器的功能。在特定的操作完成后,可以调用chain.doFilter()方法将请求传给下一个过滤器(或目标资源),也可以直接向客户端返回响应信息,或利用RequestDispatcher的forward()和include()方法,以及sendRedirect()方法转发。
但是要注意,这个方法的请求响应参数的类型是ServletRequest和ServletResponse,也就是说过滤器的使用不依赖具体的协议。

3.destroy()
  Web容器调用该方法只是过滤器的声明周期结束。

下面看下过滤器在Web.xml中的声明:
<filter>
    <filter-name>setEncoding</filter-name>
    <filter-class>com.test.CharFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>setEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Filter的声明和Servlet的类似,从上面的简单的配置中就可以看到,不做过多说明,主要说下<url-pattern>元素中的参数:
1.REQUEST,当用户直接访问页面时,Web容器将会调用过滤器,如果目标资源是通过RequestDispatcher的includ()或forward()方法访问时,那么不会调用这个过滤器。
2.FORWARD,如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外过滤器不会被调用。
3.INCLUDE,如果目标资源是通过RequestDispatcher的include()方法访问时,调用过滤器,其他不会调用。
4.ERROR,如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用,除此之外不会被调用。
5./*,所有请求都会调用。

过滤器应用的很广,特别是在Spring中,AOP,Acegi都应用到了过滤器的技术,所以,我们可以看出,只有很好的掌握了Servlet的各种技术,我们在后期的学习中才能更加的得心应手。在这里,我只是简单的介绍了过滤器基础的东西,更加高级的,希望与大家一起学习讨论。
2
1
分享到:
评论

相关推荐

    Servlet过滤器的简单使用源码+文档

    在"006ServletFilter"这个文件中,可能包含了以下内容: - `web.xml`配置文件:定义了过滤器的映射规则,指明哪些请求路径需要被过滤器处理。 - 自定义过滤器类:实现了`Filter`接口,包含上述的三个方法。 - 登录...

    servlet过滤器实例经典过滤器

    根据Java Servlet规范,过滤器(Filter)是一个实现了javax.servlet.Filter接口的类,它能够在请求处理链中插入额外的逻辑。通过在web.xml文件中定义过滤器,我们可以指定哪些请求路径需要被过滤,并且可以设置多个...

    servlet 过滤器做的简单登陆demo

    Servlet过滤器遵循`Filter`接口,通过在web.xml配置文件中声明过滤器,可以指定哪些请求需要经过过滤。当用户发起请求时,过滤器会先于目标Servlet执行,可以用来进行预处理,如认证、编码转换、日志记录等。 2. *...

    Servlet编码过滤器的实现

    编码过滤器的实现通常基于`javax.servlet.Filter`接口。下面,我们来看一个简单的`EncodingFilter`的实现: ```java import javax.servlet.*; import java.io.IOException; public class EncodingFilter ...

    基于servlet的过滤器

    根据Java Servlet规范,过滤器(Filter)是通过实现`javax.servlet.Filter`接口来创建的。这个接口定义了三个关键方法:`init()`, `doFilter()`, 和 `destroy()`。`init()`在过滤器实例被创建并准备服务时调用,`...

    servlet过滤器技术实例,

    Servlet过滤器遵循Java Servlet规范,通过实现`javax.servlet.Filter`接口来创建自定义过滤器。它能够对HTTP请求和响应进行预处理和后处理,例如:数据验证、字符编码转换、日志记录、权限控制等。过滤器链的概念...

    java中servlet文字过滤器

    在某些场景下,我们可能需要对HTTP响应的内容进行特定的处理,比如过滤掉某些字符或者处理编码问题,这时就可以使用Servlet Filter(过滤器)。本文将深入探讨"java中servlet文字过滤器"的概念、实现及应用场景。 #...

    Servlet过滤器小实例

    因此,使用Servlet过滤器(Filter)来处理这类问题成为了一种更加优雅的解决方案。 #### 实例目标 本实例的目标是设计并实现一个简单的Servlet过滤器,用于检查用户的登录状态。具体来说,当用户通过正常的登录...

    Servlet之过滤器

    过滤器(Filter)允许开发者在请求被实际处理到Servlet之前或之后进行拦截,执行一些预处理或后处理任务。本篇文章将深入探讨Servlet过滤器的使用,包括验证非法文字、验证登录以及统一编码等实例。 首先,我们来...

    Java servlet过滤器配置详解

    同时,也可以根据需要配置多个`filter-mapping`,指定过滤器只对特定的URL或Servlet生效。 总结来说,Java Servlet过滤器是Web应用中的重要工具,它们允许我们在请求处理流程中插入自定义逻辑,比如处理编码、进行...

    servlet过滤器实现(Eclipse工程)

    Servlet过滤器是Servlet API的一部分,定义在`javax.servlet.Filter`接口中。它们的主要作用是拦截HTTP请求,对请求或响应进行预处理和后处理,比如登录检查、GZIP压缩、字符编码转换等。过滤器可以应用于整个Web...

    servlet过滤器Filter入门

    Servlet 过滤器 Filter 入门 Servlet 过滤器 Filter 是 Servlet API 中一个非常重要的功能,它提供了一种标准化的方法来定义过滤器,能够检查进入资源的请求信息,并作出相应的选择。下面是 Servlet 过滤器 Filter ...

    servlet过滤器详解

    - **接口**:所有Servlet过滤器需实现`javax.servlet.Filter`接口,该接口包含三个核心方法: - `init(FilterConfig config)`:初始化过滤器,读取配置信息。 - `doFilter(ServletRequest request, Servlet...

    servlet 过滤器例子 filter

    本示例“servlet过滤器例子filter”将深入讲解如何使用Servlet过滤器以及其在实际应用中的作用。 首先,我们来了解什么是Servlet过滤器。Servlet过滤器(Filter)是Servlet API的一部分,定义在`javax.servlet....

    servlet+jsp实现过滤器 防止用户未登录访问

    使用servlet和jsp技术时,我们可以通过过滤器(Filter)来实现这样的安全防护机制。过滤器是一种服务器端的组件,它能够对请求和响应进行拦截,执行一些预处理或者后处理操作。它常用于进行登录验证、权限检查、字符...

    Servlet过滤器使用

    1、Filter接口:所有的Servlet过滤器类都必须实现javax.servlet.Filter接口 a、init(FilterConfig): 这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取...

    jsp+servlet登录验证过滤器

    在这个项目中,“jsp+servlet登录验证过滤器”涉及了用户登录验证的过程,以及使用过滤器(Filter)来实现这一功能。下面将详细介绍这个主题中的相关知识点。 1. **JSP**:JSP是一种服务器端的技术,允许开发者在...

    servlet过滤器验证用户登录

    在IT领域,特别是Java Web开发中,Servlet过滤器(Filter)是实现用户权限管理、登录状态验证等关键功能的重要机制之一。本文将深入探讨如何利用Servlet过滤器来验证用户是否已登录,以及如何配置过滤器以针对特定的...

    servlet过滤器

    Servlet过滤器遵循Servlet规范中的Filter接口,该接口定义了三个关键方法:`doFilter()`, `init()` 和 `destroy()`。`doFilter()` 方法是核心,它在每次请求经过过滤器时被调用。`init()` 在过滤器初始化时执行,而`...

    Servlet3.0使用注解标注过滤器(Filter)

    在这个例子中,`Servlet3Filter` 类被 `@WebFilter` 注解标记,其 `filterName` 属性设置为 "Servlet3Filter",并且 `urlPatterns` 属性设置为 "/*",意味着这个过滤器将拦截所有进入应用程序的请求。 #### 六、`@...

Global site tag (gtag.js) - Google Analytics