1
resposta

Erro ao criar o "verificando login"

Olá! Me chamo Gina e estou tentando resolver um erro sem sucesso. No curso de Java Servlet: autenticação, estou no vídeo "verificando o login" no capítulo 3. Estou no minuto 5:52 onde o Nico testa as alterações feitas no projeto para ver se o usuário existe. Quando coloco o login e senha que criei, apresenta um erro, que está em anexo. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Meus códigos são:

  • Classe Usuário:
package br.com.alura.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;
        }
    }
  • Classe Banco:
package br.com.alura.gerenciador.modelo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.jasper.tagplugins.jstl.core.ForEach;
import org.apache.taglibs.standard.tag.common.core.ForEachSupport;

public class Banco {

    private static List<Empresa> lista = new ArrayList<>();
    private static List<Usuario> listaUsuarios = new ArrayList<>();
    private static Integer chaveSequencial = 1;

    static {
        Empresa empresa = new Empresa();
        empresa.setId(chaveSequencial++);
        empresa.setNome("Alura");
        Empresa empresa2 = new Empresa();
        empresa2.setId(chaveSequencial++);
        empresa2.setNome("Compass.uol");
        lista.add(empresa);
        lista.add(empresa2);
        
        Usuario u1 = new Usuario();
        u1.setLogin("gina");
        u1.setSenha("1234");		
        Usuario u2 = new Usuario();
        u1.setLogin("nina");
        u1.setSenha("4321");
        listaUsuarios.add(u1);
        listaUsuarios.add(u2);
    }

    public void adiciona(Empresa empresa) {
        empresa.setId(Banco.chaveSequencial++);
        Banco.lista.add(empresa);
    }

    public List<Empresa> getEmpresas() {
        return Banco.lista;
    }

    public void removeEmpresa(Integer id) {

        Iterator<Empresa> it = lista.iterator();

        while (it.hasNext()) {
            Empresa emp = it.next();

            if (emp.getId() == id) {
                it.remove();
            }
        }

    }


    public Empresa buscaEmpresaPeloId(Integer id) {
        for (Empresa empresa : lista) {
            if (empresa.getId()==id) {
                return empresa;
            }
        }
        return null;
    }

    public Usuario existeUsuario(String login, String senha) {
        for(Usuario usuario : listaUsuarios) {
            if(usuario.ehIgual(login, senha)) {
                return usuario;
            }
        }
        return null;
    }

}
  • Ação Login:

package br.com.alura.gerenciador.acao;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.alura.gerenciador.modelo.Banco;
import br.com.alura.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("Usuário existe!");
        }

        return "redirect:entrada?acao=ListaEmpresas";
    }

}
  • Ação LoginForm:
package br.com.alura.gerenciador.acao;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginForm implements Acao {

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

        return "forward:formLogin.jsp";
    }

}
  • View formLogin
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:url value="/entrada" var="linkEntradaServlet"/>

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

    <form action="${linkEntradaServlet}" method="post"> 
    
        Login: <input type="text" name="login" />
        Senha: <input type="password" name="senha" />
        
        <input type="hidden" name="acao" value="Login">
        
        <input type="submit">
        
        </form>

</body>
</html>
1 resposta

Olá Gina!

Pelo erro apresentado, parece que a lista de usuários está vazia. Verifique se você adicionou os usuários corretamente na classe Banco. Além disso, notei que na classe Banco, na criação do segundo usuário, você utilizou "u1" ao invés de "u2".

Aqui está o código corrigido:

static {
    Empresa empresa = new Empresa();
    empresa.setId(chaveSequencial++);
    empresa.setNome("Alura");
    Empresa empresa2 = new Empresa();
    empresa2.setId(chaveSequencial++);
    empresa2.setNome("Compass.uol");
    lista.add(empresa);
    lista.add(empresa2);

    Usuario u1 = new Usuario();
    u1.setLogin("gina");
    u1.setSenha("1234");
    Usuario u2 = new Usuario();
    u2.setLogin("nina");
    u2.setSenha("4321");
    listaUsuarios.add(u1);
    listaUsuarios.add(u2);
}

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software