servlet和JSP过滤器Filter(31) 1)实现Filter接口的一个类。这个类名为LateAccessFilter,如程序清单9-9所示。这个类的init方法读取startTime和endTime初始化参数。它尝试作为init分析这些值,如果这些参数为null或未格式化为整数,这使用缺省值。然后,它将开始和结束事件、FilterConfig、ServletContext以及过滤器名存入过滤器的字段。最后,LateAccessFilter对destroy方法提供一个空体。2)在doFilter方法中过滤行为。这个方法查找当前事件,看它问是否在开始时间和结束事件给出的范围内,如果是,打印一个日志项。3)调用FilterChain的doFilter方法。在打印出报告后,此过滤器调用FilterChain的doFilter方法激活链中的下一个过滤器(如果没有更多的过滤器,则激活servlet或JSP页面)。4)对Web应用主页进行注册;定义初始化参数。首先,filter元素将名称LateAccessFilter与类moreservlets.filters.LateAccessFilter相关联。filter元素还包含两个init-param子元素:一个定义startTime参数,另一个定义endTime参数。因为将要访问filterRus主页的人是程序员,考虑反常的时间范围为上午2:00到10:00之间。最后,filter-mapping元素使用值为/index.jsp的ulr-pattern子元素,将此过滤器与Web应用主页相关联。参看程序清单9-10。5)己用激活器serlvet。这个已经在第2节介绍过,不再重复。当这个Web应用部署在一个外部服务器上且附加了日志记录过滤器后,客户机对此Web应用主页的请求将在日志文件中产生一个项,如:“WARNING: hacker6.filtersrus.com Accessed http://www.filtersrus.com/filters/index.jsp on Oct 30,2001 9:22:09 AM.”。程序清单9-9 LateAccessFilter.Javapackage moreservlets.filters;import Java.io.*;import Javax.servlet.*;import Javax.servlet.http.*;