一、过滤器是什么?
对web应用来说,过滤器就是驻留在服务器端、源数据和目的数据之间,对web请求和web响应的头属性(Header)和内容体(Body)进行操作的一种特殊的web组件。它们拦截请求和响应。
二、过滤器怎么工作的?
当web容器收到一个对资源的请求时,容器将判断是否有过滤器与这个资源有关,如果有,容器把这个请求发给过滤器进行处理,过滤器处理请求后再把请求发送给目标资源。当目标资源对请求作出响应时,响应也会被容器先转发给过滤器,在过滤器中对响应内容进行处理,然后响应被发送到客户端。
在一个web应用程序中,可以部署多个过滤器,这些过滤器组成一个过滤器链。过滤器链中的每个过滤器都有特定的操作,请求和响应在浏览器和目标资源之间按照部署描述符中声明的过滤器顺序,在过滤器之间进行传递。
在请求资源时按照过滤器的顺序依次对请求进行处理,并将请求沿过滤器链传递给下一个过滤器,直到传递到目标资源;发送响应则是按照过滤器链相反方向对响应进行处理和传递,直到把响应传到客户端为止。过滤器并不是必须把请求传送到下一个过滤器,它也可以根据处理结果直接给客户端发送响应,也可以将请求转发给另一个目标资源。
三、Filter API
与过滤器开发相关的一些接口和类
1、Filter接口
所有的过滤器在开发中都只能实现java.servlet.Filter接口。并且提供一个公开的不带参数的构造方法。接口定义了init()、doFiter()、destroy()3个方法,和servlet接口相似。
(1)public void init(FilterConfig config)throws ServletException
web容器调用init()方法,说明过滤器正在被嵌入到web容器中去。容器只在实例化过滤器时才会调用该方法一次。初始化方法必须在被调用做过滤工作前正确完成。容器为这个方法传递一个FilterConfig对象,其中包含着在部署描述符中配置的与过滤器相关的初始化参数。
(2)public void doFiter(ServletRequest req,ServletResponse res,FilterChain chain)throws IOException,ServletException
实现了过滤器对请求和响应的操作功能。每当请求和响应经过过滤器链时,容器都要调用一次该方法。FilterChain对象代表了多个过滤器形成的过滤器链。为了将请求/响应沿过滤器链继续传送,在每个过滤器的doFilter()方法中必须调用FilterChain对象的doFilter()方法。
web容器将请求对象,响应对象和过滤器的链接对象3个参数传递到该方法。在过滤器中处理的ServletRequest对象和ServletResponse对象,最终要传递到被过滤的Servlet和JSP,所以在doFilter()方法中可以通过对ServletRequest的操作在Servlet运行之前改变web请求的头信息或内容,通过对ServletResponse的操作在Servlet运行之后改变响应结果。
(3)public void destroy()
web容器调用destroy()方法表示过滤器生命周期结束,在这个方法中释放过滤器使用的资源。
2、FilterConfig接口
当容器对Filter对象进行初始化时,容器调用Filter的init(),并传入一个实现FilterConfig接口的对象。Filter可以使用该对象获得部署文件中的一些配置信息。
3、FilterChain接口
这个接口由容器实现,容器将其实例作为参数传入过滤器对象的doFilter()方法中。过滤器对象使用FilterChain对象调用过滤器链中的下一个过滤器或者调用目标资源。
FilterChain接口仅定义一个方法:public void doFilter(),该方法用于将请求/响应继续沿过滤器链向后传送给下一个过滤器。如果调用该方法的过滤器是链中最后一个,则调用目标资源。
四、开发部署一个过滤器
1、编写一个过滤器类
实现Filter接口,然后在doFilter()中写需要执行的代码。
2、部署过滤器
①声明过滤器<filter>
<filter>元素的结构如下:
②设置过滤器映射<filter-mapping>
<filter-mapping>元素结构如下:
配置如下:
相关推荐
过滤器是Java Servlet API的一部分,它允许开发者在请求到达目标Servlet或JSP之前对其进行预处理,以及在响应返回给客户端之前进行后处理。通过实现Filter接口并配置在web.xml中,我们可以对所有请求或特定请求进行...
在标题"Servlet过滤器的简单使用源码+文档"中,我们可以理解为这个压缩包包含了一个关于Servlet过滤器的基础应用示例,以及相关的源代码和文档资料。描述中提到的"实现一个登陆界面",表明了过滤器可能被用作验证...
Servlet过滤器是Java Web开发中的一个重要概念,它允许开发者在请求到达Servlet之前或者Servlet...在学习和使用servlet过滤器时,理解其工作原理和生命周期,以及如何在`web.xml`或Spring框架中配置,都是非常关键的。
这文档详细介绍了Servlet 过滤器在myeclipse的部署和运行,详细介绍了过滤器的基本概念、过滤器API、开发和配置过滤器的步骤、过滤器链请求和响应包装器.
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而过滤器(Filter)是Servlet规范的一部分,允许我们在请求处理前后插入逻辑,以实现诸如数据验证、字符编码转换、日志记录等功能。...
在这个项目中,“jsp+servlet登录验证过滤器”涉及了用户登录验证的过程,以及使用过滤器(Filter)来实现这一功能。下面将详细介绍这个主题中的相关知识点。 1. **JSP**:JSP是一种服务器端的技术,允许开发者在...
使用Servlet过滤器时应注意,尽管`Filter`、`FilterConfig`和`FilterChain`位于`javax.servlet`包下,但实际操作中涉及的请求和响应对象通常需转换为HTTP特定类型,即`HttpServletRequest`和`HttpServletResponse`,...
- 过滤器在Web应用程序中扮演着中间人角色,它可以在请求到达目标资源(如Servlet或JSP页面)之前以及响应返回给客户端之后进行拦截操作。 - 过滤器通过实现`javax.servlet.Filter`接口并覆盖其`doFilter()`方法来...
6. **过滤器和监听器** - Servlet API中还包括Filter和Listener接口,它们能增强应用的功能,比如实现登录验证、字符编码转换、会话管理等。 7. **Web容器** - 如Tomcat、Jetty等,它们提供运行Servlet和JSP的环境...
Servlet过滤器是Java Web开发中的一个重要概念,它允许开发者在请求到达Servlet之前或者响应离开Servlet之后进行拦截处理。本教程将详细介绍如何在Eclipse环境中创建并实现一个Servlet过滤器。 一、Servlet过滤器...
#### 二、解决方案:使用Servlet过滤器 Servlet过滤器是一种可以拦截请求和响应的组件,它可以在请求到达目标资源之前或响应返回客户端之前进行预处理。通过配置过滤器来统一处理字符编码问题,可以有效避免乱码的...
总结起来,这个例子展示了如何使用`Servlet`过滤器进行登录验证,以及如何利用`session`来跟踪用户状态。`session`对象允许我们在多个请求之间持久化用户数据,这对于实现登录功能至关重要。同时,过滤器提供了一种...
本文将深入探讨如何利用Servlet过滤器来验证用户是否已登录,以及如何配置过滤器以针对特定的JSP页面或目录进行权限控制。 ### Servlet过滤器简介 Servlet过滤器是一种在请求到达目标资源(如Servlet或JSP页面)...
8. **部署描述符(web.xml)**:配置Servlet、过滤器和监听器的核心文件。 **通过这套“JSP Servlet学习资料--全套PPT”,你将能够深入理解这两个技术的原理和应用,掌握它们的实战技能,为你的Java Web开发之路...
Java-servlet-jdbcMysql-filter-CRUD】是一个综合性的项目,它涵盖了Java Web开发中的多个重要技术,包括JSP(Java Server Pages)、Servlet、JDBC(Java Database Connectivity)、MySQL数据库以及Filter过滤器。...
6. **过滤器(Filter)**:允许在请求到达Servlet之前对其进行拦截和处理,如GZIP压缩、字符编码转换等。 7. **监听器(Listener)**:监听特定事件,如会话创建、销毁、上下文初始化等,可以进行相应的操作。 ### ...
而Filter(过滤器)是Servlet API的一部分,它提供了一种机制,可以在请求到达目标资源之前或之后对请求和响应进行拦截处理。Filter在处理Web请求时扮演着不可或缺的角色,比如日志记录、权限验证、内容压缩等。以下...
7. **过滤器(Filter)**:利用Filter接口拦截请求和响应,实现权限控制、日志记录等功能。 8. **监听器(Listener)**:通过实现ServletContextListener、HttpSessionListener等接口,监听Web应用的生命周期事件和...
6. **Web应用部署**:`web.xml`是Web应用程序的部署描述符,它定义了Servlet的映射、过滤器、监听器等配置,是Spring Boot等现代框架中的`application.properties`或`application.yml`的前身。`src`目录通常包含Java...