Duvida de como aplicar o Filtro no meu Projeto

0 respostas
jspjavaservlet
Dayson_Rodrigues

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");

}
}
Criado 14 de novembro de 2017
Respostas 0
Participantes 1