Olá,
Estou tentando fazer um filter para que ele exeute antes do servlet, configurei o web.xml, tudo certinho os métodos init() e destroy() são executados corretamente pois eles escrevem no log as frases, mas o doFilter() não é executado de jeito nenhum, se alguem puder me ajudar, segue os códigos abaixo:
TimeFilter.java
package br.dominio.servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TimeFilter implements Filter {
private ServletContext context = null;
public void init(FilterConfig config) throws ServletException {
this.context = config.getServletContext();
context.log("Iniciando Filtro TimeFilter");
}
public void destroy() {
context.log("Finalizando Filtro TimeFilter");
this.context = null;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
long inicio = System.currentTimeMillis();
chain.doFilter(request, response);
long fim = System.currentTimeMillis();
String nome = "";
if (request instanceof HttpServletRequest) {
nome = ((HttpServletRequest)request).getRequestURI();
}
context.log(nome + ": " + (fim - inicio) + "ms");
}
}
web.xml
<filter>
<filter-name>TimeFilter</filter-name>
<filter-class>br.dominio.servlet.TimeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>TimeFilter</filter-name>
<servlet-name>InicializarServlet</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>InicializarServlet</servlet-name>
<servlet-class>br.dominio.servlet.InicializarServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>InicializarServlet</servlet-name>
<url-pattern>/InicializarServlet</url-pattern>
</servlet-mapping>
Valeu !
[]s