07 noviembre, 2006

Servlets y JSP - Introducción

Antes de comenzar, sería interesante plantear el diagrama de las n-capas para podernos ubicar en la capa que nos interesa en este momento: la capa de presentación.



En la capa de presentación basicamente vamos a trabajar con dos tecnologías: Servlets y JSP.


Servlets

Antiguamente los servlets se utilizaban para generar contenido web dinamicamente. Si bien todavía pueden utilizarse con ese fin, hoy existen maneras más eficientes, en las que los servlets ocupan otro rol: el de controladores.

Veamos un HolaMundoServlet.java como lo hubieran escrito nuestros abuelos:



Vemos que utilizar servlets de esta forma es demasiado complejo. El principal problema es que para poderlos escribir se necesita conocer dos lenguajes: Java y HTML que (a su vez) son de naturaleza totalmente diferente.


JavaServer Pages (JSP)

Veamos el mismo ejemplo pero utilizando una página JSP.



Como vemos, en JSP simplemente escribimos código html y solo utilizamos Java para generar el contenido dinámico (en este caso la fecha/hora actual).


Aplicaciones Web

Antes de poder correr una página JSP o un servlet necesitamos crear una aplicación web.

Una aplicación web es una estructura de directorios que agrupa un conjunto de recursos web (servlets, JSP, xml, html, etc).



La imagen muestra la estructura de una aplicación web: la aplicación hmapp.
Vemos que el directorio hmapp tiene un subdirectorio WEB-INF quien a su vez tiene dos subdirectorios: classes y lib.

En el directorio lib debemos copiar los archivos .jar que necesite la aplicación. El container los var a incluir en el CLASSPATH al iniciarla.

El directorio classes es el “package root” de la aplicación. Las clases que programamos y que no están en los .jar deben estar debajo de este directorio, dentro de los subdirectorios que correspondan a los paquetes.

Los JSP deben deben estar dentro del directorio de la aplicación (en este caso hmapp) o en algún subdirectorio.

Además de respetar la estructura de directorios que describimos, la aplicación web debe tener un archivo llamado web.xml.

Web.xml es el descriptor de la aplicación. Es un archivo de configuración en el cual podemos definir parámetros para la aplicación e indicaciones para el container. Por ejemplo: session timeout, listeners, servlets-mapping, filters, etc. Todos estos temas los analizaremos más adelante.


Archivos WAR y Deploy

Para distribuir la aplicación web podemos zippear el directorio principal (hmapp) y renombrar el archivo como .war.

Los archivos .war pueden ser colocados directamente en el directorio de deploy del container. Si utilizamos Tomcat entonces podemos “tirar” los .war en el /webapps. Si utilizamos JBoss entonces podemos “tirarlos” en el /deploy.

Al proceso de zipear, renombrar como .war y copiar el .war al directorio indicado en el server se lo llama "proceso de deploy". Decimos entonces que "deployamos" (instalamos en el server) la aplicación web.