Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

ClassNotFoundException, quando passo uma acao na minha entrada.

Oi, quem puder me ajudar ja agradeço,

quando tento chamar uma acao, exemplo: http://localhost:8080/gerenciador/entrada?acao=ListaEmpresas

ele da o erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

meu codigo do controler, 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 nomeDaClasse = "import br.com.alura.gerenciador.acao." + paramAcao;

        String nome;
        try {
            Class classe = Class.forName(nomeDaClasse); // carrega a classe com o nome da string!
            Acao acao = (Acao)  classe.newInstance();
            nome = acao.executa(request,response);
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | ServletException
                | IOException e) {
            throw new ServletException(e);
        }

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

    }

}

meu codigo da ListaEmpresas.java:

public class ListaEmpresas implements Acao{

    public String executa(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Banco banco = new Banco();
        List<Empresa> lista = banco.getEmpresas();


        request.setAttribute("empresas", lista);

        return "dispatcher:listaEmpresas.jsp";
    }

}
1 resposta
solução!

Já encontrei o erro pessoal, na minha String que to concatenando os pacotes com o nome da Acao, eu coloquei import, o correto:

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

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