Filter类
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class LogFilter implements Filter{
private FilterConfig config;
public void destroy() {
this.config=null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//下面代码用语对用户请求做预处理
//获取ServletContext对象,用于记录日记
ServletContext context=this.config.getServletContext();
long before=System.currentTimeMillis();
System.out.println("开始过滤。。。。。");
//将请求转换为 HttpServletRequest 请求
HttpServletRequest hrequest=(HttpServletRequest)request;
System.out.println("Filter 已经截获用户的请求 ,用户的请求地址为:"+hrequest.getServletPath());
//Filter只是链式处理 ,请求依然放行到 目的地址
chain.doFilter(request, response);
//------------------下面代码用语对服务器响应执行后处理-------
long after=System.currentTimeMillis();
//输出提示信息
System.out.println("过滤结束");
//输出提示信息
System.out.println("请求被定位到 "+hrequest.getRequestURL() +"所花的时间为: "+ (after-before));
}
public void init(FilterConfig filterConfig) throws ServletException {
this.config=filterConfig;
}
}
web.xml配置
<filter>
<filter-name>log</filter-name>
<filter-class>LogFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样之后随便访问一个JSp文件们就会看到如下效果