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

Não rodou o /entrada

No inicio do video quando ele terminou de fazer os ifs eu fui rodar no navegador(edge) e apareceu o erro seguinte:

Obs: estou usando o eclipse Java EE com o JDK 11.0.11

HTTP Status 500 – Internal Server Error 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:21) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770) 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.

Apache Tomcat/10.0.5

10 respostas

Oi Diogo

Sobre o nullpointer abaixo

java.lang.NullPointerException
    br.com.alura.gerenciador.servlet.UnicaEntradaServlet.service(UnicaEntradaServlet.java:21)

envia sua classe UnicaEntradaServlet, por favor

package br.com.alura.gerenciador.servlet;

import java.io.IOException;

import br.com.alura.gerenciador.acao.AlteraEmpresa;
import br.com.alura.gerenciador.acao.ListaEmpresas;
import br.com.alura.gerenciador.acao.MostraEmpresa;
import br.com.alura.gerenciador.acao.NovaEmpresa;
import br.com.alura.gerenciador.acao.NovaEmpresaForm;
import br.com.alura.gerenciador.acao.RemoveEmpresa;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class UnicaEntradaServlet
 */
@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 nome = null;
        if(paramAcao.equals("ListaEmpresas")) {
            ListaEmpresas acao = new ListaEmpresas();
            nome = acao.executa(request, response);

        } else if (paramAcao.equals("RemoveEmpresa")) {
            RemoveEmpresa acao = new RemoveEmpresa();
            nome = acao.executa(request, response);


        } else if (paramAcao.equals("MostraEmpresa")) {
            MostraEmpresa acao = new MostraEmpresa();
            nome = acao.executa(request, response);


        } else if (paramAcao.equals("AlteraEmpresa")) {
            AlteraEmpresa acao = new AlteraEmpresa();
            nome = acao.executa(request, response);


        } else if (paramAcao.equals("NovaEmpresa")) {
            NovaEmpresa acao = new NovaEmpresa();
            nome = acao.executa(request, response);


        }  else if (paramAcao.equals("NovaEmpresaForm")) {
            NovaEmpresaForm acao = new NovaEmpresaForm();
            nome = acao.executa(request, response);
        }


        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]);
        }
    }
}

Eu coloquei agora no navegador: http://localhost:8080/gerenciador/entrada?acao=ListaEmpresas dai me apareceu esse novo erro

HTTP Status 404 – Não Encontrado Type Status Report

Message The requested resource [/gerenciador/entrada] is not available

Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Apache Tomcat/10.0.5

fiz algumas atualizações e resolvi o erro de cima, porém chegou um terceiro novo erro rs, me desculpa, apareceu o seguinte:

HTTP Status 404 – Não Encontrado Type Status Report

Message JSP file [/WEB-INF/viewlistaEmpresas.jsp] not found

Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Apache Tomcat/10.0.5


listaEmpresas.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>


<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Java Standart Taglib</title>
<body>

    <c:if test="${not empty empresa}">
        Empresa ${empresa} cadastrada com sucesso
    </c:if>


    <ul>
        <c:forEach items="${empresas}" var="empresa">
            <li>
                ${empresa.nome} <fmt:formatDate value="${empresa.dataAbertura }" pattern="dd/MM/yyyy"/>
                <a href="/gerenciador/entrada?acao=MostraEmpresaid=${empresa.id}">editar</a>
                <a href="/gerenciador/entrada?acao=RemoveEmpresaid=${empresa.id}">remover</a>
            </li>
        </c:forEach>
    </ul>
</body>
</html>
Message JSP file [/WEB-INF/viewlistaEmpresas.jsp] not found

Por essa mensagem de erro acima o seu servlet deve estar mandando para viewlistaEmpresas.jsp, mas o correto é ter uma barra no meio: view/listaEmpresas.jsp

Confirma se o seu arquivo na pasta /gerenciador/WebContent/WEB-INF/view/ está com o nome listaEmpresas.jsp também

Eu vi que faltava uma / no código ao lado de view RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/view/" + tipoEEndereco[1]);

porém apareceu um novo erro

HTTP Status 500 – Internal Server Error
Type Exception Report

Message java.lang.ClassNotFoundException: br.com.alura.gerenciador.acaoListaEmpresas

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

Exception

jakarta.servlet.ServletException: java.lang.ClassNotFoundException: br.com.alura.gerenciador.acaoListaEmpresas
    br.com.alura.gerenciador.servlet.UnicaEntradaServlet.service(UnicaEntradaServlet.java:33)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause

java.lang.ClassNotFoundException: br.com.alura.gerenciador.acaoListaEmpresas
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1401)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1224)
    java.base/java.lang.Class.forName0(Native Method)
    java.base/java.lang.Class.forName(Class.java:315)
    br.com.alura.gerenciador.servlet.UnicaEntradaServlet.service(UnicaEntradaServlet.java:28)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
    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.

Apache Tomcat/10.0.5
java.lang.ClassNotFoundException: br.com.alura.gerenciador.acaoListaEmpresas

Diogo, tudo bem?

Me parece que faltou um . no trecho

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

o correto seria

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

como visto nessa aula!

Faça essa correção e veja se as coisas funcionam como esperado!

Resolvi os erros que me pediu, porém apareceu um novo erro 500

HTTP Status 500 – Internal Server Error
Type Exception Report

Message java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator

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

Exception

jakarta.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:332)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    br.com.alura.gerenciador.servlet.UnicaEntradaServlet.service(UnicaEntradaServlet.java:41)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause

java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator
    java.base/java.lang.ClassLoader.defineClass1(Native Method)
    java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
    java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2470)
    org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:866)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1370)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1224)
    java.base/java.lang.ClassLoader.defineClass1(Native Method)
    java.base/java.lang.ClassLoader.defineCl...........................
solução!

Oi Diogo

Sobre o erro:

java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator

Dentro da pasta /gerenciador/WebContent/WEB-INF/lib/ adicione a lib do jakarta.servlet.jsp.jstl, você pode baixar ela pelo link https://mvnrepository.com/artifact/jakarta.servlet.jsp.jstl/jakarta.servlet.jsp.jstl-api/2.0.0 clicando em "Files jar (44 KB)"

Eu baixei como solicitou e coloquei na pasta lib, dai veio um novo erro no 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>

    <c:import url="logout-parcial.jsp" />

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

O erro esta na linha <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

HTTP Status 500 – Internal Server Error
Type Exception Report

Message org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.view.formLogin_jsp

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

Exception

org.apache.jasper.JasperException: org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.view.formLogin_jsp
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:590)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:426)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    br.com.alura.gerenciador.servlet.ControladorFilter.doFilter(ControladorFilter.java:46)
    br.com.alura.gerenciador.servlet.AutorizacaoFilter.doFilter(AutorizacaoFilter.java:36)
    br.com.alura.gerenciador.servlet.MonitoramentoFilter.doFilter(MonitoramentoFilter.java:25)