Foros del Web » Programación para mayores de 30 ;) » Java »

ArrayList se vacía

Estas en el tema de ArrayList se vacía en el foro de Java en Foros del Web. Hola a tod@s!! tengo un problema al utilizar ArrayList. Concretamente, se vacía cuando intento agregar un elemento nuevo desde otra clase. En mi caso, estoy ...
  #1 (permalink)  
Antiguo 21/08/2015, 11:01
 
Fecha de Ingreso: agosto-2015
Mensajes: 2
Antigüedad: 8 años, 8 meses
Puntos: 0
ArrayList se vacía

Hola a tod@s!!
tengo un problema al utilizar ArrayList. Concretamente, se vacía cuando intento agregar un elemento nuevo desde otra clase.
En mi caso, estoy utilizando servlets. Es un ejemplo básico.
Tengo un formulario en index.html donde inserto nombres.
Los capturo con request.getParameter y luego los inserto en un arrayList. Hasta ahí bien.
Ahora tengo un enlace a otra web ("borrar.html") para borrar un array de la lista pero no ve el array. Siempre está vacío. Lo mismo sucede cuando intento agregar nombres.

//Nombres.java


import java.util.ArrayList;
import java.util.Iterator;

public class Nombres
{
public ArrayList<String>nombres=null;

public Nombres()
{
nombres= new ArrayList<String>();
}

void guardarNombre(String name)
{
nombres.add(name);
}

void borrarNombre(String name)
{
nombres.remove(name);
}

void mostrarNombres()
{
Iterator it = nombres.iterator();
while(it.hasNext())
System.out.println(it.next());

}
void agrega()
{
nombres.add("jose");
nombres.add("mateo");
nombres.add("ana");

}

}

//index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Formulario Login2</title>
</head>
<body>
<form action="Login3" method="post">
<b3>Nombre <input type="text" name="nombre">

<input type="submit" name="Enviar">
</form>
</body>
</html>

//Login3.java


import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;

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 Login3
*/
@WebServlet("/Login3")
public class Login3 extends HttpServlet {
private static final long serialVersionUID = 1L;



/**
* @see HttpServlet#HttpServlet()
*/
public Login3()
{

super();

}




protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//request.getSession();

Nombres n = new Nombres();

String log;
log = request.getParameter("nombre");


n.guardarNombre(log);
System.out.println("LISTADO DE NOMBRES EN EL ARRAY:");
System.out.println(n.nombres);
System.out.println("agrega usuarios 3 de agrega():");
n.agrega();
System.out.println(n.nombres);




PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<BODY>");
out.println("BIENVENIDO");
out.println("<br>");
out.println("El nombre es: "+log);
out.println("<br>");


out.println(" <A href=\"./index.html\">INICIO...</A>");
out.println("AGREGAR:");
out.println(" <A href=\"./borrar.html\">BORRAR USUARIOS...</A>");


out.println("</BODY>");
out.println("</HTML>");
}

}

//Borrar.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Usuario Nuevo</title>
</head>
<body>
<form action="Borrar" method="POST">
Nombre:<input name="nombre"> <br/>

<input type="submit" value="Enviar">
</form>
</body>
</html>

//Borrar.java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;

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 Borrar
*/
@WebServlet("/Borrar")
public class Borrar extends HttpServlet {
private static final long serialVersionUID = 1L;



/**
* @see HttpServlet#HttpServlet()
*/
public Borrar() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub

Nombres n = new Nombres();

String name = request.getParameter("nombre");

n.borrarNombre(name);
System.out.println("Listado de nombres:");
n.mostrarNombres();



PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<BODY>");
out.println("NUEVO");
out.println("<br>");
out.println("El login para borrar es: "+name);
out.println("<br>");

out.println(" <A href=\"./index.html\">INICIO...</A>");

out.println("</BODY>");
out.println("</HTML>");
}

}

Última edición por gemelo_j; 21/08/2015 a las 11:10
  #2 (permalink)  
Antiguo 21/08/2015, 14:14
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 15 años, 5 meses
Puntos: 13
Respuesta: ArrayList se vacía

Deberías declarar el ArrayList como static... supongo que lo que estás haciendo es aprendiendo... porque no deberías definir este tipo de cosas en un servlet...
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #3 (permalink)  
Antiguo 21/08/2015, 17:13
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: ArrayList se vacía

Siquieres mantener un dato en distintas páginas, o lo vas pasando de llamada en llamada o lo guardas en la sesión.

http://www.galisteocantero.com/sesio...-login-logout/

Cita:
Deberías declarar el ArrayList como static...
Cuando

Cita:
se vacía cuando intento agregar un elemento nuevo desde otra clase.
Ojo

http://docs.oracle.com/javase/7/docs...ArrayList.html

Cita:
Note that this implementation is not synchronized. If multiple threads access an ArrayList instance concurrently, and at least one of the threads modifies the list structurally, it must be synchronized externally. (A structural modification is any operation that adds or deletes one or more elements, or explicitly resizes the backing array; merely setting the value of an element is not a structural modification.)
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #4 (permalink)  
Antiguo 22/08/2015, 11:02
 
Fecha de Ingreso: agosto-2015
Mensajes: 2
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: ArrayList se vacía

Ok, muchas gracias.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:59.