Diseño de la capa de presentación

Anuncio
Diseño de la capa de
presentación
Aplicaciones Distribuidas
Contenido
• Motivación Diseño Capa Presentación.
• Arquitectura Modelo/Vista/Controlador.
• Controlador.
• Vista.
• Control peticiones duplicadas.
2
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 Arquitecturas
para organizar los elementos.
3
Modelado Aplicaciones
Web
f(){
}
FormCheck
checkDNI(dni)
checkCorreo(correo)
Cabecera
FormRegist ro
Registro
validarDatos()
<<Fra me Content>>
Relación de
agregación
Principal
<<Text>> nombre
<<Text>> nif
<<Text>> correo
<<password>> clave
<<submit>> enviar
<<Frame Content>>
contenido
<<link>>
<<Frame Content>>
Regist ro
Navegacion
<<targeted link>>
{target=cont enido}
4
Tema2
Session
usuarios
ServletRegistro
HashMap
+usuarios
1
Usuarios
usuario : String
put()
get()
<<import>>
Cliente
<<TagLib>>
Isi
{uri="/ isi" ;name="isi"}
<<contains>>
{engine="JSP"}
{name="listaUsuarios"}
{identificador="String"; nombre="String"
5
<<Tag>>
ListaUsuariosTag
usuarios : List
Arquitectura Capa
Presentación
• Aplicación interactiva: Modelo/Vista/Controlador
Consulta Estado
Modelo
Notifica Cambio
Vista
•Modelo:
Ejecuta
funcionalidad
•Vista:
Selección Vista
Notifica Interacción
Usuario
•Encapsula estado aplicación
•Responde consultas estado
•Expone la funcionalidad
•Notifica cambios a la vista
Controlador
•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
6
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/
7
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>
8
FrontController
Pet icionHelper
getAccion(peticio n : Http Servl etRequest) : Accion
Ht tpServlet
Accion
Front Controller
ejecutar()
ListaUsuariosAccion
LoginAccion
SalirAccion
ejecutar()
ejecutar()
ejecutar()
FrontController
helper :
PeticionHelper
act : Accion
:
RequestDi spatcher
act = get Acc ion(Htt pS ervletRequest)
RequestDispatcher
asociado a "vista"
vista = ejecutar(HttpServletRequest, HttpServletResponse, ServletContext)
forward( HttpServletRequest, HttpServletResponse)
9
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
10
Esquema General
Controlador
: Navegador
Modelo
: Accion
FrontController
: Servlet
Peticion HTTP (GET/POST)
Vist a
vista : JSP
: JavaBean
Controles
comunes
Asociación
Petición-Acción
Interacciona con
"Lógica de Negocio"
vista = ejecutar()
Prepara "Datos" en
JavaBeans
forward
Obtiene Datos
Ejecuta "Lógica de
Presentación"
Respuesta HTTP
Página Web
11
: Etiqueta
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.
12
Descargar