12
Diseño de la capa de presentación Aplicaciones Distribuidas

Diseño de la capa de presentación - Bienvenida : Inicio · • Responsabilidades de la página JSP: • Recoger los datos a visualizar utilizando JavaBeans. • Utilizar etiquetas

  • Upload
    dothu

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Diseño de la capa de

presentación

Aplicaciones Distribuidas

2

Contenido

• Motivación Diseño Capa Presentación.

• Arquitectura Modelo/Vista/Controlador.

• Controlador.

• Vista.

• Control peticiones duplicadas.

3

Motivación

• Muchas tecnologías:

• HTTP, HTML dinámico, JavaScript, Servlets, JSP, JavaBeans, Etiquetas de Extensión, ...

• En una aplicación web existen “relaciones de navegación”.

• Es necesario controlar el acceso a los recursos y la navegación.

• Debemos evitar el procesamiento de peticiones duplicadas.

• ...

• � Modelado Aplicaciones Web y definir Arquitecturaspara organizar los elementos.

Modelado Aplicaciones

Web

4

contenidoPrincipal <<Frame Content>>

Tema2

{target=contenido}

Navegacion

<<Frame Content>>

<<targeted link>>Regist ro

Cabecera <<Frame Content>>

<<link>>

FormRegist ro

<<Text>> nombre

<<Text>> nif

<<Text>> correo

<<password>> clave

<<submit>> enviar

Relación de

agregación

Registro

validarDatos()

f(){}

FormCheck

checkDNI(dni)

checkCorreo(correo)

5

Session

Cliente

ServletRegistro HashMap

put()

get()

usuariosusuarios

usuario : Stringusuario : String

1

+usuarios

1

{name="listaUsuarios"}

Isi

<<TagLib>>

{uri="/ isi" ;name="isi"}

Usuarios <<import>>

ListaUsuariosTag

usuarios : List

<<Tag>>

<<contains>>

{identificador="String"; nombre="String"

{engine="JSP"}

6

Arquitectura Capa

Presentación• Aplicación interactiva: Modelo/Vista/Controlador

Modelo

Vista

Controlador

Notifica Cambio

Notifica Interacción

Usuario

Selección Vista

Ejecuta

funcionalidad

Consulta Estado

•Modelo:•Encapsula estado aplicación

•Responde consultas estado

•Expone la funcionalidad

•Notifica cambios a la vista

•Vista:•Visualiza el modelo.

•Solicita actualizaciones del modelo

•Envía interacciones usuario al controlador

•Permite que el controlador seleccione la vista

•Controlador:•Define el comportamiento aplicación

•Correspondencia acciones usuario

actualizaciones del modelo

•Selecciona la vista para la respuesta

7

Modelo/Vista/Controlador -

Aplicación

• Limitaciones tecnologías web:

• El modelo no puede notificar eventos a la interface gráfica.

• Las interacciones del usuario están restringidas a peticiones

HTTP.

• Enviadas por el navegador.

• Aplicación MVC en entornos web (J2EE):

• Modelo: Enterprise JavaBeans, objetos distribuidos, datos

(DAO).

• Vista: JSP, Navegador

• Controlador: Servlet

• Framework Struts:

• http://jakarta.apache.org/struts/

8

Controlador

• Roles:

• Definición del comportamiento de la aplicación.

• Control de Seguridad.

• Log, ...

• Correspondencia peticiones-acción en el modelo.

• Patrón Command (retorna selección de vista).

• Seleccionar la vista para la respuesta.

• Obtenida a partir de la acción.

• Implementación basada en Servlets (patrón Frontcontroller) .

• Correspondencia ���� URL lógicas (web.xml):

<servlet-mapping>

<servlet-name>FrontController<servlet-name>

<url-pattern>*.ctrl</url-pattern>

</servlet-mapping>

9

FrontControllerHttpServlet

Accion

ejecutar()

ListaUsuariosAccion

ejecutar()

LoginAccion

ejecutar()

SalirAccion

ejecutar()

FrontController

Pet icionHelper

getAccion(peticion : HttpServletRequest) : Accion

FrontController helper :

PeticionHelper

act : Accion :

RequestDispatcher

act = getAcc ion(HttpServletRequest)

vista = ejecutar(HttpServletRequest, HttpServletResponse, ServletContext)

forward( HttpServletRequest, HttpServletResponse)

RequestDispatcher

asociado a "vista"

10

Vista

• Página JSP: genera la vista

• Página Web, fichero XML, ...

• Navegador visualiza la vista.

• La elección de la vista depende de la acción a realizar y del resultado: clases Acción.

• Responsabilidades de la página JSP:

• Recoger los datos a visualizar utilizando JavaBeans.

• Utilizar etiquetas de extensión para la lógica de la presentación (iteraciones, reescrituras URL, ...)

• Patrones “View Helper” y “Service to Worker”.

• Cumple principios JSP: separación roles.

• Ocultar las vistas (páginas JSP) al cliente:

• Directorio inaccesible: /WEB-INF/privado

11

Esquema General

: Navegador FrontController

: Servlet

: Accion vista : JSP : JavaBean : Etiqueta

Peticion HTTP (GET/POST)

vista = ejecutar()

forward

Interacciona con

"Lógica de Negocio"

Obtiene Datos

Ejecuta "Lógica de

Presentación"Respuesta HTTP

Página Web

Controlador Modelo Vista

Prepara "Datos" en

JavaBeans

Controles

comunes

Asociación

Petición-Acción

12

Peticiones Duplicadas

• Motivación:

• Controlar la navegación del cliente.

• Evitar procesamiento de formularios duplicados.

• Solución: Token de Sincronización.

• Token: identificador único.

• Cada formulario incluye un campo oculto con un token.

• En una sesión de navegación existe un “token actual”.

• Enviado en el último formulario.

• Sólo se procesa el formulario si contiene el token actual.

• Se comprueba la validez del token antes de procesar la respuesta

• Responsabilidad del controlador.

• Token generado por una etiqueta de extensión.