• 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;
    }
    }

  • 相关阅读:
    Git使用教程
    安卓Activity全屏显示以及不显示title
    Android自定义权限
    java基础类型数据与String类包装类之间的转换与理解
    sQL存储过程的优缺点
    安卓5.0新特性
    Android中图片压缩(质量压缩和尺寸压缩)
    java基本数据类型所占字节数
    Android性能优化之一:ViewStub
    安卓内存优化和视图优化
  • 原文地址:https://www.cnblogs.com/zhenmingliu/p/2320115.html
Copyright © 2020-2023  润新知