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

Não funcionou

Estou seguindo as atividades do treinamento Servlet Parte 1: Aula 3 (Listando Empresas com Servlets).

Se eu preencho o FORM e envio o nome da empresa, ele não aparece no servlet listaEmpresas... O listaEmpresas só funciona quando eu coloco STATIC na class BANCO forçando assim o cadastro das empresas.

Mas seguindo o passo a passo "iniciando pelo form", não aparece e/ou adiciona a nova empresa no listaEmpresas.

formNovaEmpresa.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

    <form action="/gerenciador/novaEmpresa" method="post">

        Nome: <input type="text" name="nome" />

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

</body>
</html>

NovaEmpresaServlet.java

package br.com.alura.gerenciador.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class NovaEmpresaServlet
 */

@WebServlet("/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse
     *      response) Opção para forçar o SERVICE a receber apenas POST ou GET...
     *      alterar para "doPost" protected void service(HttpServletRequest request,
     *      HttpServletResponse response) throws ServletException, IOException {
     */

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("Cadastrando Nova Empresa ");

        String nomeEmpresa = request.getParameter("nome");
        Empresa empresa = new Empresa();
        empresa.setNome(nomeEmpresa);

        PrintWriter out = response.getWriter();
        out.println("<html><body>Empresa" + nomeEmpresa + " Cadastrada com Sucesso</body></html>");

        System.out.println("recebido do FORM " + nomeEmpresa);
    }

}

ListaEmpresaServlet.java

package br.com.alura.gerenciador.servlet;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ListaEmpresasServlet
 */
@WebServlet("/listaEmpresas")
public class ListaEmpresasServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {

        Banco banco = new Banco();        
        List<Empresa> lista = banco.getEmpresas();
        PrintWriter out = response.getWriter();

        out.println("<html><body><ul>");
        for (Empresa empresa : lista) {
            out.println("<li>" + empresa.getNome() + "</li>");
        }
        out.println("</ul></body></hmtl>");

    }


}

Banco.java

package br.com.alura.gerenciador.servlet;

import java.util.ArrayList;
import java.util.List;

public class Banco { 

    private static List<Empresa> lista = new ArrayList<>();

    /**
     * Teste com STATIC para forçar o retorno.
     */
    static {
        Empresa empresa = new Empresa();
        empresa.setNome("Alura");
        Empresa empresa2 = new Empresa();
        empresa2.setNome("Caelum");
        lista.add(empresa);
        lista.add(empresa2);
    }


    public void adiciona(Empresa empresa) { 
        Banco.lista.add(empresa);
    }

    public List<Empresa> getEmpresas(){ 
        return Banco.lista;
    }

}

Empresa.java

package br.com.alura.gerenciador.servlet;

public class Empresa{ 

    private Integer id;
    private String nome;

    public Integer getId() { 
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) { 
        this.nome = nome;
    }
} 
1 resposta
solução!

Acabei de descobrir o erro... No arquivo NovaEmpresaServlet eu não tinha adicionado o registro na classe Banco.

Corrigi este pedaço final do código e agora está funcionando!


    Banco banco = new Banco();
        banco.adiciona(empresa);