SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
"
Sistemas de Información 12/13
Ejercicios Tecnologías Web
Departamento Informática e Ingeniería de Sistemas
Universidad de Zaragoza
 
  
  
Raquel Trillo Lado (raqueltl@unizar.es)
Guión
 Introducción sesiones y cookies con
Servlets
 Ejercicio 1: Preguntas breves temario Web
(Semana anterior)
Sistemas de Información Raquel Trillo Lado
 En un gran porcentaje de aplicaciones existe un proceso
de autenticación/validación de usuario. Una vez el usuario
ha accedido al sistema con su nombre de usuario y palabra
clave, en función de sus permisos se le permiten unas
operaciones u otras
 Concepto de sesión: Espacio de tiempo ocupado por la
actividad del usuario desde que accede al sistema hasta que lo
abandona
 Problema: El protocolo HTTP no tiene estado, cada petición es
independiente. Sin embargo en las aplicaciones web que
conocemos:
 El usuario no inserta su clave y nombre de usuario cada vez que realiza
una operación sino que la realiza una sóla vez al inicio
Sistemas de Información Raquel Trillo Lado
Introducción: Sesiones en aplicaciones Web
 La mayor parte de las APIs para desarrollo de
aplicaciones Web proporcionan mecanismos para
gestionar sesiones
 API Servlets:
 Crea una sesión en el servidor por cada navegador que
accede a la aplicación Web, la cual se modela con el objeto
javax.servlet.http.HttpSession
 Cada petición del cliente (request) tiene asociada una
sesión, para acceder a ella se realiza una llamada al método
getSession() de los objetos HTTPServletRequest
 request.getSession() devuelve el objeto de la sesión actual
si este existe. Si no existe crea el objeto sesión antes
Sistemas de Información Raquel Trillo Lado
Introducción: Sesiones en aplicaciones Web
 El objeto HttpSession permite almacenar
objetos y recuperarlos:
Sistemas de Información Raquel Trillo Lado
Introducción: Sesiones en aplicaciones Web
HttpSession
+setAttribute (clave:String, valor: Object): void
//Puede lanzar Excepciones
+getAttribute (clave:String): Object
//Puede lanzar excepciones
 Para que el servidor de aplicaciones Web
(Tomcat) pueda saber qué objeto sesión
corresponde a cada petición HTTP se
emplean dos mecanismos principalmente:
 El navegador del cliente no acepta cookies
 Cuando se construyen las URLs de la
aplicación se incluye un parámetro para
identificar la sesión (jsessionid)
 El navegador del cliente acepta cookies
 Se envía en una cookie al inicio de la sesión el
identificador de la sesión (jsessionid)
Sistemas de Información Raquel Trillo Lado
Introducción: Sesiones en aplicaciones Web
 Transcurrido un cierto tiempo (timeout) sin
que el navegador acceda a la aplicación Web,
el servidor de aplicaciones Web (Tomcat)
destruye el correspondiente objeto sesión:
 Porque no existen mecanismos que le permitan al
servidor saber si el navegador cliente ha dejado de
usar la aplicación web
 Por motivos de escalabilidad
Sistemas de Información Raquel Trillo Lado
Introducción: Sesiones en aplicaciones Web
 La mayor parte de las APIs para desarrollo de aplicaciones
Web proporcionan mecanismos para gestionar cookies en el
navegador del usuario:
 Cookie: Es un par (nombre de parámetro, valor del parámetro),
donde tanto el nombre como el valor son cadenas de caracteres
 La cookie correspondiente a jsessionid se gestiona
automáticamente
 Gestión de cookies en Servlets:
 Creación: Cookie cookie = new Cookie (“login”, userLogin);
 Envío al cliente: response.addCookie(cookie);
 Recuperación en el servidor: Cookie[] cookies =
request.getCookies();
 Cada navegador debería soportar alrededor de 20 cookies por
cada sitio Web y 300 en total. Además cada navegador suele
limitar el tamaño de cada cookie a 4 KBytes
Sistemas de Información Raquel Trillo Lado
Introducción: Cookies en aplicaciones Web
Sistemas de Información Raquel Trillo Lado
Ejercicio 1:
 Dado el siguiente formulario HTML (login.jsp), el fichero de configuración
web web.xml y las clases que modelan la lógica de negocio de la
aplicación, diseñar los servlets y páginas JSP necesarios para obtener el
siguiente comportamiento:
 Si el usuario no inserta en nombre de usuario o la clave el sistema le
debe informar de ello y permitirle subsanar el problema.
 Si el valor de la clave no coincide con el requerido se debe informar al
usuario y permitirle que vuelva a teclearla.
 Si el nombre de usuario no existe en el sistema se debe informar al
usuario y permitirle que subsane el problema.
 Si realiza el proceso de autenticación correctamente se debe informar
de ello y saludarlo.
 Si el usuario tiene almacenada una cookie con la clave de acceso y otra
con el nombre de usuario se deben rellenar los campo
automáticamente.
Sistemas de Información Raquel Trillo Lado
Ejercicio 1: login.jsp
Sistemas de Información Raquel Trillo Lado
Ejercicio 1: login.jsp
?xml version=1.0 encoding=UTF-8?
web-app version=2.5 xmlns=“http://java.sun.com/xml/ns/javaee”
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation=http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
display-nameMi primera aplicación Web/display-name
!-- ================ Servlets ================ --
servlet
servlet-nameLoginUsuario/servlet-name
servlet-classmiprimeraaplicacion.LoginUsuarioServlet
/servlet-class
/servlet
Sistemas de Información Raquel Trillo Lado
Ejercicio 1: web.xml
!-- ===--========= Servlets Mapping======= --
servlet-mapping
servlet-nameLoginUsuario/servlet-name
url-pattern/LoginUsuario.do/url-pattern
/servlet-mapping
!-- ============ Welcome page ========= --
welcome-file-list
welcome-filelogin.jsp/welcome-file
/welcome-file-list
/web-app
Sistemas de Información Raquel Trillo Lado
Ejercicio 1: web.xml
Sistemas de Información Raquel Trillo Lado
Ejercicio 1: Fachada lógica negocio
MiAplicacionFachada
+validarUsuario (login:String, clave: String, encriptada:boolean): ResultadoLoginVO
//Puede lanzar Excepciones: InvalidPasswordException, InvalidUserException
ResultadoLoginVO
-login: String
-claveEncriptada: String
-Nombre: String
+getLogin (): String
+getClaveEncriptada(): String
+getNombre():String
Sistemas de Información Raquel Trillo Lado
Ejercicio 1: Solución LoginUsuarioServlet
package miprimeraaplicacion;
public class LoginUsuarioServlet extends HttpServlet{
public void doPost( HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
MapString, String errors = new HashMap String, String();
String login = request.getParameter(“login”);
String clave = request.getParameter(“apellido”);
String recordar = request.getParameter(“recordar”);
String estaEncriptado = request.getParameter(“estaEncriptado”);
if (login == null) errors.add(“Login”, “Campo obligatorio”);
if (clave == null) errors.add(“Clave”, “Campo obligatorio”);
if (errors.isEmpty()){
//Llamada a la lógica de negocio
}
if (!errors.isEmpty()){
//Redirección a la página de entrada con el mapa de errores
}
}
}
Sistemas de Información Raquel Trillo Lado
Ejercicio 1: Llamada a la lógica de negocio
MiAplicacionFacade f = new MiAplicacionFacade();
try{
boolean encriptado = false;
if (estaEncriptado != null)  (estaEncriptado.equals(“Si”) encriptado = true;
ResultadoLoginVO r = f.validarUsuario(login, clave, encriptado);
HttpSession s = request.getSession();
s.setAttribute (“nombre”, r.getNombre());
if (recordar != null)  (recordar.equals(“Si”) {
Cookie cookieLogin = new Cookie (“loginUsuario”, login);
Cookie cookieClave = new Cookie (“claveUsuario”, r.getClaveEncriptada);
response.addCookie(cookieLogin);
response.addCookie(cookieClave);
}
response.sendRedirect(“bienvenida.jsp”);
} catch (InvalidPasswordException e) {
errors.add(“Clave”, “Clave de acceso errónea”);
//Redirección a la página de entrada con el mapa de errores
} catch (InvalidUserException e) {
errors.add(“Login”, “El usuario no se encuentra registrado”);
//Redirección a la página de entrada con el mapa de errores
}
Sistemas de Información Raquel Trillo Lado
Ejercicio 1: Redirección a la página de entrada
request.setAttribute(“errores”, errors);
RequestDispatcher dispatcher = request.getRequestDistpatcher(“login.jsp”);
dispatcher.forwardTo(request, response);
Sistemas de Información Raquel Trillo Lado
Ejercicio 1: bienvenida.jsp
Opción 1:
%= session.getAttribute(“Nombre”) %
Opción 2:
% String nombre = “”;
if (session.getAttribute(“Nombre”) != null) {
nombre = session.getAttribute(“Nombre”);
}
%
%= nombre %
Sistemas de Información Raquel Trillo Lado
Ejercicio 1: login.jsp
% @ page import = “java.util.Map” %
%
String valorEncriptado = “No”;
String loginError = “”;
String claveError = “”;
String loginValor = “”;
String claveValor = “”;
Map String, String er=(Map String, String)
request.getAttribute(“errores”);
if (er != null){
String cabecera = “span style=”color:red””;
String final = “/span”;
if (er.containsKey(“login”)) loginError = cabecera + er.get(“login”)+ final;
if (er.containsKey(“clave”)) loginError = cabecera + er.get(“clave”)+ final;
loginValor = request.getParameter(“login”);
claveValor = request.getParameter(“apellido”);
}else { //Manejo de cookies}
%
Sistemas de Información Raquel Trillo Lado
Ejercicio 1: login.jsp-Manejo Cookies
% @ page import = “java.util.Map” %
% //Manejo de cookies
Cookie [] cookies = request.getCookies();
for (i=0; icookies.size(); i++){
String nombreCookieI = cookies[i].getName();
if (nombreCookieI.equals(“loginUsuario”))
loginValor = cookies[i].getValue();
if (nombreCookieI.equals(“claveUsuario”)){
claveValor = cookies[i].getValue();
valorEncriptado = “Si”;
}
%
Sistemas de Información Raquel Trillo Lado
Ejercicio 1: login.jsp-Cambios en el formulario
Añadir el atributo value a los campos login y clave:
Ejemplo:
input type=“text” name=“login” value=“%= loginValor%” id=“idLogin”/
input type=“password” name=“apellido” value=“%= claveValor%”
id=“idApellidos”/
Añadir el control de errores a los campos login y clave
Ejemplo:
input type=“password” name=“apellido” value=“%= claveValor%”
id=“idApellidos”/ %= claveError%
Añadir la acción al formulario form action=“/LoginUsuario.do”
Añadir el campo oculto con la información de encriptación
input type=“hidden” name=“encriptado” value=“%=valorEncriptado%”

Más contenido relacionado

Similar a T10_Ejercicios_Solucion.pdf

Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointgoreorti
 
SALUDOS EN INGLES
SALUDOS EN INGLESSALUDOS EN INGLES
SALUDOS EN INGLESludiviarosa
 
Asp .Net Ajax: Patrones
Asp .Net Ajax: PatronesAsp .Net Ajax: Patrones
Asp .Net Ajax: Patronesjuliocasal
 
Desarrollo De Web Parts En Share Point2007
Desarrollo De Web Parts En Share Point2007Desarrollo De Web Parts En Share Point2007
Desarrollo De Web Parts En Share Point2007Luis Du Solier
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006Samuel Marrero
 
Barcelona Workshop 2008
Barcelona Workshop 2008Barcelona Workshop 2008
Barcelona Workshop 2008Mitusin
 
Mudate a ajax sin morir en el intento.
Mudate a ajax sin morir en el intento.Mudate a ajax sin morir en el intento.
Mudate a ajax sin morir en el intento.Iván García Villar
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"www.encamina.com
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NETwilliamsm
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverDavid Gómez García
 

Similar a T10_Ejercicios_Solucion.pdf (20)

Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePoint
 
Asp
AspAsp
Asp
 
Curso Java Avanzado 2 Servlets
Curso Java Avanzado   2 ServletsCurso Java Avanzado   2 Servlets
Curso Java Avanzado 2 Servlets
 
SALUDOS EN INGLES
SALUDOS EN INGLESSALUDOS EN INGLES
SALUDOS EN INGLES
 
Asp .Net Ajax: Patrones
Asp .Net Ajax: PatronesAsp .Net Ajax: Patrones
Asp .Net Ajax: Patrones
 
Desarrollo De Web Parts En Share Point2007
Desarrollo De Web Parts En Share Point2007Desarrollo De Web Parts En Share Point2007
Desarrollo De Web Parts En Share Point2007
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
 
Barcelona Workshop 2008
Barcelona Workshop 2008Barcelona Workshop 2008
Barcelona Workshop 2008
 
Ajax
AjaxAjax
Ajax
 
01 introducción
01 introducción01 introducción
01 introducción
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Ajax
AjaxAjax
Ajax
 
Mudate a ajax sin morir en el intento.
Mudate a ajax sin morir en el intento.Mudate a ajax sin morir en el intento.
Mudate a ajax sin morir en el intento.
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"
 
Cookies jsp
Cookies jspCookies jsp
Cookies jsp
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
Presentacion ajax
Presentacion   ajaxPresentacion   ajax
Presentacion ajax
 

T10_Ejercicios_Solucion.pdf

  • 1. " Sistemas de Información 12/13 Ejercicios Tecnologías Web Departamento Informática e Ingeniería de Sistemas Universidad de Zaragoza Raquel Trillo Lado (raqueltl@unizar.es)
  • 2. Guión  Introducción sesiones y cookies con Servlets  Ejercicio 1: Preguntas breves temario Web (Semana anterior) Sistemas de Información Raquel Trillo Lado
  • 3.  En un gran porcentaje de aplicaciones existe un proceso de autenticación/validación de usuario. Una vez el usuario ha accedido al sistema con su nombre de usuario y palabra clave, en función de sus permisos se le permiten unas operaciones u otras  Concepto de sesión: Espacio de tiempo ocupado por la actividad del usuario desde que accede al sistema hasta que lo abandona  Problema: El protocolo HTTP no tiene estado, cada petición es independiente. Sin embargo en las aplicaciones web que conocemos:  El usuario no inserta su clave y nombre de usuario cada vez que realiza una operación sino que la realiza una sóla vez al inicio Sistemas de Información Raquel Trillo Lado Introducción: Sesiones en aplicaciones Web
  • 4.  La mayor parte de las APIs para desarrollo de aplicaciones Web proporcionan mecanismos para gestionar sesiones  API Servlets:  Crea una sesión en el servidor por cada navegador que accede a la aplicación Web, la cual se modela con el objeto javax.servlet.http.HttpSession  Cada petición del cliente (request) tiene asociada una sesión, para acceder a ella se realiza una llamada al método getSession() de los objetos HTTPServletRequest  request.getSession() devuelve el objeto de la sesión actual si este existe. Si no existe crea el objeto sesión antes Sistemas de Información Raquel Trillo Lado Introducción: Sesiones en aplicaciones Web
  • 5.  El objeto HttpSession permite almacenar objetos y recuperarlos: Sistemas de Información Raquel Trillo Lado Introducción: Sesiones en aplicaciones Web HttpSession +setAttribute (clave:String, valor: Object): void //Puede lanzar Excepciones +getAttribute (clave:String): Object //Puede lanzar excepciones
  • 6.  Para que el servidor de aplicaciones Web (Tomcat) pueda saber qué objeto sesión corresponde a cada petición HTTP se emplean dos mecanismos principalmente:  El navegador del cliente no acepta cookies  Cuando se construyen las URLs de la aplicación se incluye un parámetro para identificar la sesión (jsessionid)  El navegador del cliente acepta cookies  Se envía en una cookie al inicio de la sesión el identificador de la sesión (jsessionid) Sistemas de Información Raquel Trillo Lado Introducción: Sesiones en aplicaciones Web
  • 7.  Transcurrido un cierto tiempo (timeout) sin que el navegador acceda a la aplicación Web, el servidor de aplicaciones Web (Tomcat) destruye el correspondiente objeto sesión:  Porque no existen mecanismos que le permitan al servidor saber si el navegador cliente ha dejado de usar la aplicación web  Por motivos de escalabilidad Sistemas de Información Raquel Trillo Lado Introducción: Sesiones en aplicaciones Web
  • 8.  La mayor parte de las APIs para desarrollo de aplicaciones Web proporcionan mecanismos para gestionar cookies en el navegador del usuario:  Cookie: Es un par (nombre de parámetro, valor del parámetro), donde tanto el nombre como el valor son cadenas de caracteres  La cookie correspondiente a jsessionid se gestiona automáticamente  Gestión de cookies en Servlets:  Creación: Cookie cookie = new Cookie (“login”, userLogin);  Envío al cliente: response.addCookie(cookie);  Recuperación en el servidor: Cookie[] cookies = request.getCookies();  Cada navegador debería soportar alrededor de 20 cookies por cada sitio Web y 300 en total. Además cada navegador suele limitar el tamaño de cada cookie a 4 KBytes Sistemas de Información Raquel Trillo Lado Introducción: Cookies en aplicaciones Web
  • 9. Sistemas de Información Raquel Trillo Lado Ejercicio 1:  Dado el siguiente formulario HTML (login.jsp), el fichero de configuración web web.xml y las clases que modelan la lógica de negocio de la aplicación, diseñar los servlets y páginas JSP necesarios para obtener el siguiente comportamiento:  Si el usuario no inserta en nombre de usuario o la clave el sistema le debe informar de ello y permitirle subsanar el problema.  Si el valor de la clave no coincide con el requerido se debe informar al usuario y permitirle que vuelva a teclearla.  Si el nombre de usuario no existe en el sistema se debe informar al usuario y permitirle que subsane el problema.  Si realiza el proceso de autenticación correctamente se debe informar de ello y saludarlo.  Si el usuario tiene almacenada una cookie con la clave de acceso y otra con el nombre de usuario se deben rellenar los campo automáticamente.
  • 10. Sistemas de Información Raquel Trillo Lado Ejercicio 1: login.jsp
  • 11. Sistemas de Información Raquel Trillo Lado Ejercicio 1: login.jsp
  • 12. ?xml version=1.0 encoding=UTF-8? web-app version=2.5 xmlns=“http://java.sun.com/xml/ns/javaee” xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation=http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd display-nameMi primera aplicación Web/display-name !-- ================ Servlets ================ -- servlet servlet-nameLoginUsuario/servlet-name servlet-classmiprimeraaplicacion.LoginUsuarioServlet /servlet-class /servlet Sistemas de Información Raquel Trillo Lado Ejercicio 1: web.xml
  • 13. !-- ===--========= Servlets Mapping======= -- servlet-mapping servlet-nameLoginUsuario/servlet-name url-pattern/LoginUsuario.do/url-pattern /servlet-mapping !-- ============ Welcome page ========= -- welcome-file-list welcome-filelogin.jsp/welcome-file /welcome-file-list /web-app Sistemas de Información Raquel Trillo Lado Ejercicio 1: web.xml
  • 14. Sistemas de Información Raquel Trillo Lado Ejercicio 1: Fachada lógica negocio MiAplicacionFachada +validarUsuario (login:String, clave: String, encriptada:boolean): ResultadoLoginVO //Puede lanzar Excepciones: InvalidPasswordException, InvalidUserException ResultadoLoginVO -login: String -claveEncriptada: String -Nombre: String +getLogin (): String +getClaveEncriptada(): String +getNombre():String
  • 15. Sistemas de Información Raquel Trillo Lado Ejercicio 1: Solución LoginUsuarioServlet package miprimeraaplicacion; public class LoginUsuarioServlet extends HttpServlet{ public void doPost( HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ MapString, String errors = new HashMap String, String(); String login = request.getParameter(“login”); String clave = request.getParameter(“apellido”); String recordar = request.getParameter(“recordar”); String estaEncriptado = request.getParameter(“estaEncriptado”); if (login == null) errors.add(“Login”, “Campo obligatorio”); if (clave == null) errors.add(“Clave”, “Campo obligatorio”); if (errors.isEmpty()){ //Llamada a la lógica de negocio } if (!errors.isEmpty()){ //Redirección a la página de entrada con el mapa de errores } } }
  • 16. Sistemas de Información Raquel Trillo Lado Ejercicio 1: Llamada a la lógica de negocio MiAplicacionFacade f = new MiAplicacionFacade(); try{ boolean encriptado = false; if (estaEncriptado != null) (estaEncriptado.equals(“Si”) encriptado = true; ResultadoLoginVO r = f.validarUsuario(login, clave, encriptado); HttpSession s = request.getSession(); s.setAttribute (“nombre”, r.getNombre()); if (recordar != null) (recordar.equals(“Si”) { Cookie cookieLogin = new Cookie (“loginUsuario”, login); Cookie cookieClave = new Cookie (“claveUsuario”, r.getClaveEncriptada); response.addCookie(cookieLogin); response.addCookie(cookieClave); } response.sendRedirect(“bienvenida.jsp”); } catch (InvalidPasswordException e) { errors.add(“Clave”, “Clave de acceso errónea”); //Redirección a la página de entrada con el mapa de errores } catch (InvalidUserException e) { errors.add(“Login”, “El usuario no se encuentra registrado”); //Redirección a la página de entrada con el mapa de errores }
  • 17. Sistemas de Información Raquel Trillo Lado Ejercicio 1: Redirección a la página de entrada request.setAttribute(“errores”, errors); RequestDispatcher dispatcher = request.getRequestDistpatcher(“login.jsp”); dispatcher.forwardTo(request, response);
  • 18. Sistemas de Información Raquel Trillo Lado Ejercicio 1: bienvenida.jsp Opción 1: %= session.getAttribute(“Nombre”) % Opción 2: % String nombre = “”; if (session.getAttribute(“Nombre”) != null) { nombre = session.getAttribute(“Nombre”); } % %= nombre %
  • 19. Sistemas de Información Raquel Trillo Lado Ejercicio 1: login.jsp % @ page import = “java.util.Map” % % String valorEncriptado = “No”; String loginError = “”; String claveError = “”; String loginValor = “”; String claveValor = “”; Map String, String er=(Map String, String) request.getAttribute(“errores”); if (er != null){ String cabecera = “span style=”color:red””; String final = “/span”; if (er.containsKey(“login”)) loginError = cabecera + er.get(“login”)+ final; if (er.containsKey(“clave”)) loginError = cabecera + er.get(“clave”)+ final; loginValor = request.getParameter(“login”); claveValor = request.getParameter(“apellido”); }else { //Manejo de cookies} %
  • 20. Sistemas de Información Raquel Trillo Lado Ejercicio 1: login.jsp-Manejo Cookies % @ page import = “java.util.Map” % % //Manejo de cookies Cookie [] cookies = request.getCookies(); for (i=0; icookies.size(); i++){ String nombreCookieI = cookies[i].getName(); if (nombreCookieI.equals(“loginUsuario”)) loginValor = cookies[i].getValue(); if (nombreCookieI.equals(“claveUsuario”)){ claveValor = cookies[i].getValue(); valorEncriptado = “Si”; } %
  • 21. Sistemas de Información Raquel Trillo Lado Ejercicio 1: login.jsp-Cambios en el formulario Añadir el atributo value a los campos login y clave: Ejemplo: input type=“text” name=“login” value=“%= loginValor%” id=“idLogin”/ input type=“password” name=“apellido” value=“%= claveValor%” id=“idApellidos”/ Añadir el control de errores a los campos login y clave Ejemplo: input type=“password” name=“apellido” value=“%= claveValor%” id=“idApellidos”/ %= claveError% Añadir la acción al formulario form action=“/LoginUsuario.do” Añadir el campo oculto con la información de encriptación input type=“hidden” name=“encriptado” value=“%=valorEncriptado%”