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原创文章,未经本站允许不得转载。