debugfilter.java

来自「JAVA Servlet2.3外文书籍源码」· Java 代码 · 共 74 行

JAVA
74
字号
package debugging;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

public class DebugFilter implements Filter {

  private FilterConfig filterConfig = null;

  public void init(FilterConfig config) {
    this.filterConfig = config;
  }
  
  public void destroy() {}  

  public void setFilterConfig(FilterConfig filterConfig) {
    this.filterConfig = filterConfig;
  }

  public FilterConfig getFilterConfig() {
    return this.filterConfig;
  }

  public void doFilter(ServletRequest request, 
                       ServletResponse response,
                       FilterChain chain) 
    throws IOException, ServletException {

    if (filterConfig != null) {
      StringBuffer messageBuffer=new StringBuffer();
      messageBuffer.append("<invocation>");
      messageBuffer.append("<sender>");
      messageBuffer.append(request.getRemoteHost());
      messageBuffer.append("</sender>");

      messageBuffer.append("<message>");
      Enumeration parameterNames = request.getParameterNames();
      boolean firstTime = true;
      while (parameterNames.hasMoreElements()) {
        String thisName=(String) parameterNames.nextElement();
        String[] parameterValues = request.getParameterValues(thisName);
        String thisValue = parameterValues[0];

        if (firstTime) {
          messageBuffer.append("?");
        } else {
          messageBuffer.append("&");
        }

        messageBuffer.append(thisName + "=" + thisValue);

        firstTime = false;
      }
      messageBuffer.append("</message>");

      if (request instanceof HttpServletRequest) {
        messageBuffer.append("<receiver>");
        messageBuffer.append(((HttpServletRequest)request).getRequestURI());
        messageBuffer.append("</receiver>");
      }

      long startTime=System.currentTimeMillis();
      chain.doFilter(request,response);
      long endTime=System.currentTimeMillis();
      long duration=endTime-startTime;

      messageBuffer.append("<duration>" + duration + "</duration>");
      messageBuffer.append("</invocation>");
      filterConfig.getServletContext().log(messageBuffer.toString());
    }
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?