Java之过滤器(Filter)
1. Filter定义:
WEB开发人员通过Filter技术,对web服务器管理的所有的web资源:例如JSP、Servlet、静态图片或者静态html文件等进 行拦截,从而实现一些特殊的功能,例如实现URL级别的权限访问控制、过滤过敏词汇、压缩响应信息等。
对于Web应用程序来说,过滤器是处于Web容器内的,对请求信息和响应信息进行过滤的一种组件。
2. Filter的作用:
利用它可以把多个Servlet的相同逻辑抽象到一起来处理,(Struts2框架就是对Servlet和Filter的封装)。
过滤器是一种很重要的设计模式,不仅仅应用在Web开发中,其他一些开发领域也会使用过滤器模式,它可以
在不侵入原代码的基础上为他们提供一些功能。
3. Filter的开发步骤:
(1)过滤器需要实现javax.servlet.Filter接口,该接口的doFilter()方法是业务代码的核心代码区。
//过滤器需要实现Filter接口
public class MyFilter implements Filter{
//过滤器的业务逻辑方法
Public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//达到目标资源前的代码
………
//该方法的调用会将请求转发给下一个过滤器或目标资源
chain.doFilter (request, response);
//目标资源响应以后的代码
…
}
public void init (FilterConfig filterConfig()) throws ServletException{
//初始化的代码
}
public void destroy (){
}
}
(2)在web.xml中配置,Web容器才能将过滤器与目标资源进行关联。
<filter>
<filter-name>MyFilter</filter-name> <!—Filter的名字-->
<filter-class>
Org.filter.MyFilter <!—Filter的完整类名- - >
</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name> <!- - Filter的名字- - >
<url-pattern>/*Servlet</url-pattern> <!- - Filter的URL匹配方式- - >
</filter-mapping>
经过以上的代码配置以后,凡是请求以“Servlet”结尾的URL资源的时候,该过滤器都会起到过滤作用。