J2EE探索者: 使用Java Servlets 2.4来执行过滤 - 编程入门网
onse response, FilterChain chain )
throws IOException, ServletException {
Date startTime, endTime;
double totalTime;
startTime = new Date();
// Forward the request to the next resource in the chain
chain.doFilter(request, wrapper);
// -- Process the response -- \\
// Calculate the difference between the start time and end time
endTime = new Date();
totalTime = endTime.getTime() - startTime.getTime();
totalTime = totalTime / 1000; //Convert from milliseconds to seconds
StringWriter sw = new StringWriter();
PrintWriter writer = new PrintWriter(sw);
writer.println();
writer.println("===============");
writer.println("Total elapsed time is: " + totalTime + " seconds." );
writer.println("===============");
// Log the resulting string
writer.flush();
filterConfig.getServletContext().
log(sw.getBuffer().toString());
}
}
这个过滤器的生命周期很简单,不管怎样,我们还是研究一下它吧: J2EE探索者: 使用Java Servlets 2.4来执行过滤(3)时间:2011-04-11 IBM Kyle Gabhart初始化 当容器第一次加载该过滤器时, init() 方法将被调用。该类在这个方法中包含了一个 指向 FilterConfig 对象的引用。我们的过滤器实际上并不需要这样做,因为其中没有使 用初始化信息,这里只是出于演示的目的。 过滤 过滤器的大多数时间都消耗在这里。 doFilter() 方法被容器调用,同时传入分别指向 这个请求/响应链中的 ServletRequest 、 ServletResponse 和 FilterChain 对象的引用 。然后过滤器就有机会处理请求,将处理任务传递给链中的下一个资源(通过调用 FilterChain 对象引用上的 doFilter() 方法),之后在处理控制权返回该过滤器时处理 响应。 析构 容器紧跟在垃圾收集之前调用 destroy() 方法,以便能够执行任何必需的清理代码。 2. 配置 Servlet 过滤器 过滤器通过 web.xml 文件中的两个 XML 标签来声明。 <filter> 标签定义过滤 器的名称,并且声明实现类和 init() 参数。 <filter-mapping> 标签将过滤器与 servlet 或 URL 模式相关联。 清单 2 摘自一个 web.xml 文件,它展示了如何声明过滤器的包含关系: 清单 2. 在 web.xml 中声明一个过滤器
上面的代码示例声明了一个过滤器("Page Request Timer"),并把它映射 到一个 servlet("Main Servlet")。然后为该 servlet 定义了一个映射,以 便把每个请求(由通配符指定)都发送到该 servlet。这是控制器组件的典型映射声明。 您应该注意这些声明的顺序 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |