Escolar Documentos
Profissional Documentos
Cultura Documentos
ndice
Patrn MVC Servlets / JSP Frameworks MVC AJAX
14/06/201
PATRN MVC
14/06/201
Patrn MVC
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.
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.
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.
14/06/201
MVC
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.
12
14/06/201
SERVLETS / JSP
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
15
14/06/201
16
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
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.
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.
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.
26
14/06/201
Session Tracking
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>
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/>
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();
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 %>
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>); %>
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++; %>
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" %>
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.
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>
43
14/06/201
FRAMEWORKS MVC
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.
46
14/06/201
Struts
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
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
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/
Prototype
http://prototype.conio.net/
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.
54
14/06/201