1. En la aplicación apptags se tiene el formulario form.html, que simula una inscripción para participar en un concurso. El supuesto concursante debe dar sus datos (nombre, dirección y email), y datos de su acompañante (nombre, y relación entre ambos, a elegir de una lista de opciones). Se pide completar la página param.jsp para que:
Como ejercicio final de JSP vamos a realizar un concurso online, con preguntas al estilo Trivial, dentro de la aplicación concurso. Para ello necesitaremos:
Clases Java
Para ello el bean tendrá 3 campos, uno para cada dato a almacenar:
package beans; public class UsuarioBean { String nombre; int aciertos; int fallos; ...
Además, deberemos añadir los métodos getXXX() y setXXX() para cada campo de la clase.
Ficheros JSP
Por otra parte, la aplicación tendrá las siguientes páginas JSP:
<jsp:useBean id="usuario" class="beans.UsuarioBean" scope="..."> <jsp:setProperty name="usuario" property="nombre" value="..."/> <jsp:setProperty name="usuario" property="aciertos" value="0"/> <jsp:setProperty name="usuario" property="fallos" value="0"/> </jsp:useBean>
Valorar el ámbito que debe tener dicho bean para que sólo lo pueda ver el usuario que entra, mientras esté utilizando la aplicación. Después, redirigirá a concurso.jsp.
Consideraciones sobre la implementación
<html> <body> ¿De qué color era el caballo blanco de Santiago? <br> <form action="..."> <input type="hidden" name="correcta" value="Blanco"> <input type="radio" name="respuesta" value="Rojo">Rojo <br> <input type="radio" name="respuesta" value="Azul">Azul <br> <input type="radio" name="respuesta" value="Blanco">Blanco <br> <input type="submit" value="Enviar"> </form> </body> </html>
NOTA: observad cómo, aparte de las opciones a contestar en la pregunta, se incluye un campo oculto con la respuesta correcta. Luego, desde result.jsp, basta comparar la respuesta que ha dado el usuario con dicho campo, e incrementar los aciertos o los fallos.
Después, se redirigirá al fichero que se quiera desde la página concurso.jsp, con algo como:
... <% response.sendRedirect("preguntas/pregunta_i.jsp"); %> ...
... <% int NUM_PREGUNTAS = 20; %> ...
Podemos utilizar la clase java.util.Random:
... <% java.util.Random r = new java.util.Random(); int num = r.nextInt(NUM_PREGUNTAS); %> ...que devolvería un número entre 0 y NUM_PREGUNTAS -1. Luego al hacer el redirect, podemos colocar dicha variable como sufijo del fichero al que redireccionar.
... <jsp:setProperty name="usuario" property="aciertos" value="<jsp:getProperty name="usuario" property="aciertos"/> + 1" /> ...
Pero debemos tener en cuenta que todo bean se guarda como un campo más del servlet, con lo que podremos hacer:
... <jsp:setProperty name="usuario" property="aciertos" value="<%=usuario.getAciertos() + 1" /> ...
(OPTATIVO)
Se proponen los siguientes elementos optativos sobre la aplicación: