Olá pessoal realizei a implementação da aula 4 autorizando o acesso, porém ao passar as classes que não são protegidas para liberar o acesso é gerado no navegador o erro ERR_TOO_MANY_REDIRECTS revisei o código e não consegui encontrar o problema! Abaixo os códigos:
Usuario
package br.com.gerenciador.modelo;
public class Usuario {
private String login;
private String senha;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public boolean ehIgual(String login, String senha) {
if(!this.login.equals(login)) {
return false;
}
if(!this.senha.equals(senha)) {
return false;
}
return true;
}
}
Login
package br.com.gerenciador.acao;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.com.gerenciador.modelo.Banco;
import br.com.gerenciador.modelo.Usuario;
public class Login implements Acao {
@Override
public String executa(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String login = request.getParameter("login");
String senha = request.getParameter("senha");
System.out.println("Logando " + login);
Banco banco = new Banco();
Usuario usuario = banco.existeUsuario(login,senha);
if(usuario != null) {
System.out.println("Usuario existe");
HttpSession sessao = request.getSession();
sessao.setAttribute("usuarioLogado", usuario);
return "redirect:entrada?acao=ListaEmpresas";
} else {
return "redirect:entrada?acao=LoginForm";
}
}
}
UnicaEntradaServlet
package br.com.gerenciador.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.com.gerenciador.acao.Acao;
import br.com.gerenciador.acao.AlteraEmpresa;
import br.com.gerenciador.acao.ListaEmpresas;
import br.com.gerenciador.acao.MostraEmpresa;
import br.com.gerenciador.acao.NovaEmpresa;
import br.com.gerenciador.acao.NovaEmpresaForm;
import br.com.gerenciador.acao.RemoveEmpresa;
import br.com.gerenciador.modelo.Banco;
import br.com.gerenciador.modelo.Empresa;
@WebServlet("/entrada")
public class UnicaEntradaServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String paramAcao = request.getParameter("acao");
HttpSession sessao = request.getSession();
boolean usuarioNaoEstaLogado= (sessao.getAttribute("usuarioLogado") == null);
boolean ehUmaAcaoProtegida = !(paramAcao.equals("Login") || paramAcao.equals("LoginFom"));
if (ehUmaAcaoProtegida && usuarioNaoEstaLogado) {
response.sendRedirect("entrada?acao=LoginForm");
return;
}
String nomeDaClasse = "br.com.gerenciador.acao." + paramAcao;
String nome;
try {
Class classe = Class.forName(nomeDaClasse);// carrega a classe com o nome
Acao acao = (Acao) classe.newInstance();
nome = acao.executa(request, response);
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
throw new ServletException(e);
}
// separa a string em 2 para usar no if e passar como parametro.
String[] tipoEEndereco = nome.split(":");
if (tipoEEndereco[0].equals("forward")) {
// chama o dispachador para direcionar o atributo para o JSP
RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/view/" + tipoEEndereco[1]);
// leva a o atributo junto com a requisição e a resposta
rd.forward(request, response);
} else {
response.sendRedirect(tipoEEndereco[1]); // redireciona para servlet, pagina , etc. passando o parametro.
}
}
}