estou aprendendo Filtro, só que estou com pequeno Problema, ao tentar entrar em uma página que o usuário não esteja logado, quero que vá para uma página de Login. Segue meu codigo.
OBS: Minhas páginas jsp estão:: WEB-INF/jsp/view
Servlet Controladora
@WebServlet("/mvc")
public class ControllerServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String parametro = request.getParameter("logica");
if(parametro == null){
throw new IllegalArgumentException("Falta passar o parametro.");
}
try {
String nomeDaClasse = "br.com.triadworks.todoList.logica." + parametro;
Class<?> classe = Class.forName(nomeDaClasse);
Logica logica = (Logica) classe.newInstance();
String pagina = logica.executa(request, response);
request.getRequestDispatcher(pagina).forward(request, response);
} catch (Exception e) {
throw new ServletException("A lógica causou uma exceção!", e);
}
}
}
public interface Logica {
String executa(HttpServletRequest request, HttpServletResponse response) throws Exception;
}
public class LoginTarefaLogic implements Logica {
@Override
public String executa(HttpServletRequest request, HttpServletResponse response) throws Exception {
Connection connection = (Connection) request.getAttribute("connection");
String login = request.getParameter("usuario");
String senha = request.getParameter("senha");
Usuario usuario = new Usuario(login, senha);
Usuario usuarioAutenticado = new UsuarioDAO(connection).autenticar(usuario);
if (usuarioAutenticado != null) {
pegaSessaoUsuario(request, usuarioAutenticado);
return "mvc?logica=AdicionaTarefa";
} else {
return "mvc?logica=TelaLogin";
}
}
public static void pegaSessaoUsuario(HttpServletRequest request, Usuario usuarioAutenticado) {
HttpSession session = request.getSession();
session.setAttribute("usuarioLogado", usuarioAutenticado);
System.out.println("Usuario: " +usuarioAutenticado.getNome() + "ID" + usuarioAutenticado.getId() + "senha: " +usuarioAutenticado.getSenha());
}
}
Meu Filter
@WebFilter("/*")
public class UsuarioLogadoFilter implements Filter {
<a class="mention" href="/u/override">@Override</a>
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
if (req.getSession().getAttribute("usuarioLogado") != null
|| req.getRequestURI().endsWith("mvc?logica=AdicionaTarefa")){
chain.doFilter(request, response);
return;
}
resp.sendRedirect("mvc?logica=TelaLogin");
}
}