Você está na página 1de 10

JavaServer Pages

JavaServer Pages (JSP) es una tecnologa que ayuda a los desarrolladores de


software a crear pginas web dinmicas basadas en HTML, XML, entre otros tipos
de documentos. JSP es similar a PHP, pero usa el lenguaje de programacin Java.
Para desplegar y correr JavaServer Pages, se requiere un servidor web
compatible con contenedores servlet como Apache Tomcat o Jetty.
El rendimiento de una pgina JSP es el mismo que tendra el servlet equivalente,
ya que el cdigo es compilado como cualquier otra clase Java. A su vez, la
mquina virtual compilar dinmicamente a cdigo de mquina las partes de la
aplicacin que lo requieran. Esto hace que JSP tenga un buen desempeo y sea
ms eficiente que otras tecnologas web que ejecutan el cdigo de una manera
puramente interpretada.
La principal ventaja de JSP frente a otros lenguajes es que el lenguaje Java es un
lenguaje de propsito general que excede el mundo web y que es apto para crear
clases que manejen lgica de negocio y acceso a datos de una manera prolija.
Esto permite separar en niveles las aplicaciones web, dejando la parte encargada
de generar el documento HTML en el archivo JSP.
Otra ventaja es que JSP hereda la portabilidad de Java, y es posible ejecutar las
aplicaciones en mltiples plataformas sin cambios. Es comn incluso que los
desarrolladores trabajen en una plataforma y que la aplicacin termine siendo
ejecutada en otra.
Los servlets y Java Server Pages (JSPs) son dos mtodos de creacin de pginas
web dinmicas en servidor usando el lenguaje Java. En ese sentido son similares
a otros mtodos o lenguajes tales como el PHP, ASP o los CGIs, programas que
generan pginas web en el servidor. Sin embargo, se diferencian de ellos en otras
cosas.
Para empezar, los JSPs y servlets se ejecutan en una mquina virtual Java, lo cual
permite que, en principio, se puedan usar en cualquier tipo de ordenador, siempre
que exista una mquina virtual Java para l. Cada servlet (o JSP, a partir de ahora
lo usaremos de forma indistinta) se ejecuta en su propio hilo, es decir, en su propio
contexto; pero no se comienza a ejecutar cada vez que recibe una peticin, sino
que persiste de una peticin a la siguiente, de forma que no se pierde tiempo en
invocarlo (cargar programa + intrprete). Su persistencia le permite tambin hacer
una serie de cosas de forma ms eficiente: conexin a bases de datos y manejo
de sesiones, por ejemplo.

Las JSPs son en realidad una forma alternativa de crear servlets ya que el cdigo
JSP se traduce a cdigo de servlet Java la primera vez que se le invoca y en
adelante es el cdigo del nuevo servlet el que se ejecuta produciendo como salida
el cdigo HTML que compone la pgina web de respuesta.

Introduccin a JSP
La tecnologa JSP (Java Server Pages) es una especificacin abierta desarrollada
por Sun Microsystems como un alternativa a Active Server Pages (ASP) de
Microsoft, y son un componente dominante de la especificacin de Java 2
Enterprise Edition (J2EE). Muchos de los servidores de aplicaciones
comercialmente disponibles (como BEA WebLogic, IBM WebSphere, Live JRun,
Orion, etctera) ya utilizan tecnologa JSP.
Esta tecnologa permite desarrollar pginas web con contenido dinmico y supone
una evolucin frente a la tecnologa CGI, y los Servlets. Un fichero JSP puede
contener etiquetas HTML normales, y elementos especiales para generar el
contenido dinmico.
Al mismo tiempo permite una separacin en n capas de la arquitectura de la
aplicacin web y se integra perfectamente con todas las API's empresariales de
Java: JDBC, RMI (y CORBA), JNDI, EJB, JMS, JTA, ...
Estructura de una pgina JSP
Una pgina JSP es bsicamente una pgina Web con HTML tradicional y cdigo
Java. La extensin de fichero de una pgina JSP es ".jsp" en vez de ".html"
o".htm", y eso le dice al servidor que esta pgina requiere un manejo especial que
se conseguir con una extensin 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>

Directivas
Las directivas JSP son instrucciones procesadas por el motor JSP cuando la
pgina 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 estn
encerradas entre etiquetas de directiva
<%@ y %>.
<%@ page import="javax.naming.*" %>
<%@ page import="javax.rmi.PortableRemoteObject" %>
<%@ page import="Beans.*" %>
Declaraciones
Las declaraciones JSP nos permiten configurar variables para su uso posterior en
expresiones o scriptlets. Tambin podemos declarar variables dentro de
expresiones o scriptlets en el momento de usarlas. El mbito es toda la pgina
JSP, no hay concepto de variables de ejemplar. Es decir, no tenemos que declarar
variables de ejemplar para usar en ms de una expresin o scriptlet. Las
declaraciones van encerradas entre etiquetas de declaracin
<%! y %>. Podemos tener varias declaraciones. Por ejemplo,
<%! double bonus; String text; %> .
<%! String strMult, socsec; %>
<%! Integer integerMult; %>
<%! int multiplier; %>
<%! double bonus; %>
Scriptlets
Los scriptlets JSP nos permiten embeber segmentos de cdigo java dentro de una
pgina JSP. El codigo embebido se inserta directamente en el servlet generado
que se ejecuta cuando se pide la pgina. 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;
%>

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;
%>
Expresiones
La expresiones JSP nos permiten recuperar dinmicamente o calcular valores a
insertar directamente en la pgina JSP. En este ejemplo, una expresin recupera
el nmero de la seguridad social desde el bean de entidad Bonus y lo pone en la
pgina JSP.
<H1>Bonus Calculation</H1>
Social security number retrieved:
<%= record.getSocSec() %>
<P>
Bonus Amount retrieved: <%= record.getBonus() %>
<P>
Etiquetas especficas de JSP
La especificacin JavaServer Pages 1.1 define etiquetas especficas de JSP que
nos permiten extender la implementacin JSP con nuevas caractersticas y ocultar
mucha complejidad a los diseadores visuales que necesitan buscar la pgina
JSP y modificarla

Procesamiento de la pgina JSP


Cuando se llame a sta pgina (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 dinmico 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.

Objetos implcitos
El motor JSP nos ofrece instancias de un conjunto de clases. Son objetos ya
establecidos, que no tenemos ms que usar (no hay que instanciarlos). Deben
utilizarse dentro del cdigo Java. Algunos objetos implcitos:
page (javax.servlet.jsp.HttpJspPage.): Instancia del servlet de la pgina. Esto es
slo un sinnimo de this, y no es muy til en Java. Fue creado como situacin
para el da que el los lenguajes de script puedan incluir otros lenguajes distintos de
Java.
config (javax.servlet.ServletConfig): Datos de configuracin del servlet.
request (javax.servlet.http.HttpServletRequest): Datos de la peticin,
incluyendo los parmetros. Este es el HttpServletRequest asociado con la peticin,
y nos permite mirar los parmetros de la peticin (mediante getParameter), el tipo
de peticin (GET, POST, HEAD, etc.), y las cabeceras HTTP entrantes (cookies,
Referer, etc.). Estrictamente hablando, se permite que la peticin sea una
subclase de ServletRequest distinta de HttpServletRequest, si el protocolo de la
peticin es distinto del HTTP. Esto casi nunca se lleva a la prctica.

response (javax.servlet.http.HttpServletResponse): Datos de la respuesta.


Este es el HttpServletResponse asociado con la respuesta al cliente. Como el
stream de salida tiene un buffer, es legal seleccionar los cdigos de estado y
cabeceras de respuesta, aunque no est permitido en los servlets normales una
vez que la salida ha sido enviada al cliente.
out (javax.servlet.jsp.JspWriter): Flujo de salida para el contenido de la pgina.
Este es el PrintWriter usado para enviar la salida al cliente. Sin embargo, para
poder hacer til el objeto response esta es una versin con buffer de PrintWriter
llamada JspWriter. Podemos ajustar el tamao del buffer, o incluso desactivar el
buffer, usando el atributo buffer de la directiva page. Se usa casi exclusivamente
en scriptlets ya que las expresiones JSP obtienen un lugar en el stream de salida,
y por eso raramente se refieren explcitamente a out.
session (javax.servlet.http.HttpSession): Datos especficos de la sesin de un
usuario. Este es el objeto HttpSession asociado con la peticin. Las sesiones se
crean automticamente, por esto esta variable se une incluso si no hubiera una
sesin de referencia entrante. La nica excepcin es usar el atributo session de la
directiva page para desactivar las sesiones, en cuyo caso los intentos de
referenciar la variable session causarn un error en el momento de traducir la
pgina JSP a un servlet.
application (javax.servlet.ServletContext): Datos compartidos por todas las
pginas de una aplicacin. El ServletContext obtenido mediante
getServletConfig().getContext().
pageContext (javax.servlet.jsp.PageContext): Datos de contexto para la
ejecucin de la pgina. JSP presenta una nueva clase llamada PageContext para
encapsular caractersticas de uso especficas del servidor como JspWriters de alto
rendimiento. La idea es que, si tenemos acceso a ellas a travs de esta clase en
vez directamente, nuestro cdigo seguir funcionando en motores servlet/JSP
"normales".
exception (java.lang.Throwable): Errores o excepciones no capturadas.

Ventajas

Frente a ASP JSP y ASP ofrecen funciones similares. Ambos utilizan


etiquetas para permitir cdigo embebido en una pgina HTML, ofreciendo
seguimiento de sesin, y conexin a bases de datos. Algunas de las
diferencias triviales son: Las pginas ASP estn escritas en VBScript y las
pginas JSP estn escritas en lenguaje Java. Por lo tanto, las pginas JSP
son independientes de la plataforma y las pginas ASP no lo son. Las
pginas JSP usan tecnologa JavaBeans como arquitectura de
componentes y las pginas ASP usan componentes ActiveX. Aunque las
pginas ASP siempre son interpretadas, las pginas JSP son compiladas
en Servlets Java y cargadas en memoria la primera vez que se las llama, y
son ejecutadas para todas las llamadas siguientes. Esto le da a las pginas
JSP la ventaja de la velocidad y escalabilidad sobre las pginas ASP.
Frente a Servlets JSP no nos ofrece nada que no pudiermos realizar con
un servlets. Pero es mucho ms conveniente escribir y modificar cdigo
HTML, que tener que realizar gran cantidad de sentencias println que
generen HTML. Adems, separando el formato del contenido podemos
poner diferentes personas en diferentes tareas: nuestros expertos en
diseo de pginas Web pueden construir el HTML, dejando espacio para
que nuestros programadores de servlets inserten el contenido dinmico.
Frente a SSI SSI es una tecnologa mpliamente soportada que incluye
piezas definidas externamente dentro de una pgina Web esttica. JSP es
superior porque nos permite usar servlets en vez de un programa separado
para generar las partes dinmicas. Adems, SSI realmente est diseado
para aplicaciones sencillas, no para aplicaciones que usen formularios de
datos, hagan conexiones a bases de datos, etc.
Frente a JavaScript JavaScript puede generar HTML dinmicamente en el
cliente. Esto es una capacidad til, pero slo maneja situaciones donde la
informacin dinmica est basada en el entorno del cliente. Con la
excepcin de las cookies, el HTTP y el envio de formularios no estn
disponibles con JavaScript. Y, como se ejecuta en el cliente, JavaScript no
puede acceder a los recursos en el lado del servidor, como bases de datos,
catlogos, informacin de precios, etc.

La Ejecucin de Pginas JSP sigue una serie de pasos y conversiones,


pudindose resumir en lo siguiente:

Cuando un Servidor Web recibe una peticin de una pgina JSP, ste
lanza el motor JSP, que se ejecuta en el mismo proceso que ese servidor
web.

El motor JSP comprueba si la pgina es nueva o ha cambiado, en cuyo


caso realiza el "proceso de conversin" de la pgina JSP a un servlet de
Java. Este servlet se compila mediante el compilador Java estndar y
ejecuta el API de Java.

El proceso de conversin es el que ralentiza la ejecucin de las pginas


JSP, sin embargo, una vez que la pgina JSP se ha convertido a servlet y
se ha compilado, su ejecucin es tan rpida como si su origen hubiese sido
cualquier otro servlet. La pgina JSP se convierte en un Servlet. Una
pgina JSP es procesada a un archivo .java, que luego es compilado para
generar un archivo .class. Esta es la innovacin que proporciona la
tecnologa JSP y la que le diferencia de otras semejantes.

Todo el tratamiento de la peticin HTTP que se hace en el servidor web hasta que
se devuelve la respuesta al cliente se resume en 4 pasos:
1.

El motor JSP analiza la pgina solicitada y crea un fichero .java


correspondiente al servlet.

2.

El servlet generado se compila para obtener el archivo .class,


que pasa al control del motor servlet, que lo ejecuta del mismo
modo que si se tratase de cualquier otro servlet.

3.

El motor servlet carga la clase del servlet generado para


ejecutarlo.

4.

El servlet se ejecuta y devuelve su respuesta al solicitante.

El anlisis de la pgina y la conversin a servlet slo se realiza una vez, la


primera vez que se solicita la pgina o cuando se modifica.

La carga de la clase en el motor servlet tambin ocurre una sla vez desde
la ltima vez que se haya arrancado el motor servlet.

Despus de esto, el servlet ya est disponible durante toda la vida de la


maquina virtual Java.

Conclusin

JavaServer Pages (JSP) es una tecnologa que ayuda a los desarrolladores de


software a crear pginas web dinmicas basadas en HTML, XML, es similar a
PHP, pero usa el lenguaje de programacin Java. Para desplegar y correr
JavaServer Pages, se requiere un servidor web compatible con contenedores
servlet como Apache Tomcat o Jetty. Esta tecnologa permite desarrollar pginas
web con contenido dinmico y supone una evolucin frente a la tecnologa CGI, y
los Servlets. Se ejecutan en una mquina virtual Java, lo cual permite que, en
principio, se puedan usar en cualquier tipo de ordenador, siempre que exista una
mquina virtual Java para l. La principal ventaja de JSP frente a otros lenguajes
es que el lenguaje Java es un lenguaje de propsito general que excede el mundo
web y que es apto para crear clases que manejen lgica de negocio y acceso a
datos de una manera prolija

Bibliografas

http://es.wikipedia.org/wiki/JavaServer_Pages
https://sites.google.com/site/conceptoprogramacion/Home/jsp
http://www.inf-cr.uclm.es/www/mpolo/asig/0708/tutorJavaWeb.pdf

Você também pode gostar