GRAVE: Servlet.service() for servlet

2 respostas Resolvido
java
S

Boa note, sou iniciante nos estudos java e estou com o seguinte erro no estudo da fj21, alguem pode medar uma dica:

GRAVE: Servlet.service() for servlet [br.com.caelum.mvc.servlet.ControllerServlet] in context with path [/agenda-fj21] threw exception [A lógica de negócios causou uma exceção] with root cause
java.lang.ClassNotFoundException: br.com.caelum.mvc.logica. PrimeiraLogica

retornando o erro no browser:
http://localhost:8080/estudo-agenda/mvc?logica=PrimeiraLogica

Um erro aconteceu!

Logica.java

package br.com.caelum.mvc.logica;

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

public interface Logica {
	String executa(HttpServletRequest req, HttpServletResponse rea) throws Exception;
}

PrimeiraLogica.java

package br.com.caelum.mvc.logica;

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

public class PrimeiraLogica implements Logica {

	@Override
	public String executa(HttpServletRequest req, HttpServletResponse rea) throws Exception {
		
		System.out.println("Executando a logica...");
		
		System.out.println("Retornando o nome da pagina JSP...");
		
		return "primeira-logica-jstl.jsp";	
	}
}

ControlleServlet.java

package br.com.caelum.mvc.servlet;

import java.io.IOException;

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 br.com.caelum.mvc.logica.Logica;

@WebServlet("/mvc")
public class ControllerServlet extends HttpServlet {
    protected void service(HttpServletRequest req,
            HttpServletResponse resp) 
            throws ServletException, IOException {
		
		String parametro = req.getParameter("logica");
		String nomeDaClasse = "br.com.estudo.agenda.mvc.logica. " + parametro;
		
        try {
            Class classe = Class.forName(nomeDaClasse);

            @SuppressWarnings("deprecation")
			Logica logica = (Logica) classe.newInstance();
            String pagina = logica.executa(req, resp);

            req.getRequestDispatcher(pagina).forward(req, resp);

        } catch (Exception e) {
            throw new ServletException(
                "A lógica de negócios causou uma exceção", e);
        }
    }
}

primeira-logica.jsp

<html>
<body>
	<h1> Pagina da primeira Logica</h1>
</body>
</html>

2 Respostas

Lucas_Camara
Solucao aceita

Tem um espaço sobrando nessa parte:

String nomeDaClasse = "br.com.estudo.agenda.mvc.logica. " + parametro;
                                                       ^
S

Lucas_Camara, você é fera, identificou o problema de primeira, muito obrigado.

Att,

Criado 20 de maio de 2020
Ultima resposta 21 de mai. de 2020
Respostas 2
Participantes 2