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

[SOLUCIONADO] Problemas con Cookie

Estas en el tema de Problemas con Cookie en el foro de Java en Foros del Web. Buenos días, estoy haciendo un ejercicio sobre una aplicación web siguiendo el patrón MVC. la primera vez que se abre index.jsp nos pide un nombre ...
  #1 (permalink)  
Antiguo 24/11/2014, 06:25
Avatar de elpivelardin  
Fecha de Ingreso: agosto-2014
Mensajes: 8
Antigüedad: 9 años, 8 meses
Puntos: 0
Problemas con Cookie

Buenos días,

estoy haciendo un ejercicio sobre una aplicación web siguiendo el patrón MVC. la primera vez que se abre index.jsp nos pide un nombre que se va a recordar después a través de una cookie y una id que buscaremos en una bd derby.

cabecera.jsp
Código:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<% 
	Cookie cookie = null;
	Cookie[] cookies = request.getCookies();
	
	if(cookies!=null){
		for(int i=0;i<cookies.length;i++){
		System.out.println("Cabecera: "+cookies[i].getName());
			if(cookies[i].getName().equals("MENTORDATOS")){
				cookie = cookies[i];
%>
				Búsquedas de <%= cookie.getValue() %><br><br>
<%
				break;
			}
		}
	}
	if(cookie == null){
%>
		<table>
			<tr>
				<td>Nombre y apellidos:</td>
				<td><input name="nombre"></td>
			</tr>
		</table>
<% 
	}
%>
index.jsp
Código:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Consultas de Avistamientos</title>
</head>
<body>
	<form method="post" action="Buscador">
	<%@ include file="/cabecera.jsp" %>
	<table>
		<tr>
			<td>Identificador de anilla</td>
			<td><input name="anilla"></td>
		</tr>
		<tr>
			<td><input type="submit" value="Buscar">  <input type="reset" value="Limpiar"></td>
		</tr>
	</table>
	</form>
</body>
</html>
Buscador.java
Código:
import java.io.IOException;
import java.util.ArrayList;

import javax.annotation.Resource;
import javax.sql.DataSource;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import es.aulamentor.Avistamiento;

@WebServlet(name="Buscador", urlPatterns={"/Buscador"})

public class Buscador extends HttpServlet{

	private static final long serialVersionUID = 1L;
	@Resource (name="java:comp/env/jdbc/TestDB")
	DataSource ds;

	protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
		
		
		String anilla = request.getParameter("anilla");
		String nombre = request.getParameter("nombre");
		if(nombre != null){
			Cookie cookie = new Cookie("MENTORDATOS",nombre);
			cookie.setMaxAge(60*60*24*30);
			response.addCookie(cookie);
		}
		Acceso acceso = new Acceso();
		ArrayList<Avistamiento> aux = acceso.getResultados(ds,anilla);
		request.setAttribute("resultado",aux);
		request.getRequestDispatcher("/result.jsp").forward(request,response);
	}
}
result.jsp
Código:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="es.aulamentor.Avistamiento" %>
<%@ page import="java.util.ArrayList" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Consulta de Avistamientos</title>
</head>
<body>
	<%@ include file="/cabecera.jsp" %>
	<%
		ArrayList<Avistamiento> aux = (ArrayList<Avistamiento>)request.getAttribute("resultado");
		if(aux.size() != 0){
	%>
		<%= aux.get(0).getEspecie() %><br>
		<ul>
	<%
			for(int i=0;i<aux.size();i++){
	%>
		<li type="disc"><%= aux.get(i).getFecha() %> en <%= aux.get(i).getLugar() %></li>

	<%
			}
	%>
		</ul>
	<%
		}else{
	%>
		No se encontraron citas para dicha anilla.<br>
	<%
		}
	%>
	<br>
	<a href="/U3.7A2/index.jsp">Realizar una nueva consulta...</a>
</body>
</html>
Realiza las búsquedas de manera correcta y muestra también de manera correcta los datos. Pero a la hora de crear la Cookie y hacer el addCookie, no muestra en result.jsp el nombre. Si volvemos al index.jsp ya lo muestra y funciona también en result.jsp.

Mi intención es que una vez creada la cookie se muestre ya el nombre del usuario la primera vez que vez que se visite la página de result.jsp

¿Me podríais ayudar?
Gracias y un saludo
  #2 (permalink)  
Antiguo 24/11/2014, 10:13
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: Problemas con Cookie

Hola,
a mi me da la sensación que la cookie sí te la crea correctamente pero no te muestra el nombre porque no te está funcionando el request.getAttribute("nombre").

Para probar si la cookie es correcta, en result.jsp comprueba si tienes la cookie creada tal y como haces en cabecera.jsp, si la tienes puedes mostrar el nombre directamente desde allí al mismo tiempo que te has asegurado que tienes la cookie creada.
En resumen, en result.jsp mostrar el "nombre" desde la cookie que acabas de crear

Saludos
  #3 (permalink)  
Antiguo 24/11/2014, 10:42
Avatar de elpivelardin  
Fecha de Ingreso: agosto-2014
Mensajes: 8
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Problemas con Cookie

Cita:
Iniciado por ElAthlit Ver Mensaje
Hola,
a mi me da la sensación que la cookie sí te la crea correctamente pero no te muestra el nombre porque no te está funcionando el request.getAttribute("nombre").

Para probar si la cookie es correcta, en result.jsp comprueba si tienes la cookie creada tal y como haces en cabecera.jsp, si la tienes puedes mostrar el nombre directamente desde allí al mismo tiempo que te has asegurado que tienes la cookie creada.
En resumen, en result.jsp mostrar el "nombre" desde la cookie que acabas de crear

Saludos
Por lo que me has dicho he visto que efectivamente no la crea. En el archivo cabecera (del cual hacen uso index y result) he puesto que si no encuentra la cookie que la cree allí mismo sin valor y la añado al response.

Luego la busco en el servlet y le añado el valor, y la vuelvo a añadir. De esta manera ya funciona perfectamente.

Muchas gracias!
  #4 (permalink)  
Antiguo 27/11/2014, 10:32
 
Fecha de Ingreso: marzo-2014
Mensajes: 3
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Problemas con Cookie

Muy buenas!!!

ando mas o menos con tu mismo problema, ¿podría poner como le queda el código al final?

Muchas gracias!

Saludos!!

Etiquetas: cookie, jsp, servlet, string
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 17:50.