servlet和JSP过滤器Filter(27) }4. 例子:日志记录过滤器我们来更新ReportFilter(程序清单9-2),以便消息进入日志文件而不是标准输出。为了完成这个任务,过滤器应该具有下列内容:1)实现Filter接口的一个类。这个类名为LogFilter,如程序清单9-7所示。这个类的init方法在过滤器的字段中存放FilterConfig、ServletContext和过滤器名。它对destory方法提供一个空体。2)在doFilter方法中过滤行为。这个行为和ReportFilter的行为之间有两点不同:报告放于日志文件中而不是标准输出中,报告包括过滤器的名称。3)调用FilterChain的doFilter方法。在打印出报告后,此过滤器调用FilterChain的doFilter方法激活链中的下一个过滤器(如果没有更多的过滤器,则激活servlet或JSP页面)。4)对所有URL进行注册。首先,filter元素将名称LogFilter与类moreservlets.filters.LogFilter相关联。接着,filter-mapping元素使用值为/*的url-pattern将此过滤器与Web应用中所有URL相关联。参看程序清单9-8。5)禁用激活servlet。这个操作已经在第2节介绍过,这里就不再重复了。当这个Web应用部署在一个外部服务器上且附加了日志记录过滤器后,客户机对此Web应用主页的请求将在日志文件中产生一个项,如:“audits.irs.gov tired to acces http://www.filtersrus.com/filters/index.jsp on Fri Oct 26 15:16:15 EDT 2001.(Reported by Logger.)”。程序清单9-7 LogFilter.Javapackage moreservlets.filters;import Java.io.*;import Javax.servlet.*;import Javax.servlet.http.*;import Java.util.*; // For Date class/** Simple filter that prints a report in the log file* whenever the associated servlets or JSP pages* are Accessed.*/public class LogFilter implements Filter { protected FilterConfig config;