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.Filter.class javax.servlet.FilterConfig.class javax.servlet.ServletRequestAttributeListener.class javax.servlet.ServletRequestAttributeEvent.class javax.servlet.GenericServlet.class ...
javax.servlet的jar包,解决找不到javax.servlet.*等问题的!欢迎下载!!
本文主要介绍解决cannot be cast to javax.servlet.Filter 报错的问题,这里提供解决办法,有编程的朋友遇到此错误可以参考下
javax.servlet.Filter javax.servlet.Servlet javax.servlet.FilterChain javax.servlet.http.Cookie javax.servlet.FilterConfig javax.servlet.ServletConfig javax.servlet.GenericServlet javax.servlet....
Filter - interface javax.servlet.Filter. A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or ...
< filter>< filter>LoggingFilter</ filter>< filter>javax.servlet.filter.logging.LoggingFilter</ filter></ filter>< filter>< filter>LoggingFilter</ filter>< url>/*</ url></ filter> 或javax.servlet.
import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet....
import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet....
javaweb项目新建servlet会报错,提示没有HTTPServlet类,这是由于 ...并且import javax.servlet.annotation.WebFilter 不能引入,找不到类,是由于这个类只有在servlet-api 3.0之后的包才有。tomcat对应的版本要7.0以上
<filter-class>cn.itcast.cc.filter.CharacterEncodingFilter</filter-class> <param-name>encoding <param-value>UTF-8 </filter> ``` 例如,我们可以编写一个用于统一 WEB 字符编码的 Filter: ```java ...
import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet....
74 <filter-class>com.tarena.dingdang.filter.AntiSqlInjectionfilter</filter-class> 75 </filter> 76 <filter-mapping> 77 <filter-name>antiSqlInjection</filter-name> 78 <url-pattern>/*...
创建第一个 Filter,将其命名为 Filter01,扩展 javax.servlet.Filter 类并实现 doFilter() 方法。在此方法中,您可以编写逻辑,例如打印 "Filter01 before",并在处理完请求后打印 "Filter01 after"。 创建第二个 ...
1、Filter接口:所有的Servlet过滤器类都必须实现javax.servlet.Filter接口 a、init(FilterConfig): 这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取...
<filter></filter> 过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联。 <filter-mapping></filter-mapping> 一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面...
JSP 开发中过滤器filter设置编码格式的实现方法 我们知道为了避免提交数据的乱码问题,需要在每次使用请求之前...import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig;
<filter></filter> 过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联。<filter-mapping></filter-mapping> 一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相...
本文实例为大家分享了jsp实现登录验证的过滤器,供大家参考,具体内容如下 1.新建一个Dynamic Web Project项目,里面新建1...import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.Fi
import javax.servlet.*; import javax.servlet.http.*; import java.io.IOException; /** * Created by GuoFeng on 2016/2/21. TODO 登陆验证拦截类 拦截所有html请求 进行登陆验证 */ public class LoginFilter...