import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 执行时间过滤器
*/
public class ProcessTimeFilter implements Filter {
protected final Logger log = LoggerFactory
.getLogger(ProcessTimeFilter.class);
/**
* 请求执行开始时间
*/
public static final String START_TIME = "startTime";
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
long time = System.currentTimeMillis();
request.setAttribute(START_TIME, time);
chain.doFilter(request, response);
time = System.currentTimeMillis() - time;
log.debug("process in {} ms: {}", time, request.getRequestURI());
}
public void init(FilterConfig arg0) throws ServletException {
}
}
web.xml配置
<filter>
<filter-name>processTime</filter-name>
<filter-class>ProcessTimeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>processTime</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>