Universidad Nacional de CanindeyuFacultad 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 hoy puedo ver alcanzada mi meta. porque en gran parte gracias a ustedes. y porque el orgullo que sienten por mí.Dedicatoria A mis padres. porque creyeron en mí y porque me sacaron adelante. ya que siempre estuvieron impulsándome en los momentos más difíciles de mi carrera. dándome ejemplos dignos de superación y entrega. fue lo que me hizo ir hasta el final. Página | 3 . Página | 4 . llámese Mozzilla. ¿acaso no es lo mismo?. ¿no?. Amazon. Chrome. los blogs. sin necesidad de instalarlas previamente en nuestra pc. ha realizado una búsqueda en Google o ha realizado una transacción bancaria vía internet?. Mercado Libre. Facebook. ¿Quién no ha comprado en Amazon. Twitter?. para que tengan una idea. En términos prácticos. Internet Explorer. Bueno. que son lenguajes que los navegadores web interpretan para mostrarnos la información en pantalla. consultar bases de datos. Php. ha dejado un comentario en un blog. Twitter. Casi nadie. y además del lenguaje HTML base. desde cualquier lugar del mundo. la respuesta es: NO. ha entrado a la intranet de su empresa. si es así. 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. mientras que las aplicaciones web trabajan de una manera dinámica. Las páginas web muestran información estática y son creadas empleando lenguajes de programación como el HTML o el XHTML. Facebook.Fundamentación ¿Quién no ha utilizado el Hotmail. tanto el Hotmail. ha vendido un producto en Mercado Libre. solamente necesitamos contar con un navegador web. pues nos permiten interactuar con la información. contienen una lógica compleja que no vemos. etc.. Es por ello que son llamadas aplicaciones web. realizar transacciones.. por el contrario. Quizás les sobrevenga la duda de cuál es la diferencia entre una página y una aplicación web.Net. ASP. necesitan de otras tecnologías de programación como Java. etc. etc. las intranets e incluso Google no son páginas web. 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 . 6 Introducción……………………………………………………………………………….….1..1..5 Objetivos Específicos…………………………………………………………...….5 Índice……………………………………………………………………………………..3-Crear un applet………………………………………………………….5-Etiqueta <applet>……………………………………………………….1.2-Estructura de las aplicaciones web…………………………………………9 1.1.……11 1..4 Objetivos……………………………………………………………………………………5 Objetivo General…………………………………………………………………....2-Desventajas…………………………………………………………...11 2-Java (lenguaje de programación)……………………………………….….1-Applet Java……………………………………………………………..1-Interfaz……………………………………………………………………..….1-Ventajas…………………………………………………………………….1.5-Lenguajes de programación………………………………………………..12 2.…13 2.8 1-Aplicación Web…………………………………………………………………………...4-Inconvenientes………………………………………………………….12 2...15 2.3 Fundamentación………………………………………………………………………….….16 Página | 6 .9 1.9 1.4-Ejecución……………………………………………………………….…2 Dedicatoria……………………………………………………………………………….……12 2.Índice Contenido Página Portada…………………………………………………………………………………….……13 2..3-Ventajas……………………………………………………………………...10 1.1 Agradecimiento…………………………………………………………………………. ....3-Ejemplo……………………………………………………………………...2...25 2......4......4......……17 2..…24 2.8-Ejemplo Gráfico de una Ventana Applet de Java:……………….......1.………20 Que es un Servlet?..4-JavaServer Pages………………………………………………………………….......3.………25 Conclusión………………………………………………………………………......2........…………25 2.4...21 2......……18 2...21 2.20 Como funcionan un contenedor de Servlets?..22 2........1...1.....23 2....6-Etiqueta <object>……………………………………………………............4........1-Arquitectura………………………………………………………………..20 2.............20 Que es un contenedor de Servlets?.........4.....……19 2.4.......2-Java Web Start…………………………………………………………………….2-Clases y objetos necesarios……………………………………………......1-Directivas………………………………………………………….......……27 Página | 7 .2......19 2.7-Ciclo de vida…………………………………………………………......1-Ciclo de vida…………………………………………………………..3-Scriptlets…………………………………………………………….3-Procesamiento de la página JSP……………………………….3.4..……23 2.................3....2-Estructura de una página JSP……………………………………......4-Variables Predefinidas………………………………………………....2..……24 2.....4.........2.3-Java Servlet…………………………………………………………………......……26 Bibliografía…………………………………………………………………………...............5-Expresiones………………………………………………….........……21 2...2-Declaraciones……………………………………………………………24 2...2. el servidor web lanzaba un proceso que ejecutaba el programa CGI. De ellas. reduciendo así el tiempo de respuesta. Además. nos proporcionan total libertad a la hora de escoger el lenguaje de programación para desarrollarlos. etc.Introducción Inicialmente la web era simplemente una colección de páginas estáticas. si la web tenía muchos accesos al CGI. Java. PHP. Por ello se empiezan a desarrollar alternativas a los CGI para solucionar este grave problema de rendimiento.) o en algún lenguaje que requería runtime environment (VisualBasic. etc.). VBScript. Página | 8 . se vive una explosión del número de arquitecturas y lenguajes de programación que nos permiten desarrollar aplicaciones web. El esquema de funcionamiento de los CGI tenía un punto débil: cada vez que recibíamos una petición. Como. Python.. Las soluciones vienen principalmente por dos vías. etc. es decir. etc. la mayoría de CGI estaban escritos en algún lenguaje interpretado (Perl. Por un lado se diseñan sistemas de ejecución de módulos más integrados con el servidor. 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. que evitan que éste tenga que instanciar y ejecutar multitud de programas. 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).) que nos permita incluir las páginas en el código de manera que el servidor sea quien lo ejecute. Además. esto suponía problemas graves. A partir de este momento. documentos. 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. La otra vía consiste en dotar al servidor de un intérprete de algún lenguaje de programación (RXML. esto implicaba una gran carga para la máquina del servidor. que podían consultarse o descargarse. por otro lado. puesto que la mayoría de los servidores web los soportan debido a su sencillez. las más útiles y las que más se utilizan son aquellas que permiten mezclar los dos sistemas. Todas ellas siguen alguna de las dos vías ya mencionadas. Los CGI siguen siendo muy utilizados. Esto permite que el usuario acceda a los datos de modo interactivo. el navegador web ofrece la primera capa.2-Estructura de las aplicaciones web Aunque existen muchas variaciones posibles. Recientemente se han desarrollado tecnologías para coordinar estos lenguajes con las tecnologías en el lado del servidor. 1. weblogs. 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. gracias a que la página responderá a cada una de sus acciones. especialmente para ofrecer una experiencia interactiva que no requiera recargar la página cada vez (lo que suele resultar molesto a los usuarios). En su forma más común.1-Interfaz Las interfaces web tienen ciertas limitaciones en las funcionalidades que se ofrecen al usuario. Las aplicaciones web son populares debido a lo práctico del navegador web como cliente ligero. 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. una aplicación web está normalmente estructurada como una aplicación de tres-capas. y un motor capaz de usar alguna Página | 9 . tiendas en línea que son ejemplos bien conocidos de aplicaciones web. En otras palabras. 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. como por ejemplo rellenar y enviar formularios. Los desarrolladores web generalmente utilizan lenguajes interpretados (scripts) en el lado del cliente para añadir más funcionalidades. Existen aplicaciones como los webmails. 1. wikis. participar en juegos diversos y acceder a gestores de base de datos de todo tipo. Es importante mencionar que una página Web puede contener elementos que permiten una comunicación activa entre el usuario y la información.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. Actualizaciones inmediatas: Como el software lo gestiona el propio desarrollador. . . . 1. una base de datos constituye la tercera y última capa.Ahorra tiempo: Se pueden realizar tareas sencillas sin necesidad de descargar ni instalar ningún programa.3-Ventajas .No hay problemas de compatibilidad: Basta tener un navegador actualizado para poder utilizarlas. muchas de las tareas que realiza el software no consumen recursos nuestros porque se realizan desde otro ordenador. Página | 10 . 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. .tecnología web dinámica que constituye la capa intermedia.No ocupan espacio en nuestro disco duro. 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. Por último. Los virus no dañan los datos porque éstos están guardados en el servidor de la aplicación. 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. . entre los que destacan: PHP Java.Los navegadores ofrecen cada vez más y mejores funcionalidades para crear aplicaciones web ricas (RIAs).4-Inconvenientes . por ejemplo. con sus tecnologías Java Servlets y JavaServer Pages (JSP) Javascript Perl Ruby Python Página | 11 . el proveedor de la conexión a internet o el que provee el enlace entre el servidor de la aplicación y el cliente..La disponibilidad depende de un tercero.5-Lenguajes de programación Existen numerosos lenguajes de programación empleados para el desarrollo de aplicaciones web en el servidor. . Tiene mucho sentido.. un portátil. . 1.. Así que la disponibilidad del servicio está supeditada al proveedor. en aplicaciones online de calendarios u oficina. 1.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.Portables: Es independiente del ordenador donde se utilice (un PC de sobremesa.Multiplataforma: Se pueden usar desde cualquier sistema operativo porque sólo es necesario tener un navegador. .) porque se accede a través de una página web (sólo es necesario disponer de acceso a Internet). un applet es un programa que puede incrustarse en un documento HTML.2-Java (lenguaje de programacion) Java es un lenguaje de programación de alto nivel orientado a objetos. desarrollado por James Gosling en 1995.1-Applet Java Un applet Java es un applet escrito en el lenguaje de programación Java. que suelen inducir a muchos errores.1-Ventajas Los applets de Java suelen tener las siguientes ventajas: Son multiplataforma (funcionan en Linux. Windows. Los applets de Java pueden ejecutarse en un navegador web utilizando la Java Virtual Machine (JVM). Cobol y Visual Basic. La memoria es gestionada mediante un recolector de basura. 2. este se descarga en el navegador web y comienza a ejecutarse. es decir en una página web. o en el AppletViewer de Sun. Cuando un navegador carga una página web que contiene un applet. En Java. pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel.1. 2. como la manipulación directa de punteros o memoria. Página | 12 . Mac OS. El lenguaje en sí mismo toma mucha de su sintaxis de C. y en cualquier sistema operativo para el cual exista una Java Virtual Machine). Esto permite crear programas que cualquier usuario puede ejecutar con tan solo cargar la página web en su navegador. Página | 13 . Puede ejecutarse a velocidades comparables a la de otros lenguajes compilados. Si no está firmado como confiable. y no sólo la última versión del plugin. 2. si el usuario lo permite. 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. como C++ (dependiendo de la version de la JVM).*. El mismo applet puede trabajar en "todas" las versiones de Java. No puede iniciar la ejecución hasta que la JVM esté en funcionamiento. aunque puede quedar atascado en la caché. si un applet requiere una versión posterior del Java Runtime Environment (JRE). tiene un acceso limitado al sistema del usuario . Puede ser almacenado en la memoria caché de la mayoría de los navegadores web. causando problemas cuando se publican nuevas versiones. y esto puede tomar tiempo la primera vez que se ejecuta un applet.1.en particular no tiene acceso directo al disco duro del cliente o al portapapeles.3-Crear un applet Para crear un applet necesitamos escribir una clave de la clase Applet del paquete java. Algunas organizaciones sólo permiten la instalación de software a los administradores. Como resultado. de modo que se cargará rápidamente cuando se vuelva a cargar la página web. Sin embargo. Un applet podría exigir una versión específica del JRE. 2. que no está disponible por defecto en todos los navegadores web.2-Desventajas Los applets de Java suelen tener las siguientes desventajas: Requiere el plugin de Java. Puede tener acceso completo a la máquina en la que se está ejecutando. muchos usuarios (sin privilegios para instalar el plugin en su navegador) no pueden ver los applets. el cliente se verá obligado a esperar durante la descarga de la nueva JRE. Es compatible con la mayoría de los navegadores web.1.applet. Font. private String horaActual = "00:00:00". Date hora = cal.class.text. El resultado es un fichero MiApplet.DateFormat. escribimos el resto del código y después lo compilamos. } public void start() { if (hilo == null) { hilo = new Thread(this. "Reloj"). import java.*.*. obteniendo el fichero MiApplet. import java.awt.applet. hilo. public class MiApplet extends Applet { //Cuerpo del ''applet''.applet. import java.*.*. Para poder crear el applet se necesita compilar el código Java en un intérprete. } El código anterior declara una nueva clase MiApplet que hereda todas las capacidades de la clase Applet de Java.import java. private Font fuente.BOLD.util.start().currentThread(). public void init() { fuente = new Font("Verdana".getTime(). import java.java. while (hilo == hiloActual) { //obtener la hora actual Calendar cal = Calendar. } } public void run() { Thread hiloActual = Thread. Una vez creada la clase que compone el applet.getInstance(). public class MiApplet extends Applet implements Runnable { private Thread hilo = null. 24). Página | 14 . } catch (InterruptedException e){} } } public void paint(Graphics g) { //Dibujar un rectángulo alrededor del contenedor g.setFont(fuente).drawString(horaActual. //mostrar la Hora g. try { Thread.width-3.getTimeInstance(). horaActual = df. repaint().*. } 2.1.DateFormat df = DateFormat. public class MiApplet extends JApplet { //Cuerpo del ''applet''. getSize(). } } Si se utiliza la biblioteca gráfica Swing.swing en vez de Applet: import javax.format(hora).swing.14.height-3.40). 1. false).4-Ejecución Para insertar el applet en una página web.draw3DRect(1. getSize().sleep(1000). se usa la siguiente estructura: <etiqueta parametro = "valor"></etiqueta> Página | 15 . } public void stop() { hilo = null. //Establecer la Fuente g. se puede utilizar la clase JApplet de javax. 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. es la misma carpeta donde está la página HTML que carga el applet.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. Si agina. Si no se ha s" especificado codebase. será la ubicación actual de la página HTML. width=100 Height Tamaño en píxels de la altura.5-Etiqueta <applet> Siguiendo la estructura anterior. La dirección donde se encuentra es relativa code="NombreClase. Width Tamaño en píxels de la anchura. un ejemplo de código para ejecutar el applet sería: <applet code="MiApplet. Name Establece un nombré único para el applet.2. Code Nombre de la clase que se quiere cargar en el applet.clas al codebase.p cargar el applet.1.com/applet/" no se especifica. el URL de la clase. name="MiApplet" Página | 16 . 6-Etiqueta <object> A partir de la versión 4. siendo sustituida por <object>. Comparte muchos de los atributos con <applet>. rigth.1. Netscape 6 (y versiones superiores) y Mozilla Firefox.class. center.class" Hspace Establece los márgenes laterales en hspace=25 píxels. que son leídos por el programa Java. archive="Clase1. vspace=25 Align Alineación respecto a otros elementos. Vspace Establece el margen superior e inferior en píxels. 2.0 de HTML se consideró obsoleto el uso de la etiqueta <applet>. Si aparece se aplica. top.Archive Es un listado de clases separados por comas que deben ser cargados en la caché del usuario local antes de poder ejecutarse. Dentro de la etiqueta <applet> puede aparecer la etiqueta <param> que contiene pares clave/valor. tantas veces como se quiera. align="center" Valores: left. Clase2.class. siendo los únicos para esta etiqueta: Página | 17 . Esta etiqueta es compatible con los navegadores Microsoft Internet Explorer. midd le y botton Mayscript Permite especificar si el applet puede tener acceso al código JavaScript No tiene valor asociado. Clase3. cab en la red Codebase del plugin necesario para poder ejecutar el contenido. Se llama cuando el applet se vuelve temporalmente invisible. Para terminar o pausar la ejecución se llama a los siguientes métodos: stop: suspende la ejecución del programa. Se ejecuta cada vez que se tenga que redibujar. pero con la diferencia de que este método también se llama cuando se reinicia un applet. start: como init.7-Ciclo de vida Cuando un applet se inicia.5. Se usa para liberar recursos.0"> 2. 2. Página | 18 . 3. <param name="type" value="application/xjava-applet. Para Java es: classid="clsid:CAFEEFAC -0014-0001-0000ABCDEFFEDCBA" URL que apunta a un fichero .Atributo Descripción Ejemplo Classid Identificador del tipo de objeto. se llaman en este orden a los siguientes métodos: 1.1. paint: se encarga de mostrar el contenido del applet. init: suele contener instrucciones para inicializar el applet. codebase="Dirección_del_i nstalador_de_la_Máquina_V irtual_Java" Type Tipo de archivo que va a reproducirse mediante el objeto.jpiversion=1. se suele usar para inicializar. destroy: cuando no se va a necesitar más el applet. 8-Ejemplo Gráfico de una Ventana Applet de Java: 2. 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. versión.jnlp. 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.1. tienen la extensión .2. etc. Cada uno de estos enlaces apuntará Página | 19 . Si no es así descargará la última versión y se ejecutará en local. Un ejemplo de esta tecnología es la de un servidor web donde se encuentra una página web con enlaces a aplicaciones Java. Los ficheros que contienen la información sobre donde se encuentra la aplicación.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. servlet. El contenedor de Servlets delega la petición a un Servlet en particular elegido de entre los Servlets que contiene. Sun Microsystems y Java Web Start son marcas registradas de Sun Microsystems.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. Por contraposición. 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. El Browser pide una página al servidor HTTP que es un contenedor de Servlets 2. Como funcionan un contenedor de Servlets? 1.a ficheros .jnlp que indicarán la ruta de la aplicación en este u otro servidor. Actualmente Java Web Start viene incluido en el Java Runtime Environment (JRE).HttpServlet. 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. La palabra servlet deriva de otra anterior. 2. Inc. que se refería a pequeños programas que se ejecutan en el contexto de un navegador web. Que es un Servlet? Un Servlet es un objeto java que pertenece a una clase que extiende javax. la descargará y ejecutará. applet. 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. si no es así. Página | 20 .http. Esto no es del todo exacto ya que existen diferentes tipos de Servlets pero con diferencia HttpServlet es el más usado. http. cualquier petición se convierte en un nuevo hilo. El Servlet.http. Se llama al método service() para procesar la petición devolviendo el resultado al cliente. se encarga de generar el texto de la página web que se entrega al contenedor. 5.pruebas. javax.HttpServletResponse.servlet.PrintWriter.servlet. 2. 6. public class HolaMundoServlet extends HttpServlet { /** * Servlet de ejemplo que procesa una petición GET * @param request Página | 21 . java.2-Clases y objetos necesarios Podemos crear un Servlet haciendo uso del paquete javax.io. Si ya está iniciado.io.IOException. 2. Si es la primera.3.3. javax.3.http.1-Ciclo de vida El ciclo de vida de un Servlet se divide en los siguientes puntos: 1. que lo destruye y libera los recursos abiertos. 4. javax.servlet. import import import import import import java. 2. El cliente solicita una petición a un servidor vía URL.servlet. El contenedor devuelve la página web al Browser que la solicitó. 3.3.servlet. Un Servlet puede manejar múltiples peticiones de clientes. 4. Cuando se apaga el motor de un Servlet se llama al método destroy().ServletException. se utiliza el motor de Servlets para cargarlo y se llama al método init(). 2. que es un objeto java.HttpServletRequest.HttpServlet. javax.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. El servidor recibe la petición. Las soluciones de primera generación incluyeron CGI. Los Servlets hacen más fácil escribir aplicaciones del lado del servidor usando la tecnología Java. se crea un nuevo proceso para cada petición. Microsoft proporcionó las páginas activas del servidor (ASP) que hicieron más fácil crear el contenido dinámico. out. out.println("</body></html>").getWriter(). sin embargo. compilar y desplegar. El problema con los CGI o los Servlets.println("<body>"). out.println("<h1>¡Hola Mundo!</h1>"). creando el contenido dinámico. que es un mecanismo para ejecutar programas externos en un servidor web.0 Transitional//EN\">").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. } } 2. y haciendo más fácil y más rápido construir las aplicaciones Página | 22 . out.println("<head><title>Ejemplo Hola Mundo</title></head>"). Las soluciones de segunda generación incluyeron vendedores de servidores Web que proporcionaban plug-ins y APIs para sus servidores.* @param response * @throws ServletException * @throws IOException */ @Override public void doGet(HttpServletRequest request. El problema es que sus soluciones eran específicas a sus productos servidores. es que tenemos que seguir el ciclo de vida de escribir. HttpServletResponse response) throws ServletException. El problema con los scripts CGI es la escalabilidad. out. IOException { PrintWriter out = response. su solución sólo trabajaba con Microsoft IIS o Personal Web Server. out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4. Sin embargo.println("<html>"). 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. Otra tecnología de segunda generación son los Servlets. mundo!!</title> </head> <body> <h1>Hola. Un ejemplo sencillo: <%@ page language="java" contentType="text/html" %> <html> <head> <title>Hola. </body> </html> Página | 23 .Date() %>. Cada versión de la especificación de JSP está fuertemente vinculada a una versión en particular de la especificación de servlets.htm". navegadores Web. Es por ello que una página JSP puede hacer todo lo que un servlet puede hacer. 2. 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. 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. y viceversa. La tecnología Java Server Pages™ (JSP) nos permite poner segmentos de código servlet directamente dentro de una página HTML estática.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. servidores de aplicación y otras herramientas de desarrollo. La extensión de fichero de una página JSP es ". de construir servlets. 2. mundo!</h1> Hoy es <%= new java. Este servlet será el que genere el documento (típicamente HTML) que se presentará en la pantalla del Navegador del usuario. Cuando el navegador carga una página JSP.html" o". y simplificada.4.jsp" en vez de ".util. se ejecuta el código del servlet y el servidor de aplicaciones crea.4.1-Arquitectura JSP puede considerarse como una manera alternativa. 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. compila.basadas en Web que trabajan con una variedad de otras tecnologías: servidores Web. socsec. no tenemos que declarar variables de ejemplar para usar en más de una expresión o scriptlet.4. <% strMult = request. Este scriptlet usa las variables declaradas en las directivas descritas arriba. %> 2. Las directivas están encerradas entre etiquetas de directiva <%@ y %>.2. Las directivas usadas en este ejemplo le dicen al motor JSP que incluya ciertos paquetes y clases. Las declaraciones van encerradas entre etiquetas de declaración <%! Y %>. socsec = request. no hay concepto de variables de ejemplar. También podemos declarar variables dentro de expresiones o scriptlets en el momento de usarlas. Es decir. <%@ page import="javax. El código embebido se inserta directamente en el servlet generado que se ejecuta cuando se pide la página. %> int multiplier.1-Directivas Las directivas JSP son instrucciones procesadas por el motor JSP cuando la página JSP se traduce a un servlet. String text. El ámbito es toda la página JSP. Podemos tener varias declaraciones.3-Scriptlets Los scriptlets JSP nos permiten embeber segmentos de código java dentro de una página JSP.00.*" %> 2. %> Integer integerMult. %> double bonus.rmi.2.PortableRemoteObject" %> <%@ page import="Beans. Los Scriptlets van encerradas entre etiquetas <% y %>.4.naming. bonus = 100. %> String strMult.getParameter("MULTIPLIER").2.intValue(). integerMult = new Integer(strMult).2. %> Página | 24 . Por ejemplo. multiplier = integerMult.4. <%! <%! <%! <%! <%! double bonus.getParameter("SOCSEC").2-Declaraciones Las declaraciones JSP nos permiten configurar variables para su uso posterior en expresiones o scriptlets.*" %> <%@ page import="javax. Para este ejemplo.getSocSec() %> <P> Bonus Amount retrieved: <%= record. Página | 25 . En este ejemplo. %> 2. De igual forma. será compilada (por el motor JSP) en un Servlet Java. 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. response. El motor Servlet carga la clase Servlet (usando un cargador de clases) y lo ejecuta para crear HTML dinámico para enviarlo al navegador. request. que es un objeto HttpServletRequest.jsp). En este momento el Servlet es manejado por el motor Servlet como cualquier otro Servlet. que es el stream de salida hacia el navegador. Las variables predefinidas se usan en los scriptlets de la misma forma que se usan en los servelts.4.5-Expresiones Las expresiones JSP nos permiten recuperar dinámicamente o calcular valores a insertar directamente en la página JSP. como se ve en la Figura 2. out es un objeto PrintWriter. e in. el Servelt crea un objeto Date y lo escribe como un String en el objeto out.2. excepto que no las declaramos. <H1>Bonus Calculation</H1> Social security number retrieved: <%= record.00. socsec = request.4.getParameter("MULTIPLIER"). e in es un objeto BufferedReader. <% strMult = request.4. multiplier = integerMult. out. bonus = 100.2.getBonus() %> <P> 2. Este ejemplo usa la variable predefinida request. integerMult = new Integer(strMult).4-Variables Predefinidas Un scriptlet puede usar las siguientes variables predefinidas: session.2. response es un objeto HttpServletResponse.getParameter("SOCSEC").intValue().3-Procesamiento de la página JSP Cuando se llame a ésta página (date. Dentro de este mundo. 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. necesidad de pocas prestaciones de hardware y software para manipular tal aplicación y otras. 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. aspectos y a servicios. 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. las tecnologías de desarrollo y programación de software han evolucionado a paso rápido y Java. o sea llámese. Página | 26 . 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. por varias razones: facilidad de uso.Conclusión Las tecnologías modernas y el avance en la programación orientada a objetos. Editorial Club Universitario. libro completo gratuito en pdf). Tim Lindholm y Frank Yellin. México: PEARSON EDUCACION. tercera edición. The Java Virtual Machine specification.java. Editorial Club Universitario. Sergio Luján Mora (2002) (en español. James Gosling.html http://www.com/directorio/programacion/java/jsp/ Página | 27 . segunda edición.Bibliografía http://es.org/wiki/Lenguaje_de_programación_Java Jon Byous. Paul & Asociados (2004). Addison-Wesley.ligaturesoft.com/es/download/faq/java_webstart. Como Programar en Java.osmosislatina. sin fecha[ca. principios básicos y clientes web (1ª edición). A brief history of the Green project. Programación en Internet: Clientes Web (1ª edición).wikipedia. Java. http://www.wikipedia.org/wiki/Aplicación_web Sergio Luján Mora (2001) (en español. Harvey. ISBN 0-321-24678-0. http://es.htm#comp http://www. 970-26-0518-0.net.desarrolloweb. The Java language specification. Bill Joy.xml http://javaweb. Recuperado 22 abril de 2005. 2005. Recuperado 21 de abril de 2005. Programación de aplicaciones web: historia. Q1/1998]. 1999. y Gilad Bracha. ISBN 0-201-43294-3. libro completo gratuito en pdf). James Gosling. 1998].com/curso/servlets.wikipedia.html http://www. Sun Developer Network.org/wiki/Applet_Java Deitel.edu4java. http://es.com/spanish/web-design/pagina-de-servidor-Java.com/servlet. Java technology: The early years. sin fecha [ca. Guy Steele. Addison-Wesley.