Filter的入门

来源:互联网 发布:zepto.js swipeleft 编辑:程序博客网 时间:2024/06/08 18:53
  1. 什么是Filter?
      Filter也称过滤器,或拦截器。能够拦截资源并进行操作,达到对web资源进行管理的目的。

  2. Filter的作用是什么?
      web开发人员通过Filter技术,实现用户在访问某个资源之前,对访问的请求和响应进行拦截,简单地说就是实现web容器对某资源访问前进行截获,然后进行处理,还可以实现某资源对web容器响应返回前获取拦截,进行处理。这些资源包括以下东西:JSP、Servlet、HTML、静态图片文件等。

  3. Filter的应用地方有哪些?
      实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等。

  4. 如何创建一个Filter?
    (1)创建一个类,实现javax.servlet.Filter接口。
    (2)重写接口中的方法。方法有如下:

       public void init(FilterConfig config)
      web容器调用此方法,说明过滤器正在被加载到web容器中。容器在实例化的时候执行该方法一次。容器为这个方法传递一个config对象,该对象包含了与Filter相关的配置信息。
      public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
      每当请求和响应经过过滤链的时候,容器都要执行一次该方法。过滤器的一个实例可以服务于多个请求,要注意线程同步问题,尽量不用或少用实例化变量。这个方法是真正对资源进行拦截和操作的方法。
    public void destroy()
    容器调用destroy()将过滤器从服务器中删除,如果该过滤器使用了其他资源,需要在这个方法中释放这些资源。

  5. 在web.xml中进行映射配置
    配置例子:
    <filter>
    <filter-name>demoFilter</filter-name>//设置别名,和下文别名需相同
    <filter-class>com.filter.DemoFilter</filter-class>//设置过滤器的位置
    <init-param>//如果不需要初始化参数,则就不需要配置
    <param-name>encode</param-name>//初始化参数名称
    <param-value>UTF-8</param-value>//该初始化参数的值
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>demoFilter</filter-name>//设置别名,需和上文别名相同
    <url-pattern>*.jsp</url-pattern>//设置拦截资源的路径或类型
    </filter-mapping>

  6. Filter中的FilterConfig的作用
       <1>.获取初始化参数
      public String getInitParameter(String name);获取名称为name的的参数
       public Enumeration getInitParameterNames();返回枚举数组,数组中包含所有的初始化参数。

       <2>.获取Filter的名称
       public String getFilterName();返回该Filter的名称

      <3>.获取servlet的配置对象
       public ServletContext getServletContext();返回一个servlet的配置信息对象。

  7. Filter链的存在
       FilterChain.doFilter(request,response);它代表的是向下执行,如果下一个还是过滤器,那么访问这个过滤器,如果当前是整个Filter链中的最后一个过滤器,那么访问该资源。
       Filter链的顺序是由web.xml中的的配置顺序决定的,优先级由上到下递减。

    8.的路径配置方法
       <1>.完全匹配
       路径必须以“/”开始,如/day01/demo1.jsp;表示所有经过day01项目下的demo1的jsp页面。
       <2>.*通配符匹配
       (1)目录匹配,如格式为:/demo/或/,必须以”/”开始
       (2)扩展名匹配,格式为:.do或.jpg,不能以”/”开始,且必须以*.XXX结束。

0 0
原创粉丝点击