Servlet FilterConfig详解(获取web.xml中filter参数)

用户在配置filter时,可以使用<init-param>为filter配置一些初始化参数,当web容器实例化Filter对象,调用其init方法时,会把封装了filter初始化参数的filterConfig对象传递进来。因此FilterConfig可以获取部署描述符文件(web.xml)中分配的过滤器初始化参数。

方法

String getFilterName()  //得到filter的名称。
String getInitParameter(String name)  // 返回在部署描述中指定名称的初始化参数的值。如果不存在返回null.
Enumeration getInitParameterNames()  //返回过滤器的所有初始化参数的名字的枚举集合。
public ServletContext getServletContext()  //返回Servlet上下文对象的引用。

例子

//web.xml
<web-app> 
  <filter> 
    <!-- 设计过滤处理类,生成静态页面 -->  
    <filter-name>CacheFilter</filter-name>  
    <filter-class>com.jspbook.CacheFilter</filter-class>  
    <!-- 不需要缓存的URL -->  
    <init-param> 
      <param-name>/TimeMonger.jsp</param-name>  
      <param-value>nocache</param-value> 
    </init-param>  
    <init-param> 
      <param-name>/TestCache.jsp</param-name>  
      <param-value>nocache</param-value> 
    </init-param>  
    <!-- 缓存超时时间, 单位为秒 -->  
    <init-param> 
      <param-name>cacheTimeout</param-name>  
      <param-value>600</param-value> 
    </init-param>  
    <!-- 是否根据浏览器不同的地区设置进行缓存(生成的缓存文件为 test.jsp?id=1_zh_CN 的格式) -->  
    <init-param> 
      <param-name>locale-sensitive</param-name>  
      <param-value>true</param-value> 
    </init-param> 
  </filter>  
  <filter-mapping> 
    <filter-name>CacheFilter</filter-name>  
    <url-pattern>*.jsp</url-pattern> 
  </filter-mapping> 
</web-app>
//获取web.xml中filter参数
public void init(FilterConfig filterConfig) {
    String ct = filterConfig.getInitParameter("cacheTimeout");
    if (ct != null) {
        cacheTimeout = 60 * 1000 * Long.parseLong(ct);
    }
    filterConfig.getInitParameter("locale-sensitive"); //得到的就是ture 
    filterConfig.getInitParameter("cacheTimeout");  //得到的就是600 
    filterConfig.getInitParameter(request.getRequestURI());  //得到的就是param - name对应的param - value值ServletContext sc = filterConfig.getServletContext();
}

总结

1. FilterConfig对象提供对servlet环境及web.xml文件中指派的过滤器名的访问。

2. FilterConfig对象具有一个getInitParameter方法,它能够访问部署描述符文件(web.xml)中分配的过滤器初始化参数。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。