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