Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Não estou conseguindo acessar os JSP's

Realoquei os JSP's para a pasta WEB-INF/view / mas não estou conseguindo acessar as páginas. Dá o seguinte erro:

HTTP Status 404 - /gerenciador/listaEmpresas.jsp
type Status report

message /gerenciador/listaEmpresas.jsp

description The requested resource is not available.

Apache Tomcat/8.0.32

Segue o código:

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 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 {
        // TODO Auto-generated method stub

        String nome = null;
        try {

            String paramAcao = request.getParameter("acao");
            String nomeDaClasse = "br.com.alura.gerenciador.acao." + paramAcao;
            Class classe = Class.forName(nomeDaClasse);
            Acao acao = (Acao) classe.newInstance();
            nome = acao.executa(request, response);//Nome da acao

        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
            // TODO Auto-generated catch block
            throw new ServletException(e);
        }


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

Pela mensagem de erro me parece que o problema é porque você está acessando a URL errada. Para acessar essa jsp você deveria passar pela controller primeiro

Tenta acessar http://localhost:8080/gerenciador/entrada?acao=ListaEmpresas

A sua classe ListaEmpresas (que representa a ação) deve ter a seguinte cara:

package br.com.alura.gerenciador.servlet.acao;

import java.io.IOException;
import java.util.List;

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.Empresa;

public class ListaEmpresas implements Acao {

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

        Banco banco = new Banco();
        List<Empresa> empresas = banco.getEmpresas();

        request.setAttribute("listaEmpresas", empresas);

        return "forward:listaEmpresas.jsp";

    }
}

Ela apenas recebe a request e despacha para a jsp

Eu tentei accessar http://localhost:8080/gerenciador/entrada?acao=ListaEmpresas, a resposta de erro se dá porque o "forward" está acontecendo. Mas ele não acha o jsp por algum motivo :( .

Agora tá dando essa msg de erro quanto tento acessar http://localhost:8080/gerenciador/entrada?acao=ListaEmpresas

HTTP Status 404 - /gerenciador/entrada
type Status report

message /gerenciador/entrada

description The requested resource is not available.

Apache Tomcat/8.0.32
solução

Resolvido o problema, realmente era um erro de caminho.