FilterConfig接口及其使用方法详解

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

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

表 1 列举了 FilterConfig 接口中的一系列方法,为了让读者更好地掌握这些方法,下面以 getInitParameter(String name)方法的使用为例演示 FilterConfig 接口的使用。

1)创建过滤器

在 filterDemo01 项目的 com.mengma.filter 包中创建过滤器 MyFilter03,使用该过滤器获取 web.xml 中设置的参数,如下所示。

 
  1. package com.mengma.filter;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5.  
  6. import javax.servlet.Filter;
  7. import javax.servlet.FilterChain;
  8. import javax.servlet.FilterConfig;
  9. import javax.servlet.ServletException;
  10. import javax.servlet.ServletRequest;
  11. import javax.servlet.ServletResponse;
  12.  
  13. public class MyFilter03 implements Filter {
  14. private String characterEncoding;
  15. FilterConfig fc;
  16.  
  17. public void init(FilterConfig fConfig) throws ServletException {
  18. // 获取 FilterConfig 对象
  19. this.fc = fConfig;
  20. }
  21.  
  22. public void doFilter(ServletRequest request, ServletResponse response,
  23. FilterChain chain) throws IOException, ServletException {
  24. // 输出参数信息
  25. characterEncoding = fc.getInitParameter("Encoding");
  26. System.out.println("encoding初始化参数的值为:" + characterEncoding);
  27. chain.doFilter(request, response);
  28. }
  29.  
  30. public void destroy() {
  31. }
  32. }

2)配置过滤器

在 web.xml 文件中配置过滤器信息。为了防止其他过滤器影响 MyFilter03 的拦截效果,需要先将 web.xml 文件中其他过滤器的配置信息注释掉,然后将 MyFilter03 过滤器的映射信息配置在 MyServlet 配置信息的前面,具体代码如下所示:

 
  1. <filter>
  2. <filter-name>MyFilter03</filter-name>
  3. <filter-class>com.mengma.filter.MyFilter03</filter-class>
  4. <init-param>
  5. <param-name>encoding</param-name>
  6. <param-value>UTF-8</param-value>
  7. </init-param>
  8. </filter>
  9. <filter-mapping>
  10. <filter-name>MyFilter03</filter-name>
  11. <url-pattern>/MyServlet</url-pattern>
  12. </filter-mapping>

3)运行项目并查看结果

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

控制台窗口
图 1  控制台窗口


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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值