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

Dúvida sobre a instanciação do Banco no ListaEmpresasServlet

Olá :)

Estou na reta final do curso e, ao revisar a lógica do código, eu não entendi algo que foi feito lá no início e gostaria mto da ajuda da comunidade!

Em ListaEmpresasServlet.java eu instancio um novo Banco (vide código a seguir), que possui 2 empresas já cadastradas de maneira estática dentro da classe Banco. Minha dúvida é: como eu consigo imprimir, em listaEmpresas.jsp, não só as 2 empresas cadastradas "estaticamente" mas também a empresa que foi criada em outro Servlet, no NovaEmpresaServlet.java, e que foi adicionado em outro Banco? *

package br.com.alura.gerenciador.servlet;

import java.io.IOException;
//.... todos os imports ocultados aqui


@WebServlet("/listaEmpresas")
public class ListaEmpresasServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Banco banco = new Banco();
        List<Empresa> lista = banco.getListaDeEmpresas();

        request.setAttribute("empresas", lista);

        RequestDispatcher rd = request.getRequestDispatcher("/listaEmpresas.jsp");
        rd.forward(request, response);
    }
}

NovaEmpresaServlet.java:

package br.com.alura.gerenciador.servlet;

import java.io.IOException;
//.... todos os imports ocultados aqui

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

    private static final long serialVersionUID = 1L;

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

        String nomeDaEmpresa = request.getParameter("nome");
        String paramDataEmpresa = request.getParameter("data");

        Date dataAbertura = null;

        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            dataAbertura = sdf.parse(paramDataEmpresa);
        } catch (ParseException e) {
            throw new  ServletException(e);
        }

        Empresa empresa1 = new Empresa();
        empresa1.setNome(nomeDaEmpresa);
        empresa1.setDataAbertura(dataAbertura);

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

        response.sendRedirect("listaEmpresas");

    }
}
1 resposta
solução!

Oie Pedro, tudo bem contigo?

Isso é possível ser feito justamente por causa do "static", na classe "Banco", a lista que guarda as empresas foi criada usando o "static", ou seja, ela "faz parte da classe" e não do objeto. Ou seja, sempre que chamados o método "adiciona" ele guarda uma empresa dentro dessa lista "static", que é uma lista "universal" que todos os objetos "Banco" possuem.

Espero ter ajudado!

Se ainda tiver alguma dúvida estarei por aqui :)