jueves, 30 de mayo de 2013

Ejercicios de clase. Clase 4: ejemplo de uso de filtros para controlar el acceso a recursos

Emplea un filtro para controlar el acceso a un servlet. Para ello, establece un parámetro de inicio del filtro con el valor de la contraseña de acceso. El cliente envía la contraseña de acceso desde el cuadro de texto de un formulario al servlet y el filtro intercepta la comunicación comprobando si la contraseña es correcta. En caso de que no lo sea responderá con un código de error HTTP 401 (Unauthorized) que nos llevará a una página JSP de error donde se visualizará la razón del rechazo del acceso y nos mostrará de nuevo el cuadro de texto para reintentarlo.


El usuario ha de introducir la contraseña para acceder al Servlet

Si la contraseña es incorrecta se nos insta a reintentar el acceso.

Si la contraseña es la esperada ("123" en el ejemplo) accedemos al servlet, que nos muestra la salida.


Diapositivas. Clase 4. Servlets (apartado de filtros)

(A partir de la diapositiva 57)

miércoles, 29 de mayo de 2013

Ejercicio de clase. Clase 3: Sumador con reseteo.

Implementa una aplicación web que permita ir enviando al servidor un sumando cada vez, de manera que con cada solicitud devuelva la suma acumulada durante las sucesivas peticiones. Para poder cancelar la secuencia y volver a empezar debe disponer de un enlace para resetear.

 

Formulario de envío de los sucesivos valores
 

Página JSP mostrando el resultado de la suma acumulada


Descargar solución (proyecto NetBeans para GlassFish)

Ejercicios de clase. Clase 3: Piedra, papel, tijeras.


Siguiendo un esquema Modelo-Vista-Controlador como el visto en clase que emplee Java Beans,  páginas JSP y Servlets para cada rol, implementa una aplicación web que emule el clásico juego de "Piedra, papel, tijeras". Cuando el usuario accede al sitio por primera vez obtiene un formulario donde puede escoger entre una de esas tres opciones. Después de enviar el formulario, en el lado del servidor se generará un valor aleatorio que se corresponderá también con uno de esos tres conceptos. Tras comprobar quién ha ganado (el cliente o el servidor) se mostrará el resultado al cliente haciendo constar las partidas ganadas que cada uno acumula y las jugadas ganadas por ambos durante la partida actual.

El número máximo de jugadas por partida será de 5 pero presumiblemente este valor podrá ser modificado en un futuro por lo que no deberá ser una constante que forme parte del código sino que deberá ser un parámetro recogido del descriptor de despliegue. Sería conveniente también que el usuario de la aplicación dispusiese de un enlace que le permitiese cancelar el juego y empezar de nuevo si así lo desea.

TIP:

Para conseguir un número entero entre M y N con M menor que N, debemos usar esta fórmula


    int valorEntero = Math.floor(Math.random()*(N-M+1)+M);


 
 
 
 
 Descargar solución propuesta (proyecto NetBeans para GlassFish)
 

 
Alternativa para la inicialización del parámetro del número de jugadas por partida empleando anotaciones en lugar de hacerlo en el descriptor de despliegue:



 

Esquema explicativo del funcionamiento de las cookies.


martes, 28 de mayo de 2013

Ejercicios de clase. Clase 2: Mejora al ejercicio 1 mediante un servlet

a) Intenta mejorar la solución adoptada en el ejercicio 1 mediante la separación entre las partes de vista, control y lógica de operaciones. Para ello implementa un servlet que actúe como controlador recibiendo el valor numérico del cliente y que, apoyándose en un Java Bean, le pase el control a una página JSP que visualice el resultado de la raíz cuadrada del valor a partir de las propiedades del Java Bean, tal y como se muestra en la figura.


 

b) Empleando la clase Cookie y los métodos para leer y escribir cookies de los objetos request y response añade la funcionalidad al programa anterior de visualizar el número de veces que el cliente ha efectuado peticiones sobre el servidor durante su sesión. 

 
Con cada nuevo cálculo el servlet controlador actualiza el contador de peticiones

 

Descargar solución (proyecto NetBeans para GlassFish)


Diapositivas. Clases 2, 3 y 4: Servlets y JSP

Ejercicios de clase. Clase 1: fundamentos de JSP

Crea un sencilla aplicación web empleando sólamente páginas JSP que permita a un usuario desde su navegador introducir un valor numérico en un cuadro de texto y recibir como respuesta la raíz cuadrada de dicho número, tal y como se indica en las siguientes imágenes. No es necesario que tengas en cuenta ningún tipo de validación.


Página index.jsp


Página JSPcalculos.jsp



  1. El cliente accede al servidor mediante su navegador y recibe una página con un sencillo formulario web donde puede introducir el valor.
  2. Al pulsar el botón Enviar del formulario el valor se envía al servidor vía HTTP mediante el método POST.
  3. El servidor procesa la petición a través de la página JSPcalculos que toma el parámetro de entrada, lo convierte a formato numérico, calcula la raíz cuadrada y devuelve el resultado al cliente (mezcla poco recomendable de aspectos de vista, control  y proceso que mejoraremos en futuros ejercicios)

Diapositivas. Clase 1: Introducción a la plataforma Java EE