[ES] Introducción a las Aplicaciones Web con Java
-
Upload
eudris-cabrera -
Category
Software
-
view
647 -
download
7
Transcript of [ES] Introducción a las Aplicaciones Web con Java
![Page 1: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/1.jpg)
Introducción a las Aplicaciones
Web con Java
Let’s Rock Java
Eudris Cabrera Rodríguez
28 Junio 2014,Santo Domingo, R. D.
@eudriscabrera @eudriscabrera
![Page 2: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/2.jpg)
● Ingeniero Telemático | Consultor Desarrollador Informático en PAFI / Ministerio de Hacienda.
● Más de 7 años de experiencias en desarrollo de sistemas bajo Java SE y Java EE.● Entusiasta de la tecnología y el software libre, charlista, facilitador y colaborador en
eventos tecnológicos para desarrolladores como Barcamp STI, Code Camp SDQ 4.0 y La Feria de Tecnología Educativa de (UAPA).
● Miembro del equipo de desarrollo de Astive Toolkit (http://astivetoolkit.org).
Comunidades
● Github: @ecabrerar● Google Groups: @letsrockjava● LinkedIn: @eudriscabrera
Sobre Eudris Cabrera
![Page 3: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/3.jpg)
Agenda
● Ecosistema Java● Aplicaciones Web
○ Aplicaciones Web Java○ Contenedores Web
● Tecnologías Java para aplicaciones Web.○ Servlet○ Java Server Pages (JSP)○ Scriptlets
![Page 4: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/4.jpg)
Objetivos
Proveer una visión general de las tecnologías Java disponibles a partir de una explicación de las aplicaciones web, destacando las normas importantes en Java.
![Page 5: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/5.jpg)
Breve reseña sobre Java
![Page 6: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/6.jpg)
Breve reseña sobre Java
Entendiendo el ecosistema Java● Plataforma Java:
○ Multi-plataforma.○ Utiliza una máquina virtual para su ejecución
(JVM)○ Esta dividida en:
■ Java SE■ Java EE■ Java ME■ Javafx
○ El estandar es manejado por Java Community Process (JCP)
James Gosling,Creador de Java
![Page 7: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/7.jpg)
Popularidad del lenguaje Java
TIOBE Index lo sitúa en el segundo lugar para el mes de Junio del 2014, muy cercano a Lenguaje C, que ocupa el primer lugar.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
![Page 8: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/8.jpg)
!Java donde quiera¡
● Hoy en día, la tecnología Java ya está presente en 5 mil millones de tarjetas SIM y tarjetas inteligentes, 3 mil millones de teléfonos móviles, 80 millones de dispositivos de TV, incluyendo Blu-ray, printers, maquinas bancarias, eBooks Reader y Carros.
● Java SE 8 liberado en marzo del 2014, es la plataforma incluye la actualización más grande para el modelo de programación Java desde el lanzamiento de la plataforma en 1996.
![Page 9: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/9.jpg)
Código fuente de los ejemplos en GitHub
https://github.com/ecabrerar/taller-desarrollo-web-java
![Page 10: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/10.jpg)
Aplicaciones Web
![Page 11: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/11.jpg)
'Por definición, se trata de algo más que un 'sitio web'.
Se trata de una aplicación cliente / servidor que utiliza un navegador Web como su programa cliente, y por consiguiente constituye un servicio interactivo mediante la conexión con los servidores a través de Internet (o Intranet).
Una aplicación web presenta contenido adaptado dinámicamente en función de parámetros de la petición, los comportamientos de los usuarios seguidos, y consideraciones de seguridad.
¿Qué es una aplicación web?
![Page 12: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/12.jpg)
Tendencias en el desarrollo de software
![Page 13: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/13.jpg)
Una aplicación Web Java puede ser representada como una jerarquía de directorios y archivos, que a su vez contiene:
❏ Componentes Web (Servlets, JavaServer Pages, entre otros)❏ Recursos estáticos (páginas html e imágenes).❏ Clases Java.❏ Librerías (Archivos Jars). ❏ Un archivo descriptor de despliegue (web.xml).
Una aplicación web de Java se puede implementar como un archivo ".war". El archivo ".war" es un archivo zip que contiene todo el contenido de la aplicación web correspondiente.
Aplicación Web Java
![Page 14: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/14.jpg)
Las aplicaciones java web normalmente no se ejecutan directamente en el servidor, sino que se ejecutan dentro de un contenedor en el servidor.
El contenedor proporciona un entorno de ejecución para aplicaciones web en Java.
El contenedor es para aplicaciones web en Java lo que la JVM (Java Virtual Machine) es para las aplicaciones Java que se ejecutan locales.
El contenedor en sí se ejecuta en la JVM.
Contenedores Web
![Page 15: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/15.jpg)
Contenedores Web
![Page 16: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/16.jpg)
En general, Java distingue dos contenedores: El contenedor web y el contenedor Java EE.
Un contenedor Web apoya la ejecución de Servlets Java y JavaServer Pages.
Un contenedor compatible con Java EE provee funcionalidades adicionales, tales como, gestor de ejecución de los Enterprise JavaBeans, interfaz de conexión entre el servidor Java EE y aplicaciones clientes.
Contenedores Web
![Page 17: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/17.jpg)
Contenedores web típicas en el mundo Java son Tomcat o Jetty.
Contenedores Web
![Page 18: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/18.jpg)
La mayoría de los frameworks web modernos de Java están basadas en servlets y JavaServer Pages.
Frameworks web populares enJava son JavaServer Faces,Struts, Spring.
Estos frameworks web por lo generalse ejecutan en un contenedor web.
Contenedores Web
![Page 19: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/19.jpg)
Tecnologías usadas en aplicaciones Web
![Page 20: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/20.jpg)
Las tecnologías estándar de Java se definen a través de un proceso estándar llamado Java Community Process (JCP).
Las siguientes tecnologías se definen por la JCP.
https://jcp.org/en/home/index
Estándares Web Java
![Page 21: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/21.jpg)
Tecnologías Java para Aplicaciones Web
![Page 22: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/22.jpg)
Un Java Servlet es un objeto Java que responde a las solicitudes HTTP. Se ejecuta dentro de un contenedor de servlets(ej: Tomcat)
La palabra servlet deriva de otra anterior, applet, que se refería a pequeños programas que se ejecutan en el contexto de un navegador web.
El uso más común de los servlets es generar páginas web de forma dinámica a partir de los parámetros de la petición que envíe el navegador web.
Otras opciones que permiten generar contenido dinámico son los lenguajes ASP, PHP, JSP (un caso especial de servlet), Ruby y Python.
Java Servlet
![Page 23: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/23.jpg)
Servlet dentro de un contenedor Servlet.
Java Servlet
![Page 24: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/24.jpg)
Podemos crear un Servlet haciendo uso del paquete javax.servlet.
Interface HttpServletRequest
Interface HttpServletResponse
Al implementar esta interfaz el servlet es capaz de interpretar los objetos de tipo HttpServletRequest y HttpServletResponse quienes contienen la información de la página que invocó al servlet.
Clases y Objetos Necesarios
![Page 25: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/25.jpg)
Java Servlet
![Page 26: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/26.jpg)
El ciclo de vida de un Servlet se divide en los siguientes puntos:
a. El cliente solicita una petición a un servidor vía URL.b. El servidor recibe la petición.c. Si es la primera, se utiliza el motor de Servlets para cargarlo y se llama al
método init().d. Si ya está iniciado, cualquier petición se convierte en un nuevo hilo. Un
Servlet puede manejar múltiples peticiones de clientes.e. Se llama al método service() para procesar la petición devolviendo el
resultado al cliente.f. Cuando se apaga el motor de un Servlet se llama al método destroy(), que lo
destruye y libera los recursos abiertos.
Ciclo de Vida
![Page 27: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/27.jpg)
Beneficios de utilizar Servlets de CGI
Son más eficientes y utilizan menos recursos. CGI utiliza un nuevo proceso por cada petición. En cambio en los Servlets sólo existe una copia cargada en la máquina virtual y por cada petición se inicia un hilo, lo cual reduce el uso de memoria del servidor y el tiempo de respuesta.
Tienen persistencia, por lo que siguen "vivos" una vez terminada la petición.
a)
b)
![Page 28: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/28.jpg)
Sessiones
HttpSession representa un objeto a una sesión de usuario y contiene información sobre el usuario en las distintas solicitudes HTTP.protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();}
Almacenar sessionsession.setAttribute("userName", "theUserName");
Leer una sessionString userName = (String) session.getAttribute("userName");
![Page 29: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/29.jpg)
ServletContext ServletContext es un objeto que contiene meta-información acerca de la aplicación web.
AtributosAsignacióncontext.setAttribute("someValue", "aValue");
LecturaObject attribute = context.getAttribute("someValue");
![Page 30: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/30.jpg)
El descriptor de despliegue es un archivo que se localiza en el directorio WEB-INF y se llama web.xml.
En él es donde se controla el comportamiento de los Servlet y páginas JSP.
Descriptor de despliegue
![Page 31: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/31.jpg)
Es una actualización a la versión anterior Servlet 2.5, sus principales funcionalidades son:
● Soporte para transacciones asíncrona.● Facilidad de configuración.● Mejoras en el API.● Facilidad para ser integrada con otras tecnologías (Pluggability).
Servlet 3.0
![Page 32: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/32.jpg)
Servlet 3.0
![Page 33: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/33.jpg)
JavaServer Pages (JSP) es una tecnología Java que permite generar contenido dinámico para web, en forma de documentos HTML, XML o de otro tipo.
Las JSP's permiten la utilización de código Java mediante scripts. Además, es posible utilizar algunas acciones JSP predefinidas mediante etiquetas.
Estas etiquetas pueden ser enriquecidas mediante la utilización de Bibliotecas de Etiquetas (TagLibs o Tag Libraries) externas e incluso personalizadas.
Java Server Pages
ser
![Page 34: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/34.jpg)
Java Server Pages
ser
Arquitectura
JSP puede considerarse como una manera alternativa, y simplificada, de construir servlets.
El funcionamiento general de la tecnología JSP es que el Servidor de Aplicaciones interpreta el código contenido en la página JSP para construir el código Java del servlet a generar. Este servlet será el que genere el documento (típicamente HTML) que se presentará en la pantalla del Navegador del usuario.
JSP -> Servidor Aplicaciones (Servlets) -> Cliente (Navegador)
![Page 35: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/35.jpg)
Arquitectura
Es posible enriquecer el lenguaje de etiquetas utilizado por JSP. Para ello debemos extender la capa de alto nivel JSP mediante la implementación de Bibliotecas de Etiquetas (Tags Libraries).
Un ejemplo de estas bibliotecas son las proporcionadas por Java bajo la denominación de JSTL o las distribuidas por Apache junto con el Framework de Struts.
TagLibs -> JSP -> Servidor Aplicaciones (Servlets) -> Cliente (Navegador)
Java Server Pages
![Page 36: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/36.jpg)
Arquitectura
Java Server Pages
ser
![Page 37: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/37.jpg)
Java Server Pages
ser
Un ejemplo sencillo:
<%@ page language="java" contentType="text/html" %><html><head>
<title>Hola, mundo!!</title></head><body>
<h1>Hola, mundo!</h1>Hoy es <%= new java.util.Date() %>.
</body></html>
![Page 38: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/38.jpg)
Java Server Pages
ser
DirectivasLas directivas JSP son instrucciones procesadas por el motor JSP cuando la página JSP se traduce a un servlet. Las directivas usadas en este ejemplo le dicen al motor JSP que incluya ciertos paquetes y clases. Las directivas están encerradas entre etiquetas de directiva <%@ y %>.
<%@ page import="javax.naming.*" %><%@ page import="javax.rmi.PortableRemoteObject" %><%@ page import="Beans.*" %>
![Page 39: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/39.jpg)
Java Server Pages
ser
DeclaracionesLas declaraciones JSP nos permiten configurar variables para su uso posterior en expresiones o scriptlets.
También podemos declarar variables dentro de expresiones o scriptlets en el momento de usarlas.
<%! double bonus; String text; %><%! String strMult, socsec; %><%! Integer integerMult; %><%! int multiplier; %><%! double bonus; %>
![Page 40: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/40.jpg)
Java Server Pages
ser
ScriptletsLos scriptlets JSP nos permiten embeber segmentos de código java dentro de una página JSP.
El código embebido se inserta directamente en el servlet generado que se ejecuta cuando se pide la página.
Este scriptlet usa las variables declaradas en las directivas descritas anteriormente.
![Page 41: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/41.jpg)
Java Server Pages
ser
ScriptletsLos Scriptlets van encerradas entre etiquetas <% y %>.<%strMult = request.getParameter("MULTIPLIER");socsec = request.getParameter("SOCSEC");integerMult = new Integer(strMult);multiplier = integerMult.intValue();bonus = 100.00;%>
![Page 42: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/42.jpg)
Java Server Pages
ser
Variables PredefinidasUn scriptlet puede usar las siguientes variables predefinidas: session, request, response, out, e in.Las variables predefinidas se usan en los scriptlets de la misma forma que se usan en los servlets, excepto que no las declaramos.
<%strMult = request.getParameter("MULTIPLIER");socsec = request.getParameter("SOCSEC");integerMult = new Integer(strMult);multiplier = integerMult.intValue();bonus = 100.00;%>
![Page 43: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/43.jpg)
Java Server Pages
ser
Etiquetas específicas de JSP<jsp:forward>, redirige la request a otra URL<jsp:include>, incluye el texto de un fichero dentro de la página
<jsp:useBean>, permite manipular un Bean (si no existe, se creará el Bean), especificando su ámbito (scope), la clase y el tipo.<jsp:getProperty>, obtiene la propiedad especificada de un bean previamente declarado y la escribe en el objeto response. <jsp:setProperty>, establece el valor de una propiedad de un bean previamente declarado.
![Page 44: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/44.jpg)
Ventajas:
La principal ventaja de JSP frente a otros lenguajes es que el lenguaje Java es un lenguaje de propósito general que excede el mundo web y que es apto para crear clases que manejan lógica de negocio y acceso a datos.
Esto permite separar en niveles las aplicaciones web, dejando la parte encargada de generar el documento HTML en el archivo JSP.
Java Server Pages
ser
![Page 45: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/45.jpg)
Java Server Pages
ser
Ventajas:
JSP hereda la portabilidad de Java, y es posible ejecutar las aplicaciones en múltiples plataformas sin cambios.
Su persistencia le permite también hacer una serie de cosas de forma más eficiente: conexión a bases de datos y manejo de sesiones.
![Page 46: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/46.jpg)
El rendimiento de una página JSP es el mismo que tendría el servlet equivalente, ya que el código es compilado como cualquier otra clase Java.
A su vez, la máquina virtual compila dinámicamente el código de máquina de las partes de la aplicación que lo requieran.
Esto hace que JSP tenga un buen desempeño y sea más eficiente que otras tecnologías web que ejecutan el código de una manera puramente interpretada.
Java Server Pages
ser
![Page 47: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/47.jpg)
ReferenciasTodas las marcas registradas, así como todos los logotipos, imágenes, fotografías, audio y vídeos mostrados en esta presentación son propiedad de sus respectivos propietarios y/o representantes.
Su utilización es solamente para fines ilustrativos.
Enlaces:http://www.vogella.com/tutorials/JavaWebTerminology/article.htmlhttp://tutorials.jenkov.com/java-servlets/overview.html
![Page 48: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/48.jpg)
¿Preguntas?
![Page 49: [ES] Introducción a las Aplicaciones Web con Java](https://reader034.fdocuments.co/reader034/viewer/2022052301/5563a603d8b42aae0d8b4ed1/html5/thumbnails/49.jpg)
@eudriscabrera
@eudris
@ecabrerar
@eudriscabrera
Eudris Cabrera Rodríguez Ingeniero Telemático
Desarrollador de Software / Consultor Informático