[RESOLVIDO]Como inseir e listar o objetos dentro da sessao?

Boa tarde estou com dificuldade em fazer um procedimento simples, basicamente e recuperar o valor que o usuario preencheu , armazenar em uma sessao, encaminhar o usuario a uma pagina onde ele escolhe criar mas ou imprimir as criadas, se for criar + repete o recupera o valor que o usuario digitou , armazena na sessao e deixa disponivel para a impresao.
o problema e na na tela de impresao so aparece a ultima variavel armazenada na sessao nao todas como quero.

alguem tem uma ideia de como contornar isso???

segue as classes

servlet que pega os valores do cliente


ArrayList<ProdutoBean> lista= new ArrayList<>();;

	pb=new ProdutoBean();
	pb.setSkuGcom(Integer.parseInt(request.getParameter("sku")));
	pb.setNomeGcom(request.getParameter("desc"));
	pb.setPrecoGcom(Float.parseFloat(request.getParameter("preco")));
	pb.setQntEtq(Integer.parseInt(request.getParameter("qnt")));
	
	
	lista.add(pb);// adiciono o obj a lista
	
	HttpSession session = request.getSession(true);// recupero a sessao
	
	session.setAttribute("lista", lista);//jogo a lista na sessao
	System.out.println( pb.getNomeGcom());
	
	
	RequestDispatcher rd = request.getRequestDispatcher("View/+EtqPersonalizado.jsp");
 rd.forward(request, response);// o usuario e encaminhado para pagina de escolha imprime ou faz mais
	

EtqPersonalizado


<form action="View/EtiquetaPersonalizada.jsp">
 <input type="submit" value="Criar +">// volta para pagina que fornece os parametros para servlet
</form>
View/EtiquetaPersonalizada.jsp
<form action="View/a.jsp">
 <input type="submit" value="Imprimir"> //exibe a pagina que deveria mostrar todos as etiquetas feitas pelo usuario, porem so mostra a ultima 
</form>

pagina responsavel pela vizualizacao da lista

<c:forEach  var="lp" items="${lista}">
 nome   ${lp.nomeGcom}

//aki se o usuario tiver feito tres etiquetas deveria aparecer   o nome que ele deu a elas , mas so exibe ultimo :(
</c:forEach>

como dito a ideia e que quando o cliente acione imprimir apareca as lista de etiquetas deitas por ele?

desde já obrigado a todos pela ateção

Tomará que eu tenha entendi mas esse codigo aqui

ao ser chamado pela segunda vez vai sobrepor o primeiro ficando sempre o ultimo adicionado isso é o erro

e como fazer para que na segunda vez seja inserido e não substituído , alguma ideia??

ArrayList&lt;ProdutoBean&gt; lista =   (ArrayList&lt;ProdutoBean&gt;)session.getAttribute("lista");

  if (lista == null){
   lista = new ArrayList&lt;ProdutoBean&gt;();;  
}
  
    pb=new ProdutoBean();  
    pb.setSkuGcom(Integer.parseInt(request.getParameter("sku")));  
    pb.setNomeGcom(request.getParameter("desc"));  
    pb.setPrecoGcom(Float.parseFloat(request.getParameter("preco")));  
    pb.setQntEtq(Integer.parseInt(request.getParameter("qnt")));  
      
      
    lista.add(pb);// adiciono o obj a lista  
      
    HttpSession session = request.getSession(true);// recupero a sessao  
      
    session.setAttribute("lista", lista);//jogo a lista na sessao  
    System.out.println( pb.getNomeGcom());  
      
      
    RequestDispatcher rd = request.getRequestDispatcher("View/+EtqPersonalizado.jsp");  
rd.forward(request, response);// o usuario e encaminhado para pagina de escolha imprime ou faz 

Obrigado, era exatamente isso que precisava…