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:
index.jsp<%@ 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> <% } %>
Código:
Buscador.java<%@ 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>
Código:
result.jspimport 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); } }
Código:
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.<%@ 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>
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