Como aplicar filtros JSP?

Estou aprendendo JSP, e já fiz com que o usuário não entre no sistema caso não esteja Logado.

Controller

@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;

}
Logica

public class AdicionaTarefa implements Logica {

@Override
public String executa(HttpServletRequest request, HttpServletResponse response) {

    if (request.getSession().getAttribute("usuarioLogado") != null) {
        Connection connection = (Connection) request.getAttribute("connection");

        List<Usuario> usuarios = new UsuarioDAO(connection).buscarTodosUsuarios();
        List<Situacao> statusSituacao = Arrays.asList(Situacao.values());

        request.setAttribute("usuarios", usuarios);
        request.setAttribute("statusTarefas", statusSituacao);

        return "WEB-INF/jsp/view/adicionar.jsp";
    }
    return "mvc?logica=TelaLogin";
}

}
Classe que eu pego o Usuário e guardo na sessão

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 usuarioAutenticado = new UsuarioDAO(connection).autenticar(new Usuario(login, senha));

    if (usuarioAutenticado != null) {
        System.out.println(request.getRequestURI());
        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());
}

}
OBS: Minhas páginas estão escondidas dentro de WEB-INF/jsp/view

OBS: Como faço para aplicar um filter nesse meu código? Veja que cada logica estou colocando um if para saber se existe Sessão, e isso pode ficar trabalhoso porque eu posso ter muitas Logicas…

opa…blza…vc precisa implementar a interface Filter e adicionar ela lá no web.xml

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 javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

    public class Filtro implements Filter{

        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
        }

        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            HttpServletRequest req = (HttpServletRequest) request;
            HttpServletResponse resp = (HttpServletResponse) response;
            
            HttpSession session = req.getSession();
            
            if(session.getAttribute("user") != null){
                chain.doFilter(request, response);
            }else{
                session.invalidate();
                resp.sendRedirect(req.getContextPath() + "/login.jsp");
            }
        }

        @Override
        public void destroy() {
        }
        
    }

e no web.xml

<filter>
        <filter-name>Filtro</filter-name>
        <filter-class>pacote.Filtro</filter-class>
    </filter>
<filter-mapping>
        <filter-name>Filtro</filter-name>
        <url-pattern>/pastaAserFiltrada/*</url-pattern>
    </filter-mapping>

obrigado pela ajuda, fiz dessa forma até agora sem sucesso, ao tentar acessar uma URI, ele redireciona para a página index.jsp e o meu navegador fica assim.

@WebFilter("/*")
public class FilterAutenticador implements Filter {

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

	HttpServletRequest httpServletRequest = (HttpServletRequest) request;
	HttpServletResponse httpServletResponse = (HttpServletResponse) response;
	HttpSession session = httpServletRequest.getSession();
	if (session.getAttribute("usuarioLogado") != null) {
		chain.doFilter(request, response);
	} else {
		httpServletResponse.sendRedirect("index.jsp");
	}
}

}`