![Page 1: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/1.jpg)
Introducción a la arquitectura Web
JAVA WEB
Ing. Jonathan A. Jurado Sandoval
![Page 2: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/2.jpg)
Introducción
• En la ingeniería de software se denomina aplicación Web a aquellas aplicaciones que los usuarios pueden utilizar accediendo a un servidor Web a través de Internet o de una intranet mediante un navegador.
Ing. Jonathan A. Jurado Sandoval
![Page 3: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/3.jpg)
Arquitectura Web
Ing. Jonathan A. Jurado Sandoval
![Page 4: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/4.jpg)
Ventajas de la arquitectura Web• Actualización automática
– Según el paradigma cliente/servidor, la lógica de la aplicación se encuentra centralizada. Los clientes son ligeros.
• Multiplataforma– Diferentes arquitecturas de hardware– Diferentes sistemas operativos– Diferentes navegadores Web
• Portable– Tecnologías como Java permiten crear aplicaciones Web portables.– Clientes ligeros sólo necesitan soportar el estándar HTML.
• Alta disponibilidad– Servidores Web replicados en la misma y/o diferentes ubicaciones
geográficas.
Ing. Jonathan A. Jurado Sandoval
![Page 5: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/5.jpg)
Desventajas de la arquitectura Web
• Menos funcionalidades que aplicaciones Desktop (de escritorio)• Tradicionalmente, los navegadores Web
presentan funciones limitadas.• Tendencia de nuevas formas de crear
aplicaciones Web con Ajax, RIA, entre otros.
• Requiere conexión a Internet• Al menos que sea una sistema intranet.
Ing. Jonathan A. Jurado Sandoval
![Page 6: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/6.jpg)
Ing. Jonathan A. Jurado Sandoval
Protocolo HTTP
JAVA WEB
![Page 7: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/7.jpg)
Hypertext Transfer Protocol
• El Hypertext Transfer Protocol es un protocolo sin estado basado en petición – respuesta.
• Es el protocolo usado en cada transacción de la Web (WWW).
• HTTP fue desarrollado por el consorcio W3C y la IETF, colaboración que culminó en 1999 con la publicación de una serie de RFC.
• Un cliente envía una petición HTTP para obtener un recurso y el servidor le devuelve una respuesta HTTP con el recurso deseado, como se muestra a continuación en el gráfico.
Ing. Jonathan A. Jurado Sandoval
![Page 8: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/8.jpg)
Hypertext Transfer Protocol
Ing. Jonathan A. Jurado Sandoval
![Page 9: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/9.jpg)
Ing. Jonathan A. Jurado Sandoval
Introducción a la arquitectura JavaEE
JAVA WEB
![Page 10: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/10.jpg)
JavaEE
• Java Platform, Enterprise Edition o Java EE (anteriormente conocido como Java 2 Platform, Enterprise Edition o J2EE hasta la versión 1.4), es una plataforma de programación—parte de la Plataforma Java—para desarrollar y ejecutar software de aplicaciones en Lenguaje de programación Java con arquitectura de N niveles distribuida, basándose ampliamente en componentes de software modulares ejecutándose sobre un servidor de aplicaciones.
Ing. Jonathan A. Jurado Sandoval
![Page 11: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/11.jpg)
JavaEE: Arquitectura n-tier
Ing. Jonathan A. Jurado Sandoval
![Page 12: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/12.jpg)
Web Container
• El contenedor Web implementa el contrato de componentes Web de la arquitectura J2EE.
• Este contrato especifica un entorno de ejecución para los componentes Web que incluye la seguridad, concurrencia, gestión de ciclo de vida, operación, despliegue y otros servicios.
• Un contenedor Web maneja la ejecución de las páginas JSP y componentes Servlet para aplicaciones JavaEE.
Ing. Jonathan A. Jurado Sandoval
![Page 13: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/13.jpg)
Otras tecnologías y lenguajes para Web
• ASP.NET
• PHP
• Perl
• Ruby
• Python
Ing. Jonathan A. Jurado Sandoval
![Page 14: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/14.jpg)
Ing. Jonathan A. Jurado Sandoval
Estructura de la aplicación Web
JAVA WEB
![Page 15: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/15.jpg)
Estructura de directorios
• WEB-INF: Este directorio contiene la información que necesita el contenedor Web para iniciar la aplicación. No se puede acceder públicamente.
• classes: Este directorio contiene a las clases Java compiladas.• lib: Contiene a las librerías adicionales que requiere el proyecto.• web.xml: Conocido como descriptor de despliegue de la
aplicación Web. Todos los proyectos Web tienen este archivo.
Ing. Jonathan A. Jurado Sandoval
![Page 16: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/16.jpg)
Descriptor web.xml
Archivo de aplicación web.
Contiene valores de configuración propios de una aplicación o módulo web.
Se registran los servlets, filters, la página de inicio, el tiempo máximo de expiración de una sesión, seguridad, entre otros.
Ubicado en el directorio WEB-INF de la aplicación web.
Ing. Jonathan A. Jurado Sandoval
![Page 17: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/17.jpg)
Ing. Jonathan A. Jurado Sandoval
Servidores de aplicaciones
JAVA WEB
![Page 18: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/18.jpg)
Características
Ing. Jonathan A. Jurado Sandoval
![Page 19: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/19.jpg)
Características
• El Servidor de Aplicaciones se encuentra compuesto por tres componentes: un “servidor de páginas Web”, un “Web Container" y un "EJB Container“.
• Dentro del “Web Container" se ejecutan exclusivamente las clásicas aplicaciones de basadas en JSP's ("Java Server Pages") y Servlets.
• Mientras el "EJB Container" es reservado para aplicaciones desarrolladas alrededor de EJB's "Enterprise Java Bean's".
• Casi todos los servidores de aplicaciones en el mercado hoy en día son conocidos como "Fully JEE Compliant", este termino implica que se cumplen todas las especificaciones JavaEE definidas.
Ing. Jonathan A. Jurado Sandoval
![Page 20: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/20.jpg)
Servidor de aplicaciones
• Cuando utiliza un servidor de aplicaciones como alguno de los siguientes ("Fully JEE Compliant"): – Oracle WebLogic– IBM WebSphere Application Server– GlassFish
, no existe una clara distinción entre el "Web Container" y "EJB Container", es decir, es posible ejecutar tanto JSP/Servlets así como EJB's, sin embargo, el ambiente se encuentra altamente integrado para que sea transparente (al menos para el programador final) la comunicación entre JSP/Servlets y EJB's.
Ing. Jonathan A. Jurado Sandoval
![Page 21: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/21.jpg)
Servidores • Open Source
– Tomcat (sólo Web container)– GlassFish– Jboss– Geronimo
• Comerciales– IBM WebSphere Application Server– Oracle WebLogic– SAP Netweaver
Ing. Jonathan A. Jurado Sandoval
![Page 22: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/22.jpg)
Ing. Jonathan A. Jurado Sandoval
SERVLETS / JSP
JAVA WEB
![Page 23: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/23.jpg)
Servlets• Un Servlet es una Clase de Java que se ejecuta en el
Web Container (llamado también contenedor de Servlets).
• La especificación de Servlet proporciona un estándar y un framework independiente de la plataforma para la comunicación 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 múltiples requerimientos de concurrencia y puede sincronizarlos.
• Los servlets pueden redireccionar los requerimientos a otros servlets.
Ing. Jonathan A. Jurado Sandoval
![Page 24: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/24.jpg)
Servlet API
Ing. Jonathan A. Jurado Sandoval
![Page 25: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/25.jpg)
Ciclo de Vida de un Servlet
Ing. Jonathan A. Jurado Sandoval
![Page 26: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/26.jpg)
Ciclo de Vida de un Servlet• Carga e inicialización del Servlet
• En forma predeterminada la clase HttpServlet inicializa el Servlet.
• Para adicionar una inicialización personalizada se debe sobreescribir el método init().
• Servicio del Servlet
• Atiende a las peticiones POST o GET de los clientes. El método service() invoca a doPost() o doGet(), según sea el caso.
• Destrucción el Servlet
• El método destroy() destruye el servlet.
• Para destruir algún recurso específico del Servlet se debe sobreescribir el método destroy().
Ing. Jonathan A. Jurado Sandoval
![Page 27: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/27.jpg)
Interface Servlet• La interface Servlet es la central abstracción del
Servlet API.
• Todos los Servlet se implementan de esta interface, en forma directa o indirecta (a través de la clase extendida HttpServlet )
• Cuando un Servlet acepta un requerimiento desde un cliente recibe 2 objetos:
• ServletRequest: Encapsula la comunicación del cliente al servidor.
• ServletResponse: Encapsula la comunicación del servidor al cliente.
• .Ing. Jonathan A. Jurado Sandoval
![Page 28: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/28.jpg)
Interface Servlet
Ing. Jonathan A. Jurado Sandoval
![Page 29: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/29.jpg)
Interface ServletRequest• La interface ServletRequest permite al Servlet acceder
a:
• Información enviada por el cliente.
• El protocolo usado por el cliente.
• El nombre del cliente, dirección IP, navegador utilizado.
• Suministra el flujo de entrada de ServletInputStream.
• Las interfaces que se extienden de la interface ServletRequest permiten obtener más información de un protocolo específico.
• La interface HttpServletRequest contiene métodos para acceder a la información de cabecera del HTTP.
Ing. Jonathan A. Jurado Sandoval
![Page 30: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/30.jpg)
Interface HttpServletRequest• Acceso a datos del cliente :
• El método getParameter() retorna el valor de un parámetro y lo almacena como String.
• El método getParameterValues() retorna los valores de los varios parámetros (checkboxes, listas desplegables múltiples) y lo almacena en un String[].
• El método getParameterNames() provee los nombres de los parámetros y lo almacena un java.util.Enumeration.
Ing. Jonathan A. Jurado Sandoval
![Page 31: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/31.jpg)
Interface HttpServletRequest
• Método HTTP GET
• Es utilizado para recuperar un recurso.
• También para enviar información en texto plano al Servlet.
• La información enviada por URL utiliza GET:
• http://localhost/TestServlet?id=drodriguez
• Los hiperenlaces utilizan GET.
• Método HTTP POST
• Utilizado para enviar datos al Servlet (texto plano o documentos)
• Se configura en los formularios:• <form method=“post”>
Ing. Jonathan A. Jurado Sandoval
![Page 32: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/32.jpg)
Interface ServletResponse• La interface ServletResponse provee los métodos para contestar al
cliente:
• Suministra un flujo de salida ServletOutputStream y un Writer a través 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 específico.
• La interface HttpServletResponse contiene métodos que permiten manipular la información de cabecera del HTTP.
Ing. Jonathan A. Jurado Sandoval
![Page 33: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/33.jpg)
Interface HttpServletResponse
• El objeto HttpServletResponse provee dos formas de enviar datos al cliente :• El método getWriter() que retorna un objeto
PrintWriter. Este objeto le permite al Servlet enviar texto plano (como HTML) al cliente.
• El método 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.
Ing. Jonathan A. Jurado Sandoval
![Page 34: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/34.jpg)
Ing. Jonathan A. Jurado Sandoval
Formularios con Servlet
JAVA WEB
![Page 35: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/35.jpg)
Formularios con Servlet
• Los objetos o componentes HTML que permiten interactuar con los usuarios son los formularios.
• Los formularios brindan al desarrollador Web diferentes componentes para poder obtener información dinámica de los usuarios.
• Para poder manejar formularios debemos conocer la estructura de las etiquetas.
Ing. Jonathan A. Jurado Sandoval
![Page 36: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/36.jpg)
Formularios con Servlet
Ing. Jonathan A. Jurado Sandoval
![Page 37: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/37.jpg)
Formularios con Servlet
<html><body>
<form action=“RecServlet" method="post">
Nombre : <input name="nom" type="text">
Apellidos:<input name="ape" type="text">
<input type="submit" value="Aceptar">
</form>
</body></html>
Ing. Jonathan A. Jurado Sandoval
![Page 38: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/38.jpg)
Formularios con Servlet
• Para poder recuperar los valores del formulario debemos verficar:• El destino del formulario (action=" RecServlet
")• El método de envio (method="post").• Los parámetros o variables a enviar:
• nombre (name="nom")• apellido (name="ape")
Ing. Jonathan A. Jurado Sandoval
![Page 39: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/39.jpg)
Formularios con Servlet
• Con la información reconocida podemos crear el Servlet.
public class RecServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
String nom = request.getParameter("nom”);
String ape = request.getParameter("ape");
}
Ing. Jonathan A. Jurado Sandoval
![Page 40: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/40.jpg)
Ing. Jonathan A. Jurado Sandoval
Cooperación y comunicación de Servlets
JAVA WEB
![Page 41: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/41.jpg)
Cooperación de Servlets
• Se usa para repartir la carga de una aplicación o hacer un requerimiento de algún recurso de la aplicación.
• Para utilizar los recursos del Servidor se debe manejar dos procesos:• Obtener el objeto RequestDispatcher .• Reenviar el requerimiento del cliente o incluir
la respuesta del recurso.
Ing. Jonathan A. Jurado Sandoval
![Page 42: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/42.jpg)
Cooperación de Servlets
• Obtener el objeto RequestDispatcher:• Se obtiene el objeto RequestDispatcher
usando el método getRequestDispatcher del objeto ServletContext.
• Reenviar el requerimiento del cliente: • Se usa el método forward del objeto
RequestDispatcher. • Si se accede antes al objeto PrintWriter o
ServletOutputStream no se podrá usar el método forward.
Ing. Jonathan A. Jurado Sandoval
![Page 43: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/43.jpg)
Cooperación de Servlets
• Obtener el objeto RequestDispatcher:• RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher(“/respuesta.jsp”);
• Reenviar el requerimiento del cliente : • dispatcher.forward(request,response);
Ing. Jonathan A. Jurado Sandoval
![Page 44: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/44.jpg)
Cooperación de Servlets
• Incrementar la respuesta del recurso : • Usa el método include del objeto RequestDispatcher
para llamar a un servlet y usar el objeto RequestDispatcher asociado al recurso para formar parte de la respuesta al cliente.
• RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(“/dentro.jsp”);
• PrintWriter out = res.getWriter(); out.println(“ANTES”);
• dispatcher.include(request,response);
• out.println(“DESPUES”);
Ing. Jonathan A. Jurado Sandoval
![Page 45: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/45.jpg)
Comunicación de Servlets
Ing. Jonathan A. Jurado Sandoval
![Page 46: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/46.jpg)
Comunicación de Servlets
• Los servlets de una aplicación pueden compartir recursos usando alguno de los ambientes o scopes:• Context (o application)• Session• Request• Page
Ing. Jonathan A. Jurado Sandoval
![Page 47: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/47.jpg)
Comunicación de Servlets
• Estos ambientes o scopes tienen los siguientes métodos:• setAttribute(nombre, valor)• getAttribute(nombre)• removeAttribute(nombre)
Ing. Jonathan A. Jurado Sandoval
![Page 48: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/48.jpg)
Ing. Jonathan A. Jurado Sandoval
Concurrencia de Servlets
JAVA WEB
![Page 49: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/49.jpg)
Concurrencia de Servlets
El dispatcher asigna un thread al hilo worker.
Ing. Jonathan A. Jurado Sandoval
![Page 50: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/50.jpg)
Concurrencia de Servlets
2 hilos podrían ejecutar el método service() simultáneamente.
![Page 51: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/51.jpg)
Concurrencia de Servlets
Un contenedor creará múltiples instancias de un servlet si el servlet implementa el SingleThreadModel.
![Page 52: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/52.jpg)
Ing. Jonathan A. Jurado Sandoval
Sesiones
JAVA WEB
![Page 53: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/53.jpg)
Session Tracking
El seguimiento de sesiones es necesario para mantener el estado entre el Servlet y el cliente que persiste en múltiples conexiones durante un tiempo determinado.
El seguimiento de sesiones se realiza de las siguientes formas:
• Cookies
• URL Rewriting
• Hidden Fields
Ing. Jonathan A. Jurado Sandoval
![Page 54: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/54.jpg)
Session Tracking
¿Cómo el servidor puede mantener una sesión con un cliente si el HTTP no proporciona ningún mecanismo de recordar al cliente?• Cuando el servidor recibe la primera petición del
cliente, el servidor inicia una sesión 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 petición con la correspondiente sesión.
Ing. Jonathan A. Jurado Sandoval
![Page 55: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/55.jpg)
Session Tracking
Ing. Jonathan A. Jurado Sandoval
![Page 56: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/56.jpg)
Session TrackingCookies
• Consiste en almacenar ese ID de sesión en una cookie del cliente:
JSESSIONID=61C4F23524521390E70993E5120263C6
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>
Ing. Jonathan A. Jurado Sandoval
![Page 57: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/57.jpg)
Session Tracking
Hidden Fields• Consiste en agregar el ID en campos ocultos
de HTML:<input type=“hidden” name=“JSESSIONID”
value=“C084B32241B58114”/>
Ing. Jonathan A. Jurado Sandoval
![Page 58: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/58.jpg)
HttpSessionEl 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 sesión para un cliente.
Además de representar la sesión, este objeto actúa como un contenedor para la información relacionada a la sesión.
Normalmente, se necesitan hacer 3 acciones con una sesión HTTP:
• Recuperar la sesión asociada con la petición.
• Agregar o remover atributos de sesión.
• Cerrar o invalidar la sesión si es necesario.
Ing. Jonathan A. Jurado Sandoval
![Page 59: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/59.jpg)
HttpSessionUsualmente, un cliente no ofrece ningún indicador
de que ha terminado la sesión. En este caso, el servidor nunca sabrá si el cliente ha terminado la sesión o no.
Para ayudarnos en este trabajo, el contenedor cerrará automáticamente la sesión después de un cierto periodo de tiempo de inactividad del usuario.
Este período de tiempo es configurado en minutos en el web.xml.
Ing. Jonathan A. Jurado Sandoval
![Page 60: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/60.jpg)
HttpSessionRecuperar la sesión:
• HttpSession session = request.getSession();
Agregar un objeto a la sesión:• session.setAttribute(NOMBRE, OBJETO);
Recuperar un objeto de la sesión:• Object lista =
(Object)session.getAttribute(NOMBRE);
Invalidando una sesión:• session.invalidate();
Ing. Jonathan A. Jurado Sandoval
![Page 61: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/61.jpg)
HttpSession
Tiempo de expiración de la sesión
La configuración se realiza en el web.xml. El tiempo establecido está en MINUTOS. El valor 0 indicaría que la sesión nunca expirará.
<web-app>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
</web-app>
Ing. Jonathan A. Jurado Sandoval
![Page 62: Introducción a la arquitectura Web JAVA WEB Ing. Jonathan A. Jurado Sandoval](https://reader035.vdocumento.com/reader035/viewer/2022070304/54cfe08b49795911798b4bf5/html5/thumbnails/62.jpg)
Referencias
• Hall Marty, Brown Larry (2004). Core Servlets and JavaServer Pages.
• Hanumant Deshmukh, Jignesh Malavia y Jacquelyn Carter (2005). SCWCD Exam Study Kit - Manning.
• Sistemas cliente-servidor y procesos cooperativos – Universidad de Vigo
• Wikipedia• http://www.jtech.ua.es/j2ee/2006-2007/jee.html• http://java.sun.com/javaee/reference/
Ing. Jonathan A. Jurado Sandoval