servlet过滤器的概念
所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。这个接口含有3个过滤器类必须实现的方法:
•Servlet过滤器是在Java Servlet规范2.3中定义的,它能够对Servlet容器的请求和响应对象进行检查和修改。
•Servlet过滤器本身并不生成请求和响应对象,它只提供过滤作用。
•Servlet过滤器能够在Servlet被调用之前检查Request对象,修改Request Header和Request内容;
•在Servlet被调用之后检查Response对象,修改Response Header和Response内容。Servlet过滤器负责过滤的Web组件可以是Servlet、JSP或HTML文件。
servlet过滤器过滤流程
Filter接口
所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。这个接口含有3个过滤器类必须实现的方法:
–init(FilterConfig)):这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取web.xml 文件中Servlet过滤器的初始化参数。与servlet串联的servlet过滤器过滤流程图
–doFilter(ServletRequest, ServletResponse,FilterChain):客户请求访问与过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter。
–destroy():Servlet容器在销毁过滤器实例前调用该方法,在这个方法中可以释放Servlet过滤器占用的资源。
当把servlet过滤器写好之后,还有最后一个步骤,在部署描述符web.xml中配置<filter>。
<filter>
<filter-name>TestFilter</filter-name>
<!-- 过滤的处理类 -->
<filter-class>myPackage.TestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>TestFilter</filter-name>
<!-- 要过滤的目标 -->
<url-pattern>/TestFilter</url-pattern>
</filter-mapping>
注意:servlet过滤器在web应用启动的时候就会初始化并调用init()方法,只要有一个servlet过滤器初始化失败,web应用就不能启动成功。