1. 使用Filter的一般流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。
2. 创建Fileter:
package com.huey.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* @version 2013-08-15
* @author Huey2672
* 计时器过滤器,用于计算某次请求所用的时间
*
* 过滤器需要实现javax.servlet.Filter接口
*/
public class TimerFilter implements Filter {
// FilterConfig可用于访问Filter的配置信息
private FilterConfig config;
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
public void destroy() {
this.config = null;
}
/**
* 执行过滤处理
* @param request
* @param response
* @param chain
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("开始过滤...");
long star = System.currentTimeMillis();
// 在chain.doFilter方法调用之前,进行预处理
// 在chain.doFilter方法调用之后,进行后处理
chain.doFilter(request, response);
long end = System.currentTimeMillis();
System.out.println("结束过滤...");
System.out.println("一共执行了" + (end - star) + "毫秒。");
}
}
3. 在web.xml中配置Fileter(也可以用Annotation@WebFilter配置):
<!-- 配置Filter -->
<filter>
<filter-name>timerFilter</filter-name>
<filter-class>com.huey.filter.TimerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>timerFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>