zoukankan      html  css  js  c++  java
  • java关于ServletConfig FilterConfig什么用

    具体的使用方法你可以在google上搜索 “filter 过滤器”,FilterConfig可以获取部署描述符文件(web.xml)中分配的过滤器初始化参数。
    针对你的问题回答,结果就是说FilterConfig可以获得web.xml中,以 filter 作为描述标签内的参数。

    定义:
    FilterConfig对象提供对servlet环境及web.xml文件中指派的过滤器名的访问。
    FilterConfig对象具有一个getInitParameter方法,它能够访问部署描述符文件(web.xml)中分配的过滤器初始化参数。

    实例:
    将下面的代码加入到web.xml中,试用FilterConfig就可以获得以 filter 作为描述标签内的参数。

    <!-- The Cache Filter -->
    <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.jspid=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>

    用法:

    filterConfig.getInitParameter("locale-sensitive"); 得到的就是 ture
    filterConfig.getInitParameter("cacheTimeout"); 得到的就是 600
    filterConfig.getInitParameter(request.getRequestURI()); 得到的就是param-name 对应的 param-value 值


    过滤处理类:

    public class CacheFilter implements Filter {
    ServletContext sc;
    FilterConfig fc;
    long cacheTimeout = Long.MAX_VALUE;

    public void doFilter(ServletRequest req, ServletResponse res,
    FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;

    // check if was a resource that shouldn't be cached.
    String r = sc.getRealPath("");
    String path = fc.getInitParameter(request.getRequestURI());
    if (path != null && path.equals("nocache")) {
    chain.doFilter(request, response);
    return;
    }
    path = r + path;

    }

    public void init(FilterConfig filterConfig) {
    this.fc = filterConfig;
    String ct = fc.getInitParameter("cacheTimeout");
    if (ct != null) {
    cacheTimeout = 60 * 1000 * Long.parseLong(ct);
    }
    this.sc = filterConfig.getServletContext();
    }

    public void destroy() {
    this.sc = null;
    this.fc = null;
    }
    }

  • 相关阅读:
    KeilMdk .gitignore文件
    C#与C/C++之间数据类型的转换
    「邮件规则」​​​​​​​​写出我心(一百七十六)
    「当机立断」​​​​​​​写出我心(一百七十五)
    「职责范围」​​​​​​写出我心(一百七十四)
    「建立个人知识库」​​​​​写出我心(一百七十三)
    「学会利用资源」​​​​写出我心(一百七十二)
    「跨越舒适区」​​​写出我心(一百七十一)
    「凡事预则立不预则废」​​写出我心(一百七十)
    「论述」​写出我心(一百六十九)
  • 原文地址:https://www.cnblogs.com/zhenmingliu/p/2320115.html
Copyright © 2011-2022 走看看