学科分类
目录
Java Web

FilterConfig接口

为了获取Filter程序在web.xml文件中的配置信息,Servlet API提供了一个FilterConfig接口,该接口封装了Filter程序在web.xml中的所有注册信息,并且提供了一系列获取这些配置信息的方法,具体如表1所示。

表1 FilterConfig接口中的方法

方法声明 功能描述
String getFilterName () 例4-2 getFilterName()方法用于返回在web.xml文件中为Filter所设置的名称,也就是返回<filter-name>元素的设置值。
例4-3 ServletContext getServletContext() 例4-4 getServletContext()方法用于返回FilterConfig对象中所包装的ServletContext对象的引用。
例4-5 String getInitParameter(String name) 例4-6 getInitParameter(String name)方法用于返回在web.xml文件中为Filter所设置的某个名称的初始化参数值,如果指定名称的初始化参数不存在,则返回null。
例4-7 Enumeration getInitParameterNames() 例4-8 getInitParameterNames()方法用于返回一个Enumeration集合对象,该集合对象中包含在web.xml文件中为当前Filter设置的所有初始化参数的名称。

表1列举了FilterConfig接口中的一系列方法,为了让读者更好的掌握这些方法,接下来,以getInitParameter(String name)方法为例,通过一个案例来演示FilterConfig接口的作用,具体如例1所示。

例1 MyFilter03.java

 1  package cn.itcast.chapter04.filter;

 2  import java.io.*;

 3  import javax.servlet.*;

 4  public class MyFilter03 implements Filter {

 5    private String characterEncoding;

 6    FilterConfig fc;

 7    public void destroy() {

 8    }

 9    public void doFilter(ServletRequest request, ServletResponse response,

 10       FilterChain chain) throws IOException, ServletException {

 11     // 输出参数信息

 12     characterEncoding=fc.getInitParameter("encoding");

 13     System.out.println("encoding初始化参数的值为:"+characterEncoding);

 14     chain.doFilter(request, response);

 15   }

 16   public void init(FilterConfig fConfig) throws ServletException {

 17     // 获取FilterConfig对象

 18     this.fc = fConfig;

 19   }

 20 }

接下来在web.xml文件中部署过滤器。由于Filter链中各个Filter的拦截顺序与它们在web.xml文件中<filter-mapping>元素的映射顺序一致,因此,为了防止其他Filter影响MyFilter03的拦截效果,我们将MyFilter03注册在web.xml文件最前端,具体注册代码如下:

<filter>

<filter-name>MyFilter03</filter-name>

  <filter-class>cn.itcast.chapter04.filter.MyFilter03</filter-class>

  <init-param>

    <param-name>encoding</param-name>  

    <param-value>GBK</param-value>

  </init-param>

</filter>

<filter-mapping>

  <filter-name>MyFilter03</filter-name>

  <url-pattern>/MyServlet</url-pattern>

</filter-mapping>

重新启动Tomcat服务器,在浏览器地址栏中输入http://localhost:8080/chapter04/MyServlet访问MyServlet,控制台窗口中显示的结果如图1所示。

图1 控制台窗口

从图1中可以看出,使用Filter获取到了配置文件中的初始化参数。当Tomcat服务器启动时,会加载所有的Web应用,当加载到chapter04这个Web应用时,FirstFilter就会被初始化调用init()方法,从而可以得到FilterConfig对象,然后在doFilter()方法中通过调用FilterConfig对象的getInitParameter()方法便可以获取在web.xml文件中配置的参数信息。

点击此处
隐藏目录