ExampleFilter.java
上传用户:bj_pst
上传日期:2019-07-07
资源大小:7353k
文件大小:4k
源码类别:

Java编程

开发平台:

Java

  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements.  See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License.  You may obtain a copy of the License at
  8. *
  9. *     http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. package filters;
  18. import java.io.IOException;
  19. import javax.servlet.Filter;
  20. import javax.servlet.FilterChain;
  21. import javax.servlet.FilterConfig;
  22. import javax.servlet.ServletContext;
  23. import javax.servlet.ServletException;
  24. import javax.servlet.ServletRequest;
  25. import javax.servlet.ServletResponse;
  26. /**
  27.  * Example filter that can be attached to either an individual servlet
  28.  * or to a URL pattern.  This filter performs the following functions:
  29.  * <ul>
  30.  * <li>Attaches itself as a request attribute, under the attribute name
  31.  *     defined by the value of the <code>attribute</code> initialization
  32.  *     parameter.</li>
  33.  * <li>Calculates the number of milliseconds required to perform the
  34.  *     servlet processing required by this request, including any
  35.  *     subsequently defined filters, and logs the result to the servlet
  36.  *     context log for this application.
  37.  * </ul>
  38.  *
  39.  * @author Craig McClanahan
  40.  * @version $Revision: 466607 $ $Date: 2006-10-21 17:09:50 -0600 (Sat, 21 Oct 2006) $
  41.  */
  42. public final class ExampleFilter implements Filter {
  43.     // ----------------------------------------------------- Instance Variables
  44.     /**
  45.      * The request attribute name under which we store a reference to ourself.
  46.      */
  47.     private String attribute = null;
  48.     /**
  49.      * The filter configuration object we are associated with.  If this value
  50.      * is null, this filter instance is not currently configured.
  51.      */
  52.     private FilterConfig filterConfig = null;
  53.     // --------------------------------------------------------- Public Methods
  54.     /**
  55.      * Take this filter out of service.
  56.      */
  57.     public void destroy() {
  58.         this.attribute = null;
  59.         this.filterConfig = null;
  60.     }
  61.     /**
  62.      * Time the processing that is performed by all subsequent filters in the
  63.      * current filter stack, including the ultimately invoked servlet.
  64.      *
  65.      * @param request The servlet request we are processing
  66.      * @param result The servlet response we are creating
  67.      * @param chain The filter chain we are processing
  68.      *
  69.      * @exception IOException if an input/output error occurs
  70.      * @exception ServletException if a servlet error occurs
  71.      */
  72.     public void doFilter(ServletRequest request, ServletResponse response,
  73.                          FilterChain chain)
  74. throws IOException, ServletException {
  75. // Store ourselves as a request attribute (if requested)
  76. if (attribute != null)
  77.     request.setAttribute(attribute, this);
  78. // Time and log the subsequent processing
  79. long startTime = System.currentTimeMillis();
  80.         chain.doFilter(request, response);
  81. long stopTime = System.currentTimeMillis();
  82. filterConfig.getServletContext().log
  83.     (this.toString() + ": " + (stopTime - startTime) +
  84.      " milliseconds");
  85.     }
  86.     /**
  87.      * Place this filter into service.
  88.      *
  89.      * @param filterConfig The filter configuration object
  90.      */
  91.     public void init(FilterConfig filterConfig) throws ServletException {
  92. this.filterConfig = filterConfig;
  93.         this.attribute = filterConfig.getInitParameter("attribute");
  94.     }
  95.     /**
  96.      * Return a String representation of this object.
  97.      */
  98.     public String toString() {
  99. if (filterConfig == null)
  100.     return ("InvokerFilter()");
  101. StringBuffer sb = new StringBuffer("InvokerFilter(");
  102. sb.append(filterConfig);
  103. sb.append(")");
  104. return (sb.toString());
  105.     }
  106. }