| /* |
| * Copyright 2004 The Apache Software Foundation |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| |
| package filters; |
| |
| |
| import java.io.IOException; |
| import javax.servlet.Filter; |
| import javax.servlet.FilterChain; |
| import javax.servlet.FilterConfig; |
| import javax.servlet.ServletContext; |
| import javax.servlet.ServletException; |
| import javax.servlet.ServletRequest; |
| import javax.servlet.ServletResponse; |
| |
| |
| /** |
| * Example filter that can be attached to either an individual servlet |
| * or to a URL pattern. This filter performs the following functions: |
| * <ul> |
| * <li>Attaches itself as a request attribute, under the attribute name |
| * defined by the value of the <code>attribute</code> initialization |
| * parameter.</li> |
| * <li>Calculates the number of milliseconds required to perform the |
| * servlet processing required by this request, including any |
| * subsequently defined filters, and logs the result to the servlet |
| * context log for this application. |
| * </ul> |
| * |
| * @author Craig McClanahan |
| * @version $Revision$ $Date$ |
| */ |
| |
| public final class ExampleFilter implements Filter { |
| |
| |
| // ----------------------------------------------------- Instance Variables |
| |
| |
| /** |
| * The request attribute name under which we store a reference to ourself. |
| */ |
| private String attribute = null; |
| |
| |
| /** |
| * The filter configuration object we are associated with. If this value |
| * is null, this filter instance is not currently configured. |
| */ |
| private FilterConfig filterConfig = null; |
| |
| |
| // --------------------------------------------------------- Public Methods |
| |
| |
| /** |
| * Take this filter out of service. |
| */ |
| public void destroy() { |
| |
| this.attribute = null; |
| this.filterConfig = null; |
| |
| } |
| |
| |
| /** |
| * Time the processing that is performed by all subsequent filters in the |
| * current filter stack, including the ultimately invoked servlet. |
| * |
| * @param request The servlet request we are processing |
| * @param result The servlet response we are creating |
| * @param chain The filter chain we are processing |
| * |
| * @exception IOException if an input/output error occurs |
| * @exception ServletException if a servlet error occurs |
| */ |
| public void doFilter(ServletRequest request, ServletResponse response, |
| FilterChain chain) |
| throws IOException, ServletException { |
| |
| // Store ourselves as a request attribute (if requested) |
| if (attribute != null) |
| request.setAttribute(attribute, this); |
| |
| // Time and log the subsequent processing |
| long startTime = System.currentTimeMillis(); |
| chain.doFilter(request, response); |
| long stopTime = System.currentTimeMillis(); |
| filterConfig.getServletContext().log |
| (this.toString() + ": " + (stopTime - startTime) + |
| " milliseconds"); |
| |
| } |
| |
| |
| /** |
| * Place this filter into service. |
| * |
| * @param filterConfig The filter configuration object |
| */ |
| public void init(FilterConfig filterConfig) throws ServletException { |
| |
| this.filterConfig = filterConfig; |
| this.attribute = filterConfig.getInitParameter("attribute"); |
| |
| } |
| |
| |
| /** |
| * Return a String representation of this object. |
| */ |
| public String toString() { |
| |
| if (filterConfig == null) |
| return ("InvokerFilter()"); |
| StringBuffer sb = new StringBuffer("InvokerFilter("); |
| sb.append(filterConfig); |
| sb.append(")"); |
| return (sb.toString()); |
| |
| } |
| |
| |
| } |
| |