Olá amigos, estou com um probleminha aparentemente bem bobo, estou tentando aplicar o Filter na minha aplicação como o professor ensinou, fazendo ele ser chamado antes do Servlet/Controlador.
Porém mesmo os dois contendo o mesmo caminho (urlPatterns="/")
o Filter não é chamado em momento algum. Já revisei o código algumas vezes e tudo parece no lugar, da mesma forma como o professor mostrou.
Alguém consegue me ajudar com isso? Faltou eu configurar o que para o Filter ser chamado?
Classe do Filter abaixo:
package com.doglab.filters;
import java.io.IOException;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.annotation.WebFilter;
@WebFilter(urlPatterns="/")
public class EntranceFilter implements Filter{
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
long curMilis = System.currentTimeMillis();
System.out.println("oduiashdoias");
chain.doFilter(req, res);
long newCurMilis = System.currentTimeMillis();
System.out.println("Tempo de execução: " + (newCurMilis - curMilis));
}
}
Classe do Servlet/Controlador abaixo:
package com.doglab.controllers;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import com.doglab.actions.Action;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns="/")
public class EntradaServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String actionURI = req.getRequestURI().split("/")[2];
String respAction = null;
try {
Class<?> actionsClass = Class.forName("com.doglab.actions."+actionURI+"Action");
Action curAction = (Action) actionsClass.getDeclaredConstructor().newInstance();
respAction = curAction.exec(req, res);
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
| IllegalArgumentException | InvocationTargetException | NoSuchMethodException
| SecurityException e) {
throw new ServletException(e);
}
String[] methodURI = respAction.split(":");
if(methodURI[0].equals("foward")) {
RequestDispatcher rd = req.getRequestDispatcher("WEB-INF/view/" + methodURI[1]);
rd.forward(req, res);
}else {
res.sendRedirect(methodURI[1]);
}
}
}