Sunteți pe pagina 1din 49

Lets Rock Java

Introduccin a las Aplicaciones

Web con Java


Eudris Cabrera Rodrguez
@eudriscabrera

@eudriscabrera

28 Junio 2014,Santo Domingo, R. D.

Sobre Eudris Cabrera

Ingeniero Telemtico | Consultor Desarrollador Informtico en PAFI / Ministerio de


Hacienda.
Ms de 7 aos de experiencias en desarrollo de sistemas bajo Java SE y Java EE.
Entusiasta de la tecnologa y el software libre, charlista, facilitador y colaborador en
eventos tecnolgicos para desarrolladores como Barcamp STI, Code Camp SDQ 4.0 y
La Feria de Tecnologa Educativa de (UAPA).
Miembro del equipo de desarrollo de Astive Toolkit (http://astivetoolkit.org).

Comunidades

Github: @ecabrerar
Google Groups: @letsrockjava
LinkedIn: @eudriscabrera

Agenda
Ecosistema Java
Aplicaciones Web
Aplicaciones Web Java
Contenedores Web
Tecnologas Java para aplicaciones Web.
Servlet

Java Server Pages (JSP)


Scriptlets

Objetivos
Proveer una visin general de las tecnologas Java disponibles a partir de una
explicacin de las aplicaciones web, destacando las normas importantes en
Java.

Breve resea sobre Java

Breve resea sobre Java


Entendiendo el ecosistema Java

Plataforma Java:
Multi-plataforma.
Utiliza una mquina virtual para su ejecucin
(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

Popularidad del lenguaje Java


TIOBE Index lo sita 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

!Java donde quiera

Hoy en da, la tecnologa Java ya est presente en 5 mil millones de


tarjetas SIM y tarjetas inteligentes, 3 mil millones de telfonos mviles, 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


actualizacin ms grande para el modelo de programacin Java desde el
lanzamiento de la plataforma en 1996.

Cdigo fuente de los ejemplos en GitHub


https://github.com/ecabrerar/taller-desarrollo-web-java

Aplicaciones Web

Qu es una aplicacin web?


'Por definicin, se trata de algo ms que un 'sitio web'.
Se trata de una aplicacin cliente / servidor que utiliza un navegador Web
como su programa cliente, y por consiguiente constituye un servicio interactivo
mediante la conexin con los servidores a travs de Internet (o Intranet).
Una aplicacin web presenta contenido adaptado dinmicamente en funcin de
parmetros de la peticin, los comportamientos de los usuarios seguidos, y
consideraciones de seguridad.

Tendencias en el desarrollo de software

Aplicacin Web Java


Una aplicacin Web Java puede ser representada como una jerarqua de
directorios y archivos, que a su vez contiene:

Componentes Web (Servlets, JavaServer Pages, entre otros)


Recursos estticos (pginas html e imgenes).
Clases Java.
Libreras (Archivos Jars).
Un archivo descriptor de despliegue (web.xml).

Una aplicacin web de Java se puede implementar como un archivo ".war".


El archivo ".war" es un archivo zip que contiene todo el contenido de la
aplicacin web correspondiente.

Contenedores Web
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 ejecucin 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

Contenedores Web
En general, Java distingue dos contenedores: El contenedor web y el contenedor
Java EE.
Un contenedor Web apoya la ejecucin de Servlets Java y JavaServer Pages.
Un contenedor compatible con Java EE
provee funcionalidades adicionales,
tales como, gestor de ejecucin de
los Enterprise JavaBeans, interfaz
de conexin entre el servidor
Java EE y aplicaciones clientes.

Contenedores Web
Contenedores web tpicas en el mundo
Java son Tomcat o Jetty.

Contenedores Web
La mayora de los frameworks web modernos de Java estn basadas en servlets
y JavaServer Pages.
Frameworks web populares en
Java son JavaServer Faces,
Struts, Spring.
Estos frameworks web por lo general
se ejecutan en un contenedor web.

Tecnologas usadas
en aplicaciones Web

Estndares Web Java


Las tecnologas estndar de Java se definen a travs de un proceso estndar
llamado Java Community Process (JCP).
Las siguientes tecnologas se definen por la JCP.
https://jcp.org/en/home/index

Tecnologas Java para Aplicaciones Web

Java Servlet
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 refera a pequeos programas que
se ejecutan en el contexto de un navegador web.
El uso ms comn de los servlets es generar pginas web de forma dinmica a partir de
los parmetros de la peticin que enve el navegador web.
Otras opciones que permiten generar contenido dinmico son los lenguajes ASP, PHP,
JSP (un caso especial de servlet), Ruby y Python.

Java Servlet

Servlet dentro de un
contenedor Servlet.

Clases y Objetos Necesarios


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 informacin de la
pgina que invoc al servlet.

Java Servlet

Ciclo de Vida
El ciclo de vida de un Servlet se divide en los siguientes puntos:
a.
b.
c.
d.
e.
f.

El cliente solicita una peticin a un servidor va URL.


El servidor recibe la peticin.
Si es la primera, se utiliza el motor de Servlets para cargarlo y se llama al
mtodo init().
Si ya est iniciado, cualquier peticin se convierte en un nuevo hilo. Un
Servlet puede manejar mltiples peticiones de clientes.
Se llama al mtodo service() para procesar la peticin devolviendo el
resultado al cliente.
Cuando se apaga el motor de un Servlet se llama al mtodo destroy(), que lo
destruye y libera los recursos abiertos.

Beneficios de utilizar Servlets de CGI


a)

b)

Son ms eficientes y utilizan menos recursos. CGI utiliza un nuevo


proceso por cada peticin. En cambio en los Servlets slo existe una copia
cargada en la mquina virtual y por cada peticin 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


peticin.

Sessiones
HttpSession representa un objeto a una sesin de usuario y contiene
informacin sobre el usuario en las distintas solicitudes HTTP.
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
}

Almacenar session
session.setAttribute("userName", "theUserName");
Leer una session
String userName = (String) session.getAttribute("userName");

ServletContext
ServletContext es un objeto que contiene meta-informacin acerca de la
aplicacin web.
Atributos
Asignacin
context.setAttribute("someValue", "aValue");
Lectura
Object attribute = context.getAttribute("someValue");

Descriptor de despliegue
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 pginas JSP.

Servlet 3.0
Es una actualizacin a la versin anterior Servlet 2.5, sus principales funcionalidades
son:

Soporte para transacciones asncrona.


Facilidad de configuracin.
Mejoras en el API.
Facilidad para ser integrada con otras tecnologas (Pluggability).

Servlet 3.0

Java Server Pages


JavaServer Pages (JSP) es una tecnologa Java que permite generar contenido dinmico
para web, en forma de documentos HTML, XML o de otro tipo.
Las JSP's permiten la utilizacin de cdigo Java mediante scripts.
Adems, es posible utilizar algunas acciones JSP predefinidas mediante etiquetas.
Estas etiquetas pueden ser enriquecidas mediante la utilizacin de Bibliotecas de Etiquetas
(TagLibs o Tag Libraries) externas e incluso personalizadas.

Java Server Pages


Arquitectura
JSP puede considerarse como una manera alternativa, y simplificada, de construir
servlets.
El funcionamiento general de la tecnologa JSP es que el Servidor de Aplicaciones
interpreta el cdigo contenido en la pgina JSP para construir el cdigo Java del
servlet a generar. Este servlet ser el que genere el documento (tpicamente
HTML) que se presentar en la pantalla del Navegador del usuario.
JSP -> Servidor Aplicaciones (Servlets) -> Cliente (Navegador)

Java Server Pages


Arquitectura
Es posible enriquecer el lenguaje de etiquetas utilizado por JSP. Para ello
debemos extender la capa de alto nivel JSP mediante la implementacin de
Bibliotecas de Etiquetas (Tags Libraries).
Un ejemplo de estas bibliotecas son las proporcionadas por Java bajo la
denominacin de JSTL o las distribuidas por Apache junto con el Framework de
Struts.
TagLibs -> JSP -> Servidor Aplicaciones (Servlets) -> Cliente (Navegador)

Java Server Pages


Arquitectura

Java Server Pages


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>

Java Server Pages


Directivas
Las directivas JSP son instrucciones procesadas por el motor JSP cuando la
pgina 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 estn encerradas entre etiquetas de directiva <%@ y %>.
<%@ page import="javax.naming.*" %>
<%@ page import="javax.rmi.PortableRemoteObject" %>
<%@ page import="Beans.*" %>

Java Server Pages


Declaraciones
Las declaraciones JSP nos permiten configurar variables para su uso posterior
en expresiones o scriptlets.
Tambin 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; %>

Java Server Pages


Scriptlets
Los scriptlets JSP nos permiten embeber segmentos de cdigo java dentro de
una pgina JSP.
El cdigo embebido se inserta directamente en el servlet generado que se
ejecuta cuando se pide la pgina.
Este scriptlet usa las variables declaradas en las directivas descritas
anteriormente.

Java Server Pages


Scriptlets
Los Scriptlets van encerradas entre etiquetas <% y %>.
<%
strMult = request.getParameter("MULTIPLIER");
socsec = request.getParameter("SOCSEC");
integerMult = new Integer(strMult);
multiplier = integerMult.intValue();
bonus = 100.00;
%>

Java Server Pages


Variables Predefinidas
Un 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;
%>

Java Server Pages


Etiquetas especficas de JSP
<jsp:forward>, redirige la request a otra URL
<jsp:include>, incluye el texto de un fichero dentro de la pgina
<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.

Java Server Pages


Ventajas:
La principal ventaja de JSP frente a otros lenguajes es que el lenguaje Java es
un lenguaje de propsito general que excede el mundo web y que es apto para
crear clases que manejan lgica 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


Ventajas:
JSP hereda la portabilidad de Java, y es posible ejecutar las aplicaciones en
mltiples plataformas sin cambios.
Su persistencia le permite tambin hacer una serie de cosas de forma ms
eficiente: conexin a bases de datos y manejo de sesiones.

ser

Java Server Pages


El rendimiento de una pgina JSP es el mismo que tendra el servlet
equivalente, ya que el cdigo es compilado como cualquier otra clase Java.
A su vez, la mquina virtual compila dinmicamente el cdigo de mquina de
las partes de la aplicacin que lo requieran.
Esto hace que JSP tenga un buen desempeo y sea ms eficiente que otras
tecnologas web que ejecutan el cdigo de una manera puramente
interpretada.

Referencias
Todas las marcas registradas, as como todos los logotipos, imgenes,
fotografas, audio y vdeos mostrados en esta presentacin son propiedad de
sus respectivos propietarios y/o representantes.
Su utilizacin es solamente para fines ilustrativos.
Enlaces:
http://www.vogella.com/tutorials/JavaWebTerminology/article.html
http://tutorials.jenkov.com/java-servlets/overview.html

Preguntas?

@eudriscabrera

@eudris
@ecabrerar

Eudris Cabrera Rodrguez


Ingeniero Telemtico
Desarrollador de Software / Consultor Informtico

eudris@gmail.com

@eudriscabrera

S-ar putea să vă placă și