Você está na página 1de 54

Programa de Actualizacin Profesional

Ingeniera de Sistemas - EPE

Desarrollo para Entorno Web


Unidad 3: Capa de presentacin

ndice
Patrn MVC Servlets / JSP Frameworks MVC AJAX

UPC - EPE - Ingeniera de Sistemas - Programa de

14/06/201

PATRN MVC

UPC - EPE - Ingeniera de Sistemas - Programa de

14/06/201

Patrn MVC

UPC - EPE - Ingeniera de Sistemas - Programa de

14/06/201

MVC
Contexto
En sistemas que tienen interfaces de usuarios, suceden los siguientes escenarios: El sistema tiene que aceptar datos desde el cliente, actualizar la base de datos y devolver datos al usuario. Hay distintas maneras en que los datos pueden ser aceptados del usuario y entregados a los usuarios del sistema. Los datos que son proporcionados al sistema de una manera, deberan ser recuperables de otra manera.
UPC - EPE - Ingeniera de Sistemas - Programa de 14/06/201

MVC
Problemas al no utilizar MVC
Si el cliente interacta directamente con un componente de negocio, entonces algn cambio en el flujo de la aplicacin obligara a modificar las interfaces del cliente. Si el sistema mantiene un solo componente que interacta con el usuario y con la base de datos, entonces un nuevo requisito para soportar otro tipo de interfaz de usuario obligara a redisear el componente.

UPC - EPE - Ingeniera de Sistemas - Programa de

14/06/201

MVC
Consideraciones
Dado el contexto y el problema, se observa lo siguiente: Existen 3 tareas a realizar:
Manejar las interacciones del usuario con el sistema. Manejar los datos actuales. Presentar los datos de mltiples formas al usuario.

Por lo tanto, si existe un solo componente que maneja todas esas tareas se debe de partir en 3 componentes. Cada uno de los 3 componentes pueden ser manejados en diferentes componentes.

UPC - EPE - Ingeniera de Sistemas - Programa de

14/06/201

MVC
Solucin
La solucin es separar la representacin de los datos del almacenamiento de los mismos y tener un tercer componente que coordine los dos primeros. Estos 3 componentes son llamados Modelo, Vista y Controlador, y ellos forman el patrn de diseo MVC.

UPC - EPE - Ingeniera de Sistemas - Programa de

14/06/201

MVC

UPC - EPE - Ingeniera de Sistemas - Programa de

14/06/201

MVC - ELEMENTOS
MODELO: Es el responsable de mantener los datos o el estado de la aplicacin. Notifica a las Vistas cuando los datos cambian. VISTA: Contiene la lgica de la presentacin. Muestra los datos que contiene en el Modelo a los usuarios. Tambin permite al usuario interactuar con el sistema y notificar al Controlador de las acciones de los usuarios. CONTROLADOR: Controla el flujo de la aplicacin. Usa el Modelo y la Vista y las asocia. Puede usar mltiples Vistas y mltiples Modelos. El controlador recibe las acciones del cliente y las asocia a un modelo.
UPC - EPE - Ingeniera de Sistemas - Programa de 10 14/06/201

MVC
Consecuencias/Implicancias
Separar el almacenamiento de los datos (Modelo) de la presentacin de los datos (Vista) permite tener mltiples Vistas para los mismos datos. Los cambios pueden ocurrir en los componentes de la Vista y el Modelo independientemente. Cualquier cambio en cualquiera de los componentes no debe afectar al otro. Incrementa la mantenibilidad y la extensibilidad del sistema.
UPC - EPE - Ingeniera de Sistemas - Programa de 11 14/06/201

MVC
Consecuencias/Implicancias
Separando el comportamiento de la aplicacin (Controlador) de la presentacin de los datos (Vista) permite al Controlador crear una Vista apropiada para un Modelo especfico. Separando el comportamiento de la aplicacin (Controlador) del almacenamiento de los datos (Modelo) permite a las peticiones del usuario mapear a una funcin especfica del Modelo.

UPC - EPE - Ingeniera de Sistemas - Programa de

12

14/06/201

SERVLETS / JSP

UPC - EPE - Ingeniera de Sistemas - Programa de

13

14/06/201

Servlets
Un Servlet es una Clase de Java que se ejecuta en el Web Container (llamado tambin contenedor de Servlets). La especificacin de Servlet proporciona un estndar y un framework independiente de la plataforma para la comunicacin entre los servlets y contenedores. Este framework es un conjunto de Clases e Interfaces. Estas Clases e Interfaces conforman el Servlet API. Un servlet puede manejar mltiples requerimientos de concurrencia y puede sincronizarlos. Los servlets pueden redireccionar los requerimientos a otros servlets.
UPC - EPE - Ingeniera de Sistemas - Programa de 14 14/06/201

Servlet API

UPC - EPE - Ingeniera de Sistemas - Programa de

15

14/06/201

Ciclo de Vida de un Servlet

UPC - EPE - Ingeniera de Sistemas - Programa de

16

14/06/201

Ciclo de Vida de un Servlet


Carga e inicializacin del Servlet En forma predeterminada la clase HttpServlet inicializa el Servlet. Para adicionar una inicializacin personalizada se debe sobreescribir el mtodo init(). Servicio del Servlet Atiende a las peticiones POST o GET de los clientes. El mtodo service() invoca a doPost() o doGet(), segn sea el caso. Destruccin el Servlet El mtodo destroy() destruye el servlet. Para destruir algn recurso especfico del Servlet se debe sobreescribir el mtodo destroy().
UPC - EPE - Ingeniera de Sistemas - Programa de 17 14/06/201

Interface Servlet
La interface Servlet es la central abstraccin del Servlet API. Todos los Servlet se implementan de esta interface, en forma directa o indirecta (a travs de la clase extendida HttpServlet ) Cuando un Servlet acepta un requerimiento desde un cliente recibe 2 objetos: ServletRequest: Encapsula la comunicacin del cliente al servidor. ServletResponse: Encapsula la comunicacin del servidor al cliente.
UPC - EPE - Ingeniera de Sistemas - Programa de 18 14/06/201

Interface Servlet

UPC - EPE - Ingeniera de Sistemas - Programa de

19

14/06/201

Interface ServletRequest
La interface ServletRequest permite al Servlet acceder a : Informacin enviada por el cliente. El protocolo usado por el cliente. El nombre del cliente, direccin IP, navegador utilizado. Suministra el flujo de entrada de ServletInputStream. Las interfaces que se extienden de la interface ServletRequest permiten obtener ms informacin de un protocolo especfico. La interface HttpServletRequest contiene mtodos para acceder a la informacin de cabecera del HTTP.

UPC - EPE - Ingeniera de Sistemas - Programa de

20

14/06/201

Interface HttpServletRequest
Acceso a datos del cliente :
El mtodo getParameter() retorna el valor de un parmetro y lo almacena como String. El mtodo getParameterValues() retorna los valores de los varios parmetros (checkboxes, listas desplegables mltiples) y lo almacena en un String[]. El mtodo getParameterNames() provee los nombres de los parmetros y lo almacena un java.util.Enumeration.
UPC - EPE - Ingeniera de Sistemas - Programa de 21 14/06/201

Interface HttpServletRequest
Mtodo HTTP GET Es utilizado para recuperar un recurso. Tambin para enviar informacin en texto plano al Servlet. La informacin enviada por URL utiliza GET: http://localhost/TestServlet?id=drodriguez Los hiperenlaces utilizan GET. Mtodo HTTP POST Utilizado para enviar datos al Servlet (texto plano o documentos) Se configura en los formularios:
<form method=post>
UPC - EPE - Ingeniera de Sistemas - Programa de 22 14/06/201

Interface ServletResponse
La interface ServletResponse provee los mtodos para contestar al cliente: Suministra un flujo de salida ServletOutputStream y un Writer a travs del cual el Servlet puede enviar datos al cliente. Permite al Servlet configurar el tipo MIME (Multipurpose Internet Mail Extension) a enviar. Las interfaces que se extienden de la interface ServletResponse permiten aumentar las capacidades de un protocolo especfico. La interface HttpServletResponse contiene mtodos que permiten manipular la informacin de cabecera del HTTP.
UPC - EPE - Ingeniera de Sistemas - Programa de 23 14/06/201

Interface HttpServletResponse
El objeto HttpServletResponse provee dos formas de enviar datos al cliente : El mtodo getWriter() que retorna un objeto PrintWriter. Este objeto le permite al Servlet enviar texto plano (como HTML) al cliente. El mtodo getOutputStream() que retorna un objeto ServletOutputStream. Este objeto le permite al Servlet enviar datos en binario (doc, pdf, exe, ppt, zip, entre otros) al cliente.

UPC - EPE - Ingeniera de Sistemas - Programa de

24

14/06/201

Session Tracking
El seguimiento de sesiones es necesario para mantener el estado entre el Servlet y el cliente que persiste en mltiples conexiones durante un tiempo determinado. El seguimiento de sesiones se realiza de las siguientes formas:
Cookies URL Rewriting Hidden Fields
UPC - EPE - Ingeniera de Sistemas - Programa de 25 14/06/201

Session Tracking
Cmo el servidor puede mantener una sesin con un cliente si el HTTP no proporciona ningn mecanismo de recordar al cliente?
Cuando el servidor recibe la primera peticin del cliente, el servidor inicia una sesin y le asigna un identificador nico. El cliente debe incluir este identificador nico en cada requerimiento subsiguiente. El servidor inspecciona el identificador y asocia la peticin con la correspondiente sesin.

UPC - EPE - Ingeniera de Sistemas - Programa de

26

14/06/201

Session Tracking

UPC - EPE - Ingeniera de Sistemas - Programa de

27

14/06/201

Session Tracking
Cookies Consiste en almacenar ese ID de sesin en una cookie del cliente: JSESSIONID=61C4F23524521390E70993E5120263 C6 URL Rewriting Consiste en agregar el ID en la URL. Es utilizado cuando el soporte a cookies ha sido deshabilitado. <a href= "/ReportServlet;JSESSIONID=C084B32241B58114"> Reporte </a>

UPC - EPE - Ingeniera de Sistemas - Programa de

28

14/06/201

Session Tracking
Hidden Fields
Consiste en agregar el ID en campos ocultos de HTML:
<input type=hidden name=JSESSIONID value=C084B32241B58114/>

UPC - EPE - Ingeniera de Sistemas - Programa de

29

14/06/201

HttpSession
El Servlet API trae el soporte de sesiones en la interfase javax.servlet.http.HttpSession. El contenedor de Servlet crea un nuevo objeto HttpSession cuando inicia una sesin para un cliente. Adems de representar la sesin, este objeto acta como un contenedor para la informacin relacionada a la sesin. Normalmente, se necesitan hacer 3 acciones con una sesin HTTP: Recuperar la sesin asociada con la peticin. Agregar o remover atributos de sesin. Cerrar o invalidar la sesin si es necesario.
UPC - EPE - Ingeniera de Sistemas - Programa de 14/06/201

30

HttpSession
Usualmente, un cliente no ofrece ningn indicador de que ha terminado la sesin. En este caso, el servidor nunca sabr si el cliente ha terminado la sesin o no. Para ayudarnos en este trabajo, el contenedor cerrar automticamente la sesin despus de un cierto periodo de tiempo de inactividad del usuario. Este perodo de tiempo es configurado en minutos en el web.xml.
UPC - EPE - Ingeniera de Sistemas - Programa de 31 14/06/201

HttpSession
Recuperar la sesin:
HttpSession session = request.getSession();

Agregar un objeto a la sesin:


session.setAttribute(NOMBRE, OBJETO);

Recuperar un objeto de la sesin:


Object lista = (Object)session.getAttribute(NOMBRE);

Invalidando una sesin:


session.invalidate();
UPC - EPE - Ingeniera de Sistemas - Programa de 32 14/06/201

HttpSession
Tiempo de expiracin de la sesin La configuracin se realiza en el web.xml. El tiempo establecido est en MINUTOS. El valor 0 indicara que la sesin nunca expirar. <web-app> <session-config> <session-timeout>30</session-timeout> </session-config> </web-app>
UPC - EPE - Ingeniera de Sistemas - Programa de 14/06/201

33

JSP
JSP (JavaServer Pages) son pginas que contienen HTML y cdig Java. Tiene la extensin .jsp JSP y Servlet pueden trabajar conjuntamente. Los elementos de un JSP son: Expression Scriptlet Declaration Directive Action
UPC - EPE - Ingeniera de Sistemas - Programa de 34 14/06/201

JSP - Expression
Las expresiones son evaluadas y convertidas a String (java.lang.String). Una vez evaluadas son agregadas a un objeto out JspWriter. Equivalente a out.println(); Permite simplificar el cdigo de salida o impresin de datos. Representado por el caracter = Sintaxis: <%= expresin %> Ejemplo: <%= nombres %>

UPC - EPE - Ingeniera de Sistemas - Programa de

35

14/06/201

JSP - Scriptlet
Permiten insertar cdigo Java dentro de cdigo HTML. Estn representados por los caracteres <% (para inicio de bloque java) y %> (para fin de bloque java). Sintaxis: <% cdigo_java %> Ejemplo: <% String mensaje = Tecsup - Java Web; out.println(<h1>" + mensaje + </h1>); %>

UPC - EPE - Ingeniera de Sistemas - Programa de

36

14/06/201

JSP - Declaration
Permiten crear sentencias de cdigo Java que slo sern ejecutadas al inicializarse el JSP. Permite inicializar variables utilizadas en la pgina JSP. Representadas por el caracter ! Sintaxis: <%! modificador tipodato variable=valor; %> Ejemplo: <%! private int contador=0; %> ... <% contador++; %>

UPC - EPE - Ingeniera de Sistemas - Programa de

37

14/06/201

JSP - Declaration
Define informacin que estar disponible en el JSP. Existen diferentes directivas: page, include, taglib. Afecta directamente a la compilacin de la pgina JSP. En caso no se defina ningn atributo de la directiva page, el compilador utilizar los valores predeterminados de los atributos. Sintaxis: <%@ directiva atributo="valor" %> Ejemplo: <%@ page language="java" %>

UPC - EPE - Ingeniera de Sistemas - Programa de

38

14/06/201

JSP - Action
Proporcionan funcionalidades incorporadas para desarrollar fcilmente aplicaciones Web. Los Actions son etiquetas XML. <jsp:include> <jsp:param> <jsp:forward> <jsp:plugin> <jsp:fallback> <jsp: getProperty> <jsp:setProperty> `<jsp:useBean>
UPC - EPE - Ingeniera de Sistemas - Programa de 39 14/06/201

JSP - EL
EL (Lenguaje de Expresiones) es independiente de la especificacin JSP, aunque se incluye en ella. Facilita la escritura de pginas JSP. Ejemplo: ${ variable } Son evaluados cuando se compila la pgina. Se pueden realizar operaciones matemticas, relacionales, lgicos, condiciones, entre otros.
UPC - EPE - Ingeniera de Sistemas - Programa de 40 14/06/201

JSP - EL
En EL se puede acceder a algunos objetos implcitos: pageScope: Variables de mbito de pgina requestScope: Variables de mbito de request. sessionScope: Variables de mbito sesin. applicationScope: Variables de mbito application (contexto). param: Parmetros del request como cadenas. paramValues: Parmetros del request como array de cadenas. cookie: Valores de las cookies recibidas en el request.

UPC - EPE - Ingeniera de Sistemas - Programa de

41

14/06/201

Custom tags
La tecnologa JSP nos permite incluir etiquetas personalizadas a travs de una librera de etiquetas. Las etiquetas personalizadas nos permiten encapsular lgica de la aplicacin y reutilizarla en los JSP. Una etiqueta es una clase Java que implementa una interface especializada. Para definir un Tag simple debemos implementar la interfase Tag.
UPC - EPE - Ingeniera de Sistemas - Programa de 42 14/06/201

JavaBeans
Son componentes de software escritos en Java. Encapsulan lgica y mtodos para funcionalidades especficas. Los JavaBeans debe cumplir las siguientes caractersticas: Atributos privados Mtodos pblicos set y get Constructor vaco Las acciones que se utilizan para JavaBeans son:
<jsp:useBean> <jsp:setProperty> <jsp:getProperty>

UPC - EPE - Ingeniera de Sistemas - Programa de

43

14/06/201

FRAMEWORKS MVC

UPC - EPE - Ingeniera de Sistemas - Programa de

44

14/06/201

Caractersticas comunes
Un framework es un software que proporciona funcionalidad genrica y que puede ser sobreescrita o extendida para obtener una funcionalidad especfica. Los frameworks Web proporcionan un conjunto de Clases e Interfaces para implementar la capa de presentacin del software. Para Java, existen diferentes frameworks, entre ellos: Struts, JSF y Spring MVC. Estos tres frameworks: Implementan MVC De libre uso y amplia documentacin Integracin con otros frameworks y libreras. Amplio apoyo de la comunidad
UPC - EPE - Ingeniera de Sistemas - Programa de 45 14/06/201

Struts
Combina las tecnologas de los Servlets y JSP. Sus componentes principales son: Actions, Interceptors, Result Types, View Tecnologies, Value Stack / OGNL. El Controlador es implementado por un Filter Servlet, igual que los interceptors. Mantiene el flujo de la aplicacin en XML. La Vista puede ser implementada con JSP usando etiquetas JSTL, ONGL, EL. El Modelo est implementado por unas clases llamadas Actions que son simplemente POJOs. Se integra con Spring Framework.

UPC - EPE - Ingeniera de Sistemas - Programa de

46

14/06/201

Struts

UPC - EPE - Ingeniera de Sistemas - Programa de

47

14/06/201

JSF
Es una especificacin estndar de JavaEE. Existen diferentes implementaciones de los fabricantes: JSF Reference Implementation de Sun Microsystems. MyFaces de Apache Software Foundation Rich Faces ICEfaces Simplifica el desarrollo de interfaces de usuario. Utiliza JSP para mostrar las pginas

UPC - EPE - Ingeniera de Sistemas - Programa de

48

14/06/201

Spring MVC
Spring es un framework de cdigo abierto para el desarrollo de aplicaciones Java. Spring MVC es el mdulo que permite implementar la capa de presentacin. Ofrece una clara divisin entre el Controlador, Vista y Modelo. Es muy flexible, implementa su estructura mediante interfaces. Provee interceptores como controladores. Los controladores se configuran mediante inversin de control. Se integra a diferentes Vistas: JSP/JSTL, Tiles, Velocity, FreeMarker, entre otros.
UPC - EPE - Ingeniera de Sistemas - Programa de 49

14/06/201

AJAX

UPC - EPE - Ingeniera de Sistemas - Programa de

50

14/06/201

AJAX
El trmino AJAX es un acrnimo de Asynchronous JavaScript and XML, que se puede traducir como JavaScript y XML asncrono. AJAX no es una tecnologa en s mismo. En realidad, se trata de la unin de varias tecnologas que se desarrollan de forma autnoma y que se unen para darle mayores funcionalidades a las aplicaciones Web. Tecnologas y lenguajes relativos:
XHTML y CSS: Para una presentacin basada en estndares. DOM: para la manipulacin de la presentacin. XML, XSLT, JSON: Para el intercambio y manipulacin de datos Javascript (XMLHttpRequest): intercambio asncrono de informacin y para integrar las dems tecnologas.
UPC - EPE - Ingeniera de Sistemas - Programa de 51 14/06/201

AJAX
AJAX permite mejorar completamente la interaccin del usuario con la aplicacin, evitando las recargas constantes de la pgina, ya que el intercambio de informacin con el servidor se produce en un segundo plano. Algunas aplicaciones con AJAX: Validacin de formularios en tiempo real Auto-completar informacin Operaciones maestro detalle Controles avanzados: rboles, mens, barras de progreso, zoom, mapas (Google). Todos ellos interactuando con la base de datos. Refresco automtico de datos Notificaciones desde el servidor (PUSH) UPC - EPE - Ingeniera de Sistemas - Programa de 14/06/201
52

AJAX
DOJO Toolkit
http://dojotoolkit.com/

Script.aculo.us
http://script.aculo.us/

Yahoo UI Widgets
http://developer.yahoo.com/yui/

Google Web Toolkit - Google Code


http://code.google.com/webtoolkit/

Prototype
http://prototype.conio.net/

UPC - EPE - Ingeniera de Sistemas - Programa de

53

14/06/201

Bibliografa
Matthew Scarpino, Hanumant Deshmukh, Jignesh Malavia. SCWCD Exam Study Kit. Marty Hall. Core Servlets and JavaServer pages. Ian Roughley. Starting Struts 2. Donald Brown, Chad Michael Davis, Scott Stanlick. Struts 2 in Action.

UPC - EPE - Ingeniera de Sistemas - Programa de

54

14/06/201

Você também pode gostar