Filters是在请求资源(Servlet或静态内容)或者响应资源时,也可以在请求和响应同时进行时,执行过滤任务。
Filters通过doFilter方法来执行过滤的。每个过滤都要访问一个FilterConfig对象,该对象包含了初始参数,要引用的ServletContext对
象。例如,在调入资源时,执行过滤。
Filters是被配置在web.xml配置文件中的。
一些需要过滤器的情况:
(1)认证Filter
(2)日志和审核Filter
(3)图片转换Filter
(4)数据压缩Filter
(5)密码Filter
(6)令牌Filter
(7)触发资源访问事件的Filter
(8)XSL/TFilter
(9)媒体类型链Filter
方法列表:
(1)destory():当Filter从服务中去除时,由servletcontainer来调用。在Filter的doFilter()的所有线程退出时或在一个时间周期
结束后该方法仅会被调用一次。在webcontainer调用过该方法后,该filte的r实例将不会再调用doFilter()。
该方法提供给Filter一个清除任意资源的时机,这些资源可能是被保存的(例如,内存、文件句柄、线程)或确保持久状态是和在内存Filter
的状态是同步的。
(2)doFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain):Filter的doFilter方法是
在每次一个请求或响应时被调用,来处理过滤链最后的客户端请求资源。FilterChain被传入到此方法中,允许过滤器将request,response
传递到过滤链的下一个过滤。
这个方法的典型设计应该是遵循以下的模式:
<1>检测request
<2>通过特定过滤器对请求数据的内容或头信息进行过滤,并重新封装成request对象
<3>通过特定过滤器对响应数据的内容或头信息进行过滤,并重新封装成response对象
<4>通过chian对象调用过滤链的下一个过滤器,或不传递request/response到过滤链的下一个过滤器从而阻挡请求处理。
<5>在过滤链的下一个过滤器被调用后,直接设置头信息到response对象
(3)init(FilterConfigconfig):当Filter被放入到服务中时,由servletcontainer来调用。在实例化Filter后,init
会被调用一次。
有两种情况,容器不会将将Filter放入服务中:
<1>抛出ServletException时
<2>在容器规定的时间内没有返回实例
分享到:
相关推荐
当你遇到“找不到javax.servlet.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. **Java Servlet简介** Java Servlet是Java平台上的一个标准,用于扩展服务器...
javax.servlet.Filter.class javax.servlet.FilterConfig.class javax.servlet.ServletRequestAttributeListener.class javax.servlet.ServletRequestAttributeEvent.class javax.servlet.GenericServlet.class ...
开发者可以通过实现`javax.servlet.Filter`接口来创建过滤器,并通过`web.xml`部署描述符配置过滤规则。 Listener则是在特定事件发生时被调用的类,比如session创建、销毁或请求初始化等。它们通过实现不同的监听器...
自Servlet 3.0开始,Servlet API引入了一些新的特性,比如注解驱动的Servlet和Filter注册,异步处理能力等。如果需要这些新特性,需要确保使用的`javax.servlet.jar`对应的是Servlet 3.0及更高版本。 7. **JAR包...
它包含了一些基本的Servlet和Filter接口,如`Servlet`, `GenericServlet`, `HttpServlet`, `Filter`, `ServletConfig`等。虽然3.1版本提供了更多高级功能,但2.5版本仍被许多老项目和不支持新规范的服务器使用。 3....
9. **Filter**: Filter是javax.servlet.filter包中的接口,用于在Servlet处理请求之前或之后进行拦截和修改。这可以用于登录验证、数据转换、日志记录等功能。多个Filter可以通过配置进行链式调用。 10. **...
6. `javax.servlet.annotation`包:包含了各种注解,比如`@WebServlet`、`@WebFilter`和`@WebListener`,使得开发者可以通过注解方式声明Servlet、过滤器和监听器,简化了web.xml配置文件的编写。 7. `javax....
例如,`javax.servlet.ServletRequest`和`javax.servlet.ServletResponse`接口分别代表了HTTP请求和响应对象,而`javax.servlet.Filter`接口则用于实现请求过滤功能,可以用于数据验证、性能优化等场景。 在Java ...
9. **Filter接口**:定义了过滤器的行为,过滤器可以在请求到达Servlet之前或之后进行处理,例如进行身份验证、数据转换等。 10. **FilterChain接口**:在过滤器链中,代表后续过滤器和最终的目标Servlet,调用`...
`javax.servlet` 包还包含了Filter和Listener接口。Filters可以在请求到达Servlet之前对其进行预处理,或在响应发送给客户端之后进行后处理。Listeners可以监听Servlet、Session和ServletContext事件,实现特定的...
【标题】"javax.servlet3.0 javax.servlet_jsp2.0源码"涉及的是Java Servlet和JSP(JavaServer Pages)技术的核心API,这两个组件是Java Web开发的基础。源码分析可以帮助我们深入理解它们的工作原理。 【描述】...
6. **Filter**:`javax.servlet.Filter`接口定义了过滤器,允许开发者在请求到达Servlet之前对其进行拦截和处理。过滤器常用于权限控制、日志记录、数据转换等场景。 7. **FilterChain**:`javax.servlet....
8. **过滤器Filter**:Servlet API还定义了Filter接口,允许在请求到达Servlet之前进行拦截和处理,比如登录检查、数据转换等。 9. **监听器Listener**:Servlet API提供了各种监听器,如SessionListener、...
1. **注解配置**:在Servlet 3.0中,开发者可以直接在类或方法上使用注解(如`@WebServlet`、`@WebFilter`和`@WebListener`)来声明Servlet、过滤器和监听器,而无需在web.xml文件中进行繁琐的手动配置。 2. **异步...
`javax.servlet-api`是一个关键的Java库,它定义了Servlet、过滤器(Filter)和监听器(Listener)等核心接口,是开发Java Servlet应用的基础。这个库通常以JAR(Java Archive)文件的形式存在,例如在提供的`javax....
在Java Web开发中,`javax.servlet.Filter`接口是Servlet规范的一部分,用于实现请求处理的过滤逻辑。当遇到“`cannot be cast to javax.servlet.Filter`”的错误时,通常意味着在程序运行过程中尝试将一个对象强制...
`javax.servlet` 是Java服务器端编程的一个重要组件,主要用于创建Web应用程序。这个API提供了一系列接口和类,使得开发者能够处理HTTP请求和响应,构建动态、交互式的Web服务。本资源包含两个版本的`javax.servlet`...
7. **Filter**: 这个接口定义了过滤器,允许你在请求到达Servlet之前对其进行拦截和处理,或者在响应离开Servlet之后进行修改。这对于实现登录检查、日志记录、性能监控等任务非常有用。 8. **FilterChain**: 过滤...
这个包包含了Servlet API中的所有类和接口,如`ServletRequest`、`ServletResponse`、`Filter`等。通过查看这些源代码,我们可以了解这些核心类和接口的实现细节,从而提高我们的编程技能和解决问题的能力。 总的来...
`javax.servlet.Filter`接口允许开发者在请求到达Servlet之前或Servlet处理完请求之后进行拦截处理。过滤器可以用于验证用户、修改请求或响应、日志记录等。 9. **FilterChain对象**: 在多个Filter中,...