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