servlet和JSP过滤器Filter(30) 1)定义初始化参数。使用web.XML中的filter的init-param子元素以及param-nam和param-value子元素,如下所示。 <filter> <filter-name>SomeFilter</filter-name> <filter-class>somePackage.SomeFilterClass</filter-class> <init-param> <param-name>param1</param-name> <param-value>value1</param-value> </init-param> <init-param> <param-name>param2</param-name> <param-value>value2</param-value> </init-param> </filter>2)读初始化参数。从过滤器的inti方法中调用FilterConfig的getInitParameter方法。如下所示。 public void init(FilterConfig config) throws ServletException { String val1 = config.getInitParameter("param1"); String val2 = config.getInitParameter("param2"); ... }3)分析初始化参数。就像servlet和JSP的初始化参数一样,每个过滤器的初始化都是String类型的。因此,如果想要其他类型的值,必须对它进行转换。例如,可用Integer.parseInt将String“7”转换为int 7。在分析时,别忘了检查缺少的和不良的数据。缺少初始化参数将导致从getInitParameter返回null。即使这些参数存在,也一个来考虑到部署人员不正确地对其值进行格式化的可能性。例如,在转换String类型的值为int类型的值时,应该将Integer.parseInt调用封在try/catch中,这个块捕捉NumberFormatException。这种办法彻底地处理了null和格式化不正确的值。6. 例子:访问时的过滤器第4节的LogFilter,每当相关的servlet或JSP页面被访问时,就在日志文件中打印一个项。假如想修改它,使它只注意不寻常时刻出现的访问。因为“不寻常”要视具体情况而定,servlet应该提供不寻常时间范围的缺省值,并允许部署人员通过初始化参数来重载这些值。为了完成这种功能,相应的过滤器应该具有下面的内容: