Download Java en la Web - Bienvenidos a FACITEC
Document related concepts
no text concepts found
Transcript
Universidad Nacional de Canindeyu Facultad de Ciencia y Tecnología Java en la Web Aplicaciones Web Por: Víctor Velázquez Profesor guía: Víctor Núñez Curuguaty-Paraguay 2012 Página | 1 Agradecimiento Dios, por darme la oportunidad de vivir y por estar conmigo en cada paso que doy, por fortalecer mi corazón e iluminar mi mente y por haber puesto en mi camino a aquellas personas que han sido mi soporte y compañía durante todo el periodo de estudio. A mis padres por ser el pilar fundamental en todo lo que soy, en toda mi educación, tanto académica, como de la vida, por su incondicional apoyo perfectamente mantenido a través del tiempo. Todo este trabajo ha sido posible gracias a ellos. Página | 2 Dedicatoria A mis padres, porque creyeron en mí y porque me sacaron adelante, dándome ejemplos dignos de superación y entrega, porque en gran parte gracias a ustedes, hoy puedo ver alcanzada mi meta, ya que siempre estuvieron impulsándome en los momentos más difíciles de mi carrera, y porque el orgullo que sienten por mí, fue lo que me hizo ir hasta el final. Página | 3 Fundamentación ¿Quién no ha utilizado el Hotmail, Facebook, Twitter?. ¿Quién no ha comprado en Amazon, ha vendido un producto en Mercado Libre, ha dejado un comentario en un blog, ha entrado a la intranet de su empresa, ha realizado una búsqueda en Google o ha realizado una transacción bancaria vía internet?. Casi nadie, ¿no?. Bueno, para que tengan una idea, tanto el Hotmail, Facebook, Twitter, Amazon, Mercado Libre, los blogs, las intranets e incluso Google no son páginas web; por el contrario, contienen una lógica compleja que no vemos. Es por ello que son llamadas aplicaciones web. Quizás les sobrevenga la duda de cuál es la diferencia entre una página y una aplicación web, ¿acaso no es lo mismo?, si es así, la respuesta es: NO. Las páginas web muestran información estática y son creadas empleando lenguajes de programación como el HTML o el XHTML, que son lenguajes que los navegadores web interpretan para mostrarnos la información en pantalla; mientras que las aplicaciones web trabajan de una manera dinámica, pues nos permiten interactuar con la información, consultar bases de datos, realizar transacciones, etc., y además del lenguaje HTML base, necesitan de otras tecnologías de programación como Java, ASP.Net, Php, etc. En términos prácticos, las aplicaciones web son soluciones informáticas o como su nombre lo dice “aplicaciones” que nos permiten interactuar con la información y a las cuales podemos acceder a través de una conexión a internet, desde cualquier lugar del mundo, sin necesidad de instalarlas previamente en nuestra pc; solamente necesitamos contar con un navegador web, llámese Mozzilla, Internet Explorer, Chrome, etc.. Página | 4 Objetivos Objetivo General Conocer las herramientas y el proceso de desarrollo de aplicaciones web estudiando específicamente la tecnología Java Objetivos Específicos Entender la definición de Aplicación Web Conocer las Clasificaciones de Java para la web Interpretar los códigos de ejemplos simples a modo de introducción a la tecnología Java Página | 5 Índice Contenido Página Portada……………………………………………………………………………………..1 Agradecimiento………………………………………………………………………….…2 Dedicatoria………………………………………………………………………………....3 Fundamentación…………………………………………………………………………..4 Objetivos……………………………………………………………………………………5 Objetivo General…………………………………………………………………..5 Objetivos Específicos………………………………………………………….….5 Índice…………………………………………………………………………………….….6 Introducción………………………………………………………………………………..8 1-Aplicación Web………………………………………………………………………….9 1.1-Interfaz……………………………………………………………………...….9 1.2-Estructura de las aplicaciones web…………………………………………9 1.3-Ventajas……………………………………………………………………....10 1.4-Inconvenientes………………………………………………………….……11 1.5-Lenguajes de programación………………………………………………..11 2-Java (lenguaje de programación)………………………………………...….12 2.1-Applet Java……………………………………………………………..……12 2.1.1-Ventajas…………………………………………………………………….12 2.1.2-Desventajas…………………………………………………………..……13 2.1.3-Crear un applet………………………………………………………….…13 2.1.4-Ejecución………………………………………………………………..….15 2.1.5-Etiqueta <applet>………………………………………………………....16 Página | 6 2.1.6-Etiqueta <object>…………………………………………………….……17 2.1.7-Ciclo de vida………………………………………………………….……18 2.1.8-Ejemplo Gráfico de una Ventana Applet de Java:………………..……19 2.2-Java Web Start……………………………………………………………………....19 2.3-Java Servlet………………………………………………………………….………20 Que es un Servlet?.......................................................................................20 Que es un contenedor de Servlets?.............................................................20 Como funcionan un contenedor de Servlets?..............................................20 2.3.1-Ciclo de vida………………………………………………………….……21 2.3.2-Clases y objetos necesarios……………………………………………..21 2.3.3-Ejemplo……………………………………………………………………..21 2.4-JavaServer Pages…………………………………………………………………..22 2.4.1-Arquitectura………………………………………………………………..23 2.4.2-Estructura de una página JSP……………………………………...……23 2.4.2.1-Directivas…………………………………………………………...……24 2.4.2.2-Declaraciones……………………………………………………………24 2.4.2.3-Scriptlets……………………………………………………………....…24 2.4.2.4-Variables Predefinidas………………………………………………....25 2.4.2.5-Expresiones…………………………………………………...…………25 2.4.3-Procesamiento de la página JSP………………………………..………25 Conclusión………………………………………………………………………......……26 Bibliografía…………………………………………………………………………..……27 Página | 7 Introducción Inicialmente la web era simplemente una colección de páginas estáticas, documentos, etc., que podían consultarse o descargarse. El siguiente paso en su evolución fue la inclusión de un método para confeccionar páginas dinámicas que permitiesen que lo mostrado fuese dinámico (generado o calculado a partir de los datos de la petición). Dicho método fue conocido como CGI (common Gateway interface) y definía un mecanismo mediante el cual podíamos pasar información entre el servidor HTTP y programas externos. Los CGI siguen siendo muy utilizados, puesto que la mayoría de los servidores web los soportan debido a su sencillez. Además, nos proporcionan total libertad a la hora de escoger el lenguaje de programación para desarrollarlos. El esquema de funcionamiento de los CGI tenía un punto débil: cada vez que recibíamos una petición, el servidor web lanzaba un proceso que ejecutaba el programa CGI. Como, por otro lado, la mayoría de CGI estaban escritos en algún lenguaje interpretado (Perl, Python, etc.) o en algún lenguaje que requería runtime environment (VisualBasic, Java, etc.), esto implicaba una gran carga para la máquina del servidor. Además, si la web tenía muchos accesos al CGI, esto suponía problemas graves. Por ello se empiezan a desarrollar alternativas a los CGI para solucionar este grave problema de rendimiento. Las soluciones vienen principalmente por dos vías. Por un lado se diseñan sistemas de ejecución de módulos más integrados con el servidor, que evitan que éste tenga que instanciar y ejecutar multitud de programas. La otra vía consiste en dotar al servidor de un intérprete de algún lenguaje de programación (RXML, PHP, VBScript, etc.) que nos permita incluir las páginas en el código de manera que el servidor sea quien lo ejecute, reduciendo así el tiempo de respuesta. A partir de este momento, se vive una explosión del número de arquitecturas y lenguajes de programación que nos permiten desarrollar aplicaciones web. Todas ellas siguen alguna de las dos vías ya mencionadas. De ellas, las más útiles y las que más se utilizan son aquellas que permiten mezclar los dos sistemas, es decir, un lenguaje de programación integrado que permita al servidor interpretar comandos que “incrustemos” en las páginas HTML y un sistema de ejecución de programas más enlazado con el servidor que no presente los problemas de rendimiento de los CGI. Página | 8 Marco Teórico 1-Aplicacion web En la ingeniería de software se denomina aplicación web a aquellas herramientas que los usuarios pueden utilizar accediendo a un servidor web a través de Internet o de una intranet mediante un navegador. En otras palabras, es una aplicación software que se codifica en un lenguaje soportado por los navegadores web en la que se confía la ejecución al navegador. Las aplicaciones web son populares debido a lo práctico del navegador web como cliente ligero, a la independencia del sistema operativo, así como a la facilidad para actualizar y mantener aplicaciones web sin distribuir e instalar software a miles de usuarios potenciales. Existen aplicaciones como los webmails, wikis, weblogs, tiendas en línea que son ejemplos bien conocidos de aplicaciones web. Es importante mencionar que una página Web puede contener elementos que permiten una comunicación activa entre el usuario y la información. Esto permite que el usuario acceda a los datos de modo interactivo, gracias a que la página responderá a cada una de sus acciones, como por ejemplo rellenar y enviar formularios, participar en juegos diversos y acceder a gestores de base de datos de todo tipo. 1.1-Interfaz Las interfaces web tienen ciertas limitaciones en las funcionalidades que se ofrecen al usuario. Hay funcionalidades comunes en las aplicaciones de escritorio como dibujar en la pantalla o arrastrar-y-soltar que no están soportadas por las tecnologías web estándar. Los desarrolladores web generalmente utilizan lenguajes interpretados (scripts) en el lado del cliente para añadir más funcionalidades, especialmente para ofrecer una experiencia interactiva que no requiera recargar la página cada vez (lo que suele resultar molesto a los usuarios). Recientemente se han desarrollado tecnologías para coordinar estos lenguajes con las tecnologías en el lado del servidor. 1.2-Estructura de las aplicaciones web Aunque existen muchas variaciones posibles, una aplicación web está normalmente estructurada como una aplicación de tres-capas. En su forma más común, el navegador web ofrece la primera capa, y un motor capaz de usar alguna Página | 9 tecnología web dinámica que constituye la capa intermedia. Por último, una base de datos constituye la tercera y última capa. El navegador web manda peticiones a la capa intermedia que ofrece servicios valiéndose de consultas y actualizaciones a la base de datos y a su vez proporciona una interfaz de usuario. 1.3-Ventajas - Ahorra tiempo: Se pueden realizar tareas sencillas sin necesidad de descargar ni instalar ningún programa. - No hay problemas de compatibilidad: Basta tener un navegador actualizado para poder utilizarlas. - No ocupan espacio en nuestro disco duro. - Actualizaciones inmediatas: Como el software lo gestiona el propio desarrollador, cuando nos conectamos estamos usando siempre la última versión que haya lanzado. - Consumo de recursos bajo: Dado que toda (o gran parte) de la aplicación no se encuentra en nuestro ordenador, muchas de las tareas que realiza el software no consumen recursos nuestros porque se realizan desde otro ordenador. Página | 10 - Multiplataforma: Se pueden usar desde cualquier sistema operativo porque sólo es necesario tener un navegador. - Portables: Es independiente del ordenador donde se utilice (un PC de sobremesa, un portátil...) porque se accede a través de una página web (sólo es necesario disponer de acceso a Internet). La reciente tendencia al acceso a las aplicaciones web a través de teléfonos móviles requiere sin embargo un diseño específico de los ficheros CSS para no dificultar el acceso de estos usuarios. - La disponibilidad suele ser alta porque el servicio se ofrece desde múltiples localizaciones para asegurar la continuidad del mismo. - Los virus no dañan los datos porque éstos están guardados en el servidor de la aplicación. - Colaboración: Gracias a que el acceso al servicio se realiza desde una única ubicación es sencillo el acceso y compartición de datos por parte de varios usuarios. Tiene mucho sentido, por ejemplo, en aplicaciones online de calendarios u oficina. - Los navegadores ofrecen cada vez más y mejores funcionalidades para crear aplicaciones web ricas (RIAs). 1.4-Inconvenientes - La disponibilidad depende de un tercero, el proveedor de la conexión a internet o el que provee el enlace entre el servidor de la aplicación y el cliente. Así que la disponibilidad del servicio está supeditada al proveedor. 1.5-Lenguajes de programación Existen numerosos lenguajes de programación empleados para el desarrollo de aplicaciones web en el servidor, entre los que destacan: PHP Java, con sus tecnologías Java Servlets y JavaServer Pages (JSP) Javascript Perl Ruby Python Página | 11 2-Java (lenguaje de programacion) Java es un lenguaje de programación de alto nivel orientado a objetos, desarrollado por James Gosling en 1995. El lenguaje en sí mismo toma mucha de su sintaxis de C, Cobol y Visual Basic, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria. La memoria es gestionada mediante un recolector de basura. 2.1-Applet Java Un applet Java es un applet escrito en el lenguaje de programación Java. Los applets de Java pueden ejecutarse en un navegador web utilizando la Java Virtual Machine (JVM), o en el AppletViewer de Sun. En Java, un applet es un programa que puede incrustarse en un documento HTML, es decir en una página web. Cuando un navegador carga una página web que contiene un applet, este se descarga en el navegador web y comienza a ejecutarse. Esto permite crear programas que cualquier usuario puede ejecutar con tan solo cargar la página web en su navegador. 2.1.1-Ventajas Los applets de Java suelen tener las siguientes ventajas: Son multiplataforma (funcionan en Linux, Windows, Mac OS, y en cualquier sistema operativo para el cual exista una Java Virtual Machine). Página | 12 El mismo applet puede trabajar en "todas" las versiones de Java, y no sólo la última versión del plugin. Sin embargo, si un applet requiere una versión posterior del Java Runtime Environment (JRE), el cliente se verá obligado a esperar durante la descarga de la nueva JRE. Es compatible con la mayoría de los navegadores web. Puede ser almacenado en la memoria caché de la mayoría de los navegadores web, de modo que se cargará rápidamente cuando se vuelva a cargar la página web, aunque puede quedar atascado en la caché, causando problemas cuando se publican nuevas versiones. Puede tener acceso completo a la máquina en la que se está ejecutando, si el usuario lo permite. Puede ejecutarse a velocidades comparables a la de otros lenguajes compilados, como C++ (dependiendo de la version de la JVM). Puede trasladar el trabajo del servidor al cliente, haciendo una solución web más escalable tomando en cuenta el número de usuarios o clientes. 2.1.2-Desventajas Los applets de Java suelen tener las siguientes desventajas: Requiere el plugin de Java, que no está disponible por defecto en todos los navegadores web. No puede iniciar la ejecución hasta que la JVM esté en funcionamiento, y esto puede tomar tiempo la primera vez que se ejecuta un applet. Si no está firmado como confiable, tiene un acceso limitado al sistema del usuario - en particular no tiene acceso directo al disco duro del cliente o al portapapeles. Algunas organizaciones sólo permiten la instalación de software a los administradores. Como resultado, muchos usuarios (sin privilegios para instalar el plugin en su navegador) no pueden ver los applets. Un applet podría exigir una versión específica del JRE. 2.1.3-Crear un applet Para crear un applet necesitamos escribir una clave de la clase Applet del paquete java.applet.*; Página | 13 import java.applet.*; public class MiApplet extends Applet { //Cuerpo del ''applet''. } El código anterior declara una nueva clase MiApplet que hereda todas las capacidades de la clase Applet de Java. El resultado es un fichero MiApplet.java. Una vez creada la clase que compone el applet, escribimos el resto del código y después lo compilamos, obteniendo el fichero MiApplet.class. Para poder crear el applet se necesita compilar el código Java en un intérprete. import java.applet.*; import java.awt.*; import java.util.*; import java.text.DateFormat; public class MiApplet extends Applet implements Runnable { private Thread hilo = null; private Font fuente; private String horaActual = "00:00:00"; public void init() { fuente = new Font("Verdana", Font.BOLD, 24); } public void start() { if (hilo == null) { hilo = new Thread(this, "Reloj"); hilo.start(); } } public void run() { Thread hiloActual = Thread.currentThread(); while (hilo == hiloActual) { //obtener la hora actual Calendar cal = Calendar.getInstance(); Date hora = cal.getTime(); Página | 14 DateFormat df = DateFormat.getTimeInstance(); horaActual = df.format(hora); repaint(); try { Thread.sleep(1000); } catch (InterruptedException e){} } } public void paint(Graphics g) { //Dibujar un rectángulo alrededor del contenedor g.draw3DRect(1, 1, getSize().width-3, getSize().height-3, false); //Establecer la Fuente g.setFont(fuente); //mostrar la Hora g.drawString(horaActual,14,40); } public void stop() { hilo = null; } } Si se utiliza la biblioteca gráfica Swing, se puede utilizar la clase JApplet de javax.swing en vez de Applet: import javax.swing.*; public class MiApplet extends JApplet { //Cuerpo del ''applet''. } 2.1.4-Ejecución Para insertar el applet en una página web, se usa la siguiente estructura: <etiqueta parametro = "valor"></etiqueta> Página | 15 2.1.5-Etiqueta <applet> Siguiendo la estructura anterior, un ejemplo de código para ejecutar el applet sería: <applet code="MiApplet.class" width="370" height="270"></applet> Pudiéndose usar los siguientes atributos: Atributo Descripción Ejemplo Codebase Dirección desde donde se puede descargar la clase de Java que va a codebase="http://www.p cargar el applet, el URL de la clase. Si agina.com/applet/" no se especifica, será la ubicación actual de la página HTML. Code Nombre de la clase que se quiere cargar en el applet. La dirección donde se encuentra es relativa code="NombreClase.clas al codebase. Si no se ha s" especificado codebase, es la misma carpeta donde está la página HTML que carga el applet. Width Tamaño en píxels de la anchura. width=100 Height Tamaño en píxels de la altura. height=100 Alt Texto que se muestra donde debería alt="Su navegador no cargarse el applet si el navegador no permite cargar este Applet" permite su carga. Name Establece un nombré único para el applet. name="MiApplet" Página | 16 Archive Es un listado de clases separados por comas que deben ser cargados en la caché del usuario local antes de poder ejecutarse. Hspace Establece los márgenes laterales en hspace=25 píxels. Vspace Establece el margen superior e inferior en píxels. Align Alineación respecto a otros elementos. align="center" Valores: left, center, rigth, top, midd le y botton Mayscript Permite especificar si el applet puede tener acceso al código JavaScript archive="Clase1.class, Clase2.class, Clase3.class" vspace=25 No tiene valor asociado. Si aparece se aplica. Dentro de la etiqueta <applet> puede aparecer la etiqueta <param> que contiene pares clave/valor, que son leídos por el programa Java, tantas veces como se quiera. 2.1.6-Etiqueta <object> A partir de la versión 4.0 de HTML se consideró obsoleto el uso de la etiqueta <applet>, siendo sustituida por <object>. Esta etiqueta es compatible con los navegadores Microsoft Internet Explorer, Netscape 6 (y versiones superiores) y Mozilla Firefox. Comparte muchos de los atributos con <applet>, siendo los únicos para esta etiqueta: Página | 17 Atributo Classid Descripción Identificador del tipo de objeto. URL que apunta a un fichero .cab en la red Codebase del plugin necesario para poder ejecutar el contenido. Type Tipo de archivo que va a reproducirse mediante el objeto. Ejemplo Para Java es: classid="clsid:CAFEEFAC -0014-0001-0000ABCDEFFEDCBA" codebase="Dirección_del_i nstalador_de_la_Máquina_V irtual_Java" <param name="type" value="application/xjava-applet;jpiversion=1.5.0"> 2.1.7-Ciclo de vida Cuando un applet se inicia, se llaman en este orden a los siguientes métodos: 1. init: suele contener instrucciones para inicializar el applet. 2. start: como init, se suele usar para inicializar, pero con la diferencia de que este método también se llama cuando se reinicia un applet. 3. paint: se encarga de mostrar el contenido del applet. Se ejecuta cada vez que se tenga que redibujar. Para terminar o pausar la ejecución se llama a los siguientes métodos: stop: suspende la ejecución del programa. Se llama cuando el applet se vuelve temporalmente invisible. destroy: cuando no se va a necesitar más el applet. Se usa para liberar recursos. Página | 18 2.1.8-Ejemplo Gráfico de una Ventana Applet de Java: 2.2-Java Web Start Java Web Start es la implementación de referencia de la especificación Java Networking Launching Protocol (JNLP) y está desarrollada por Sun Microsystems, mediante la cual permite arrancar aplicaciones Java que están en un servidor web de aplicaciones comprobando previamente si el cliente tiene la versión actualizada de dicha aplicación. Si no es así descargará la última versión y se ejecutará en local. El arranque de dichas aplicaciones puede ser efectuado mediante enlaces en una página web o bien a través de enlaces en el escritorio cliente. Mediante esta tecnología se asegura que una aplicación es distribuida siempre en su última versión. Los ficheros que contienen la información sobre donde se encuentra la aplicación, versión, etc. tienen la extensión .jnlp. Un ejemplo de esta tecnología es la de un servidor web donde se encuentra una página web con enlaces a aplicaciones Java. Cada uno de estos enlaces apuntará Página | 19 a ficheros .jnlp que indicarán la ruta de la aplicación en este u otro servidor. En ese momento arrancará automáticamente Java Web Start y comprobará la seguridad y si el usuario tiene la última versión instalada en su equipo; si no es así, la descargará y ejecutará. Actualmente Java Web Start viene incluido en el Java Runtime Environment (JRE). Sun Microsystems y Java Web Start son marcas registradas de Sun Microsystems, Inc. 2.3-Java Servlet Los servlets son objetos que corren dentro y fuera del contexto de un contenedor de servlets (ej: Tomcat) y extienden su funcionalidad. 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. Por contraposición. El uso más común de los servlets es generar todas páginas web de forma dinámica a partir de los parámetros de la petición que envíe el navegador web. Que es un Servlet? Un Servlet es un objeto java que pertenece a una clase que extiende javax.servlet.http.HttpServlet. Esto no es del todo exacto ya que existen diferentes tipos de Servlets pero con diferencia HttpServlet es el más usado. Que es un contenedor de Servlets? Un contenedor de Servlet es un programa capaz de recibir peticiones de páginas web y redireccionar estas peticiones a un objeto Servlet. Como funcionan un contenedor de Servlets? 1. El Browser pide una página al servidor HTTP que es un contenedor de Servlets 2. El contenedor de Servlets delega la petición a un Servlet en particular elegido de entre los Servlets que contiene. Página | 20 3. El Servlet, que es un objeto java, se encarga de generar el texto de la página web que se entrega al contenedor. 4. El contenedor devuelve la página web al Browser que la solicitó. 2.3.1-Ciclo de vida El ciclo de vida de un Servlet se divide en los siguientes puntos: 1. El cliente solicita una petición a un servidor vía URL. 2. El servidor recibe la petición. 3. Si es la primera, se utiliza el motor de Servlets para cargarlo y se llama al método init(). 4. Si ya está iniciado, cualquier petición se convierte en un nuevo hilo. Un Servlet puede manejar múltiples peticiones de clientes. 5. Se llama al método service() para procesar la petición devolviendo el resultado al cliente. 6. Cuando se apaga el motor de un Servlet se llama al método destroy(), que lo destruye y libera los recursos abiertos. 2.3.2-Clases y objetos necesarios Podemos crear un Servlet haciendo uso del paquete javax.servlet. 2.3.3-Ejemplo Código de ejemplo de un Servlet que procesa una petición GET y devuelve una página web HTML sencilla: package org.pruebas; import import import import import import java.io.IOException; java.io.PrintWriter; javax.servlet.ServletException; javax.servlet.http.HttpServlet; javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; public class HolaMundoServlet extends HttpServlet { /** * Servlet de ejemplo que procesa una petición GET * @param request Página | 21 * @param response * @throws ServletException * @throws IOException */ @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"); out.println("<html>"); out.println("<head><title>Ejemplo Hola Mundo</title></head>"); out.println("<body>"); out.println("<h1>¡Hola Mundo!</h1>"); out.println("</body></html>"); } } 2.4-JavaServer Pages La Web dinámica se ha desarrollado desde un sistema de información distribuido hipermedia (HTML) basado en red que ofrecía información estática hasta un conjunto de portales y aplicaciones en Internet que ofrecen un conjunto variado de servicios. Las soluciones de primera generación incluyeron CGI, que es un mecanismo para ejecutar programas externos en un servidor web. El problema con los scripts CGI es la escalabilidad; se crea un nuevo proceso para cada petición. Las soluciones de segunda generación incluyeron vendedores de servidores Web que proporcionaban plug-ins y APIs para sus servidores. El problema es que sus soluciones eran específicas a sus productos servidores. Microsoft proporcionó las páginas activas del servidor (ASP) que hicieron más fácil crear el contenido dinámico. Sin embargo, su solución sólo trabajaba con Microsoft IIS o Personal Web Server. Otra tecnología de segunda generación son los Servlets. Los Servlets hacen más fácil escribir aplicaciones del lado del servidor usando la tecnología Java. El problema con los CGI o los Servlets, sin embargo, es que tenemos que seguir el ciclo de vida de escribir, compilar y desplegar. Las páginas JSP son una solución de tercera generación que se pueden combinar fácilmente con algunas soluciones de la segunda generación, creando el contenido dinámico, y haciendo más fácil y más rápido construir las aplicaciones Página | 22 basadas en Web que trabajan con una variedad de otras tecnologías: servidores Web, navegadores Web, servidores de aplicación y otras herramientas de desarrollo. La tecnología Java Server Pages™ (JSP) nos permite poner segmentos de código servlet directamente dentro de una página HTML estática. Cuando el navegador carga una página JSP, se ejecuta el código del servlet y el servidor de aplicaciones crea, compila, carga y ejecuta un servlet en segundo plano para ejecutar los segmentos de código servlet y devolver una página HTML o imprimir un informe XML. 2.4.1-Arquitectura JSP puede considerarse como una manera alternativa, y simplificada, de construir servlets. Es por ello que una página JSP puede hacer todo lo que un servlet puede hacer, y viceversa. Cada versión de la especificación de JSP está fuertemente vinculada a una versión en particular de la especificación de 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. 2.4.2-Estructura de una página JSP Una página JSP es básicamente una página Web con HTML tradicional y código Java. La extensión de fichero de una página JSP es ".jsp" en vez de ".html" o".htm", y eso le dice al servidor que esta página requiere un manejo especial que se conseguirá con una extensión del servidor o un plug-in. 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> Página | 23 2.4.2.1-Directivas Las 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.*" %> 2.4.2.2-Declaraciones Las 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. El ámbito es toda la página JSP, no hay concepto de variables de ejemplar. Es decir, no tenemos que declarar variables de ejemplar para usar en más de una expresión o scriptlet. Las declaraciones van encerradas entre etiquetas de declaración <%! Y %>. Podemos tener varias declaraciones. Por ejemplo, <%! <%! <%! <%! <%! double bonus; String text; %> String strMult, socsec; %> Integer integerMult; %> int multiplier; %> double bonus; %> 2.4.2.3-Scriptlets Los 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 arriba. 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; %> Página | 24 2.4.2.4-Variables Predefinidas Un scriptlet puede usar las siguientes variables predefinidas: session, request, response, out, e in. Este ejemplo usa la variable predefinida request, que es un objeto HttpServletRequest. De igual forma, response es un objeto HttpServletResponse, out es un objeto PrintWriter, e in es un objeto BufferedReader. Las variables predefinidas se usan en los scriptlets de la misma forma que se usan en los servelts, excepto que no las declaramos. <% strMult = request.getParameter("MULTIPLIER"); socsec = request.getParameter("SOCSEC"); integerMult = new Integer(strMult); multiplier = integerMult.intValue(); bonus = 100.00; %> 2.4.2.5-Expresiones Las expresiones JSP nos permiten recuperar dinámicamente o calcular valores a insertar directamente en la página JSP. En este ejemplo, una expresión recupera el número de la seguridad social desde el bean de entidad Bonus y lo pone en la página JSP. <H1>Bonus Calculation</H1> Social security number retrieved: <%= record.getSocSec() %> <P> Bonus Amount retrieved: <%= record.getBonus() %> <P> 2.4.3-Procesamiento de la página JSP Cuando se llame a ésta página (date.jsp), será compilada (por el motor JSP) en un Servlet Java. En este momento el Servlet es manejado por el motor Servlet como cualquier otro Servlet. El motor Servlet carga la clase Servlet (usando un cargador de clases) y lo ejecuta para crear HTML dinámico para enviarlo al navegador, como se ve en la Figura 2. Para este ejemplo, el Servelt crea un objeto Date y lo escribe como un String en el objeto out, que es el stream de salida hacia el navegador. Página | 25 Conclusión Las tecnologías modernas y el avance en la programación orientada a objetos, aspectos y a servicios, o sea llámese, diferentes perspectivas de abordar el tema unido al creciente auge de Internet hace que las aplicaciones del presente y del futuro se orienten cada vez más a la web y al mundo de Internet, por varias razones: facilidad de uso, necesidad de pocas prestaciones de hardware y software para manipular tal aplicación y otras. Dentro de este mundo, las tecnologías de desarrollo y programación de software han evolucionado a paso rápido y Java, una herramienta de gran expansión mundial y que cuenta con una inmensa comunidad de desarrolladores no está exenta de proponer muchas variantes y alternativas válidas para realizar aplicaciones de este tipo. La curva de aprendizaje y sobre todo el ensamblaje de todas estas tecnologías resulta ser algo que requiere de manos expertas y conocedoras del tema pero una vez que se logran establecer los marcos de trabajo y las herramientas se configuran para su buen uso y trabajo, la programación con Java orientado a aplicaciones web resulta ser algo relativamente sencillo y práctico y se convierte en una herramienta de trabajo muy útil para el desarrollo de aplicaciones. Página | 26 Bibliografía http://es.wikipedia.org/wiki/Aplicación_web Sergio Luján Mora (2001) (en español, libro completo gratuito en pdf). Programación en Internet: Clientes Web (1ª edición). Editorial Club Universitario. Sergio Luján Mora (2002) (en español, libro completo gratuito en pdf). Programación de aplicaciones web: historia, principios básicos y clientes web (1ª edición). Editorial Club Universitario. http://es.wikipedia.org/wiki/Lenguaje_de_programación_Java Jon Byous, Java technology: The early years. Sun Developer Network, sin fecha[ca. 1998]. Recuperado 21 de abril de 2005. James Gosling, A brief history of the Green project. Java.net, sin fecha [ca. Q1/1998]. Recuperado 22 abril de 2005. James Gosling, Bill Joy, Guy Steele, y Gilad Bracha, The Java language specification, tercera edición. Addison-Wesley, 2005. ISBN 0-321-24678-0. Tim Lindholm y Frank Yellin. The Java Virtual Machine specification, segunda edición. Addison-Wesley, 1999. ISBN 0-201-43294-3. http://es.wikipedia.org/wiki/Applet_Java Deitel, Harvey, Paul & Asociados (2004). Como Programar en Java. México: PEARSON EDUCACION. 970-26-0518-0. http://www.java.com/es/download/faq/java_webstart.xml http://javaweb.osmosislatina.com/curso/servlets.htm#comp http://www.edu4java.com/servlet.html http://www.ligaturesoft.com/spanish/web-design/pagina-de-servidor-Java.html http://www.desarrolloweb.com/directorio/programacion/java/jsp/ Página | 27