sábado, 15 de agosto de 2015

Introducción a los Servlet ¿Qué son los Servlet Java?

Introducción a los Java Servlets Los Servlets de Java son la propuesta de la tecnología Java para el desarrollo de aplicaciones web. Un Servlet es un programa que se ejecuta en un servidor web y que construye una página web que es devuelta al usuario. Esta página, construida dinámicamente, puede contener información procedente de bases de datos, ser una respuesta a los datos introducidos por el usuario, etc. 

Los Servlets Java presentan una serie de ventajas sobre los CGI, el método tradicional de desarrollo de aplicaciones web. Éstos son más portables, más potentes, mucho más eficientes, más fáciles de usar, más escalables, etc.

Eficiencia 


Con el modelo tradicional de CGI, cada petición que llega al servidor dispara la ejecución de un nuevo proceso. Si el tiempo de vida del CGI (el tiempo que tarda en ejecutarse) es corto, el tiempo de instanciación (el tiempo de arrancar un proceso) puede superar al de ejecución. Con el modelo de Servlets, la máquina virtual de Java, el entorno donde se ejecutan, se arranca al iniciar el servidor, permaneciendo arrancada durante toda la ejecución del mismo. Para atender cada petición no se arranca un nuevo proceso, sino un thread, un proceso ligero de Java, mucho más rápido (de hecho, casi instantáneo). Además, si tenemos x peticiones simultáneas de un CGI, tendremos x procesos simultáneos en memoria, consumiendo así x veces el espacio de un CGI (que, en caso de ser interpretado, como suele ocurrir, implica el consumo de x veces el intérprete). En el caso de los Servlets, hay determinada cantidad de threads, pero sólo una copia de la máquina virtual y sus clases. 

El estándar de Servlets también nos ofrece más alternativas que los CGI para optimizaciones: caches de cálculos previos, pools de conexiones de bases de datos, etc.

Facilidad de uso 

El estándar de Servlets nos ofrece una magnífica infraestructura de desarrollo de aplicaciones web, proporcionándonos métodos para análisis automático y decodificación de los datos de los formularios de HTML, acceso a las cabeceras de las peticiones HTTP, manejo de cookies, seguimiento, control y gestión de sesiones, entre otras muchas facilidades.

Potencia 

Los Servlets Java permiten hacer muchas cosas que son difíciles o imposibles de realizar con los CGI tradicionales. Los Servlets pueden compartir los datos entre sí, permitiendo compartir datos, conexiones a bases de datos, etc. Asimismo, pueden mantener información de solicitud en solicitud, facilitando tareas como el seguimiento de las sesiones de usuario, etc. 

Portabilidad 

Los Servlets están escritos en Java y se rigen por un API estándar bien documentado. Como consecuencia de ello, los Servlets pueden ejecutarse en todas las plataformas que nos ofrezcan soporte de Java Servlets, sin tener que recompilar, modificarse, etc., sean estas plataformas Apache, iPlanet, IIS, etc., y además, con independencia de sistema operativo, arquitectura hardware, etc.

Arquitectura de un Servlet 


Para optener más información y compresión sobre el tema les invito a mirar un video del Canal de CompartiendoCodigos espero que les sirva y les guste!!!


Bibliografia: Desarrollo de Aplicaiones Web, Software Libre, Carles Mateu, XP04/90791/00021

viernes, 14 de agosto de 2015

Introducción al Diseño y Desarrollo de Aplicaciones Web Procesos CGI

Uno de los primeros mecanismos para generar contenido dinámico para la web es el API llamado CGI (acrónimo de common gateway interface, interfaz de pasarelas común). Éste es un mecanismo muy simple que permite que un servidor web ejecute un programa escrito en cualquier lenguaje de programación (ya sea como respuesta a un formulario HTML, a partir de un enlace, etc.), que le pueda pasar unos parámetros (bien provenientes del usuario, vía formularios, bien parámetros de configuración del servidor, del entorno de ejecución, etc.) y, finalmente, hace posible que el resultado de la ejecución de este programa sea enviado al usuario como una página web o cualquier otro tipo de contenido (un gráfico, etc.). Gracias a este sencillo mecanismo, las páginas web, que hasta el momento de la aparición de CGI tenían unos contenidos estáticos e inmutables, son generadas dinámicamente en respuesta a peticiones concretas. Se abre así un nuevo mundo a los programadores de aplicaciones web. Estudiaremos a continuación el API de CGI, el cual ha quedado relegado en muchos casos a un papel secundario, pues adolece de muchos problemas, siendo la falta de rendimiento el más destacado de todos.


Introducción a los CGI

 Al contrario de lo que sucede con los Servlets, etc., no existe ningún tipo de limitación al lenguaje de programación que podemos utilizar para escribir un CGI. Podemos usar desde scripts escritos en el lenguaje de la shell del sistema operativo hasta programas escritos en ensamblador, pasando por todo el abanico de lenguajes de programación existentes: C, C++, Perl, Python, etc. Hasta ahora, el lenguaje más popular para la escritura de CGI es Perl, ya que proporciona utilidades al programador que simplifican sobremanera la tarea de escribir programas CGI.


Comunicación con los CGI 

Lo primero que debemos recordar a la hora de escribir programas como CGI es el mecanismo de comunicación que nos proporciona el servidor web. Disponemos de dos opciones para enviar datos a un CGI (los datos generalmente procederán de un usuario, por norma general a partir de un formulario):
  •  Método GET. El método GET pasa toda la información (excepto ficheros) al CGI en la línea de dirección de la petición HTTP. 
  •  Método POST. El método POST pasa toda la información al CGI en la entrada estándar, incluyendo ficheros. 
Una vez recibe una petición que debe dirigir a un fichero CGI, el servidor ejecuta este programa, el CGI, y le envía la información a través de variables de entorno (o a través de la entrada estándar, si fuese pertinente). Algunas de las variables de entorno definidas por el estándar CGI son:


SERVER_NAME Nombre del servidor. 
SERVER_PROTOCOL Protocolo utilizado por la petición. 
REQUEST_METHOD Método utilizado para la invocación (GET o POST). 
PATH_INFO Información de la ruta especificada en la petición. 
PATH_TRANSLATED Ruta física a la ubicación del CGI en el servidor. 
SCRIPT_NAME Nombre del CGI. 
REMOTE_ADDR Dirección IP del ordenador que realiza la petición. 
REMOTE_HOST Nombre del ordenador que realiza la petición. 
REMOTE_USER Usuario que realiza la petición. 
AUTH_TYPE Tipo de autentificación. 
CONTENT_TYPE Tipo MIME del contenido de la petición, especialmente útil en peticiones POST. CONTENT_LENGTH Tamaño del contenido especialmente útil en peticiones POST. 

La mayoría de servidores web proveen además de la variable de entorno llamada QUERY_STRING, que contiene los datos de la petición si ésta ha sido de tipo GET o si hemos añadido datos a la URL. Algunos servidores web añaden datos extra al entorno. La mayoría de estas variables adicionales empiezan con HTTP_ para evitar conflictos con versiones posteriores del estándar.

Espero que les sirva el material si quieren ver la versión MULTIMEDIA pueden ver desde aquí:



Bibliografia: Desarrollo de Aplicaiones Web, Software Libre, Carles Mateu, XP04/90791/00021

Seguir viendo el Curso (Introducción a los Servlet´s en Java)