Ver Mensaje Individual
  #9 (permalink)  
Antiguo 24/08/2011, 00:16
Avatar de atapuerkasman
atapuerkasman
 
Fecha de Ingreso: febrero-2011
Mensajes: 76
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Enviar datos al cliente desde un servlet

Vale de acuerdo, a lo que yo me refiero es como recupero luego ese dato en el cliente. Este es más o menos el código de mi servlet.

Código:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		PrintWriter out = response.getWriter();
		ArrayList<String> error = new ArrayList<String>();
		Boolean flag=true;
		
		String nombre= request.getParameter("nombre");
		String pass=request.getParameter("password");
		
		String text="";
		if(nombre.length()<=3 || (nombre.length()>16) || (nombre.isEmpty())){
			//tamño del nick entre 4 y 15
			System.err.println("Nick: El tamaño debe ser entre 4 y 15");
			text="Error en el Nick: Tamaño debe estar entre 4 y 15";
			error.add(text);
			flag=false;
		}
		if(pass.length()<=5 ||( pass.length()>16) || (pass.isEmpty())){
			//tamaño del pass entre 6 y 15
			System.err.println("Pass:El tamaño debe ser entre 6 y 15");
			text="\nError en el password: Tamaño debe estar entre 6 y 15";
			error.add(text);
			flag=false;
		}
		
		if(!Controlador.Loguearse(nombre, pass)){
		
			System.err.println("El nombre/password incorrecto/s\n");
			text="\nEl nombre/password incorrecto/s";
			error.add(text);
			flag=false;
		}
		if(flag){
			//Aqui hay que conectar al usuario y crear cookies o objetos de sesion
			System.out.println("Hasta aqui lo hace");
			String imagen= Controlador.getUsuario(nombre).getImg_perfil();
			int puntuacion= Controlador.getJuego(nombre).getPuntuacion();
			response.setHeader("usuario", nombre);
			response.setHeader("password", pass);
			response.setHeader("imagen", imagen);
			response.setIntHeader("puntuacion", puntuacion);
			

//Aqui es donde he añadido lo que tu me has dicho, en lugar de en las cabeceras
			request.setAttribute("nombre", nombre);
			
			System.out.println("Esto tambien");
			
		}else{
			for(String err: error){
				out.println(err);
			}
		}
		
		
		out.close();
	}

A lo que yo me refiero es: si el request es la petición, ¿no habría que envíar los datos en el response? que supuestamente es la respuesta del servidor al cliente.

En caso de que haya que utilizar el request, que código es necesario para recuperar el atributo "nombre" en el cliente.
yo lo he hecho así:

Código:
public HttpParams parametrosRespuesta_noheader(){
		HttpParams parametros;
		
		parametros= request.getParams();
		return parametros;
	}
El problema es que me da error de puntero vacío ya que el request no contiene nada, a esto me refería con como tengo que inicializar el request(dentro del cliente) para que pueda recuperar los parametros.

por ejemplo, cuando yo inicializo la variable response lo hago en esta linea

response = httpcliente.execute(post);

Supongo que tengo que hacer lo mismo con el request, pero no se como.

No se si me he explicado, sino dimelo.

Muchas gracias