Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Erro 500 ao fazer login

Aparece esse erro ao fazer login. O código esta igual ao feito na aula. Não consigo enxergar o erro.

Type Exception Report

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

java.lang.NullPointerException
    br.com.alura.gerenciador.servlet.UnicaEntradaServlet.service(UnicaEntradaServlet.java:26)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note A pilha de erros completa da causa principal está disponível nos logs do servidor.
5 respostas

Olá Kamila, tudo bem com você?

Em algum momento da sua execução estamos recebendo uma referência nula, você poderia postar aqui no fórum o código do UnicaEntradaServlet, LoginForm.java e o formLogin.jsp para a gente ver se não tem nenhum problema com algum desses arquivos ?

Abraços e Bons Estudos!

package br.com.alura.gerenciador.servlet;

import java.io.IOException;

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.alura.gerenciador.acao.Acao;


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


        String nomeDaClasse = "br.com.alura.gerenciador.acao." + paramAcao;

        String nome;
        try {
            Class classe = Class.forName(nomeDaClasse);
            Acao acao = (Acao) classe.newInstance();
            nome = acao.executa(request,response);
        } catch (ClassNotFoundException | 
                InstantiationException | 
                IllegalAccessException e) {
            throw new ServletException(e);
        }

        String[] tipoEEndereco = nome.split(":");
        if(tipoEEndereco[0].equals("forward")) {
            RequestDispatcher rd = 
                request.getRequestDispatcher("WEB-INF/view/" + tipoEEndereco[1]);
            rd.forward(request, response);
        } else {
            response.sendRedirect(tipoEEndereco[1]);
        }

    }

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

}
<%@ 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"  />

        <inpute type="hiddesn" name="acao" value="Login">

        <input type="submit" />
    </form>

</body>
</html>
solução!

Olá Kamila,

Que estranho, nos arquivos enviados não há nenhum problema, pode ser que o redirect do Login.javaesteja errado, você pode checar?

Agora temos um pequeno erro em sua jspveja:

        <inpute type="hiddesn" name="acao" value="Login">

Na verdade isso deveria ser:

<input type="hidden" name="acao" value="Login">

Tenta arrumar isso e caso continue você manda o arquivo que eu citei acima :)

Abraços e Bons Estudos!