jsp

Upload: smartsheyla

Post on 12-Jul-2015

107 views

Category:

Documents


0 download

TRANSCRIPT

JSP

JavaServer Pages (JSP) es una tecnologa Java que permite generar contenido dinmico para web, en forma de documentos HTML, XML o de otro tipo. Esta tecnologa es un desarrollo de la compaa Sun Microsystems. La Especificacin JSP 1.2 fue la primera que se liber y en la actualidad est disponible la Especificacin JSP 2.1. Las JSP's permiten la utilizacin de cdigo Java mediante scripts. Adems, es posible utilizar algunas acciones JSP predefinidas mediante etiquetas. Estas etiquetas pueden ser enriquecidas mediante la utilizacin de Bibliotecas de Etiquetas (TagLibs o Tag Libraries) externas e incluso personalizadas.

ArquitecturaJSP puede considerarse como una manera alternativa, y simplificada, de construir servlets. Es por ello que una pgina JSP puede hacer todo lo que un servlet puede hacer, y viceversa. Cada versin de la especificacin de JSP est fuertemente vinculada a una versin en particular de la especificacin de servlets. El funcionamiento general de la tecnologa JSP es que el Servidor de Aplicaciones interpreta el cdigo contenido en la pgina JSP para construir el cdigo Java del servlet a generar. Este servlet ser el que genere el documento (tpicamente HTML) que se presentar en la pantalla del Navegador del usuario.JSP -> Servidor Aplicaciones (Servlets) -> Cliente (Navegador)

Es posible enriquecer el lenguaje de etiquetas utilizado por JSP. Para ello debemos extender la capa de alto nivel JSP mediante la implementacin de Bibliotecas de Etiquetas (Tags Libraries). Un ejemplo de estas bibliotecas son las propocionadas por Sun bajo la denominacin de JSTL o las distribuidas por Apache junto con el Framework de Struts.TagLibs -> JSP -> Servidor Aplicaciones (Servlets) -> Cliente (Navegador)

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 propia hebra, 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.

[editar] Ejemplo de Documento JSP

Ejemplo de cdigo de una pgina JSP: ... ...

Ejemplo de una compilacin o "Salida" JSP:package jsp_servlet; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import com.foo.bar; //importado como resultado de

import ... class _myservlet implements javax.servlet.Servlet, javax.servlet.jsp.HttpJspPage { //insertado como //resultado de int serverInstanceVariable = 1; ... public void _jspService( javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response ) throws javax.servlet.ServletException, java.io.IOException { javax.servlet.ServletConfig config = ...;//obtener la configuracin del servlet Object page = this; PageContext pageContext = ...;//obtener el contexto de la pagina para esta peticin javax.servlet.jsp.JspWriter out = pageContext.getOut(); HttpSession session = request.getSession( true ); ...

Para ejecutar las pginas JSP, se necesita un servidor Web con un contenedor Web que cumpla con las especificaciones de JSP y de Servlet. Tomcat 5 es una completa implementacin de referencia para las especificaciones Java Servlet 2.2 y JSP 1.1.

[editar] Sintaxis[editar] Variables Implcitas

Las pginas JSP incluyen ciertas variables privilegiadas sin necesidad de declararlas ni configurarlas:Variable Clase

pageContext javax.servlet.jsp.PageContext request response session config javax.servlet.http.HttpServletRequest javax.servlet.http.HttpServletResponse javax.servlet.http.HttpSession javax.servlet.ServletConfig

application javax.servlet.ServletContext out javax.servlet.jsp.JspWriter

page exception

java.lang.Object java.lang.Exception

[editar] Directivas

Son etiquetas a partir de las cuales se genera informacin que puede ser utilizada por el motor de JSP. No producen una salida visible al usuario sino que configura cmo se ejecutar la pgina JSP. Su sintaxis es:

Las directivas disponibles son: include: Incluye el contenido de un fichero en la pgina mediante el atributo file. taglib: Importa bibliotecas de etiquetas (Tag Libraries) page: Especifica atributos relacionados con la pgina a procesar. Los atributos son:

Atributo

Sintaxis

Utilizacin Importa clases y paquetes Java para ser utilizadas dentro del fichero JSP. Especifica si utiliza los datos contenidos en sesin; por defecto "true". Especifica el tipo MIME del objeto "response"; por defecto "text/html; charset=ISO-8859-1". Buffer utilizado por el objeto writer "out"; puede tomar el valor de "none";

import

session

contentType

buffer

por defecto "8KB". Especifca la ruta de la pgina de error que ser invocada en caso de producirse una excepcin durante la ejecucin de este fichero JSP. Determina si este fichero JSP es una pgina que maneja excepciones. nicamente a este tipo de pginas pueden acceder a la variable impcita "exception", que contiene la excepcin que provoc la llamada a la pgina de error.

errorPage

isErrorPage

[editar] Scriptlets

Nos permite declarar variables, funciones y datos estticos.

Los scriptlets son partes de cdigo Java incrustadas entre los elementos estticos de la pgina.

Las expresiones se evalan dentro de la servlet. No deben acabar en ";".

El siguiente ejemplo pondra como ttulo de la pgina el atributo "ttulo" contenido en el objeto request: ... ....

[editar] Etiquetas

Etiquetas JSP para simplificar el cdigo y dar mayor funcionalidad. Desarrollar sitios web utilizando etiquetas presenta ciertas ventajas como:

facilitar el aprendizaje. facilitar el mantenimiento. fomentar la modularidad y la reutilizacin. simplificar el cdigo y reducir el nmero de lneas necesarias.

Su sintaxis sera: ... ...

A la hora de generar el cdigo Java de la Servlet, esta etiqueta hola ser interpretada por el Servidor de Aplicaciones como perteneciente a la biblioteca de etiquetas (Tag Library) lycka. Esta biblioteca estar identificada en el fichero descriptor de nuestra aplicacin (web.xml) con el nombre de recurso (URI) /taglib/lycka./taglib/lycka /WEB-INF/tags/lycka.tld

Una implementacin de este fichero descriptor, /WEB-INF/tags/lycka.tld podra ser: 1.0 1.1 simp http://www.hachisvertas.net/jcs/taglibs/lycka A simple sample tag library hola org.lcyka.taglibs.miEtiqueta empty

Alaba la belleza de mi gata.

Y por fin, el servidor de aplicaciones sustituir la etiqueta por su cdigo Java asociado, org.lcyka.taglibs.miEtiqueta:package org.lcyka.taglibs; import ...; public class miEtiqueta extends TagSupport { public int doStart { try { pageContext.getOut().print("Mi gata es preciosa"); } catch (IOException ioe) { } return SKIP_BODY; }

Y finalmente el navegador mostrara:Mi gata es preciosa

[editar] Etiquetas JSP

Son las etiquetas pertenecientes a la especificacin JSP. Proporcionan una funcionalidad bsica. Un primer grupo de etiquetas proporciona funcionalidad a nivel de la pgina de una manera muy simple:

, redirige la request a otra URL , incluye el texto de un fichero dentro de la pgina , descarga un plugin de Java (una applet o un Bean).

Un segundo grupo permite manipular componentes JavaBean sin conocimientos de Java.

, permite manipular un Bean (si no existe, se crear el Bean), especificando su mbito (scope), la clase y el tipo. , obtiene la propiedad especificada de un bean previamente declarado y la escribe en el objeto response. , establece el valor de una propiedad de un bean previamente declarado.

[editar] Etiquetas JSTL

Son proporcionadas por Sun dentro de la distribucin de JSTL.

core, iteraciones, condicionales, manipulacin de URL y otras funciones generales.

xml, para la manipulacin de XML y para XML-Transformation. sql, para gestionar conexiones a bases de datos. i18n, para la internacionalizacin y formateo de las cadenas de caracteres como cifras.

[editar] Etiquetas Struts TagLib

Distribuidas por Apache para funcionar junto con el Framework de Struts.

PHP Bean HTML Logic Nested vjgp

[editar] Etiquetas personalizadas

Anteriormente hemos visto un ejemplo para crear una etiqueta personalizada almacenada en nuestra propia biblioteca de etiquetas. Para desarrollar etiquetas personalizadas, utilizaremos la API de las bibliotecas de etiquetas (Tag Libraries). La API de las Servlet de Java es:javax.servlet.*

La API de JSP extiende de esta API,javax.servlet.jsp.*

Finalmente, la API de las bibliotecas de etiquetas (Tag Libraries) extiende de esta ltima,javax.servlet.jsp.tagext.*

Lo ms relevante de esta API son:

Las interfaces o Tag, que todas las etiquetas deben implementar. o BodyTag, extiende a la anterior y define mtodos adicionales para inspeccionar el cuerpo de una etiqueta. Las clases o BodyContent, un manejador (handler) para leer y escribir en el cuerpo de una etiqueta. o BodyTagSupport, que implementa la interfaz BodyTag.

o o o o o o o

TagAttributeInfo, para obtener la informacin de los atributos de la etiqueta declarados en el TLD. TagData, que contiene los valores de los atributos. TagExtraInfo, para especificar informacin extra de una etiqueta, como las variables que introduce en el cdigo o los atributos que sern validados. TagInfo, basado en la informacin de la TLD. TagLibraryInfo, representa la informacin de una TLD. TagSupport, implementa la interfaz Tag. VariableInfo, contiene informacin como el tipo y mbito de las variables creadas o modificadas por la etiqueta.

Podemos encontrar una descripcin ms detallada en http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/jsp/tagext/packagesummary.html Otro ejemplo de etiqueta podra ser el siguiente cdigo Java:package org.lycka.taglibs; import ...; public class LowerCaseTag extends BodyTagSupport { public int doAfterBody() throws JspException { try { BodyContent body = getBodyContent(); JspWriter writer = body.getEnclosingWriter(); String bodyString = body.getString(); if ( bodyString != null ) { writer.print( bodyString.toLowerCase()); } } catch(IOException ioe) { throw new JspException("Error: IOException while writing to the user"); } return SKIP_BODY; } }

Al encontrar el inicio de la etiqueta, el runtime primero se invocar el mtodo doStart() una vez instanciada la clase. Puede devolver uno de los siguientes valores:

SKIP_BODY, no procesa el contenido del cuerpo de la etiqueta. EVAL_BODY_INCLUDE , evala el cuerpo de la etiqueta. EVAL_BODY_TAG , evala el cuerpo de la etiqueta y lanza el resultado a otro stream almacenado en una propiedad de la etiqueta.

El mtodo doAfterBody() despus de procesar el cuerpo de la etiqueta. Finalmente se invocar el mtodo doEndTag(). Puede devolver:

EVAL_PAGE, para seguir procesando la pgina JSP

SKIP_PAGE, para dejar de procesar la pgina JSP, para por ejemplo redirigir la pgina

Declarado en el descriptor de la biblioteca como lowercase org.lycka.taglibs.LowerCaseTag JSP Put body in lowercase. lowercase org.lycka.taglibs.LowerCaseTag JSP Put body in lowercase.

Utilizado en la pgina JSP ... Mi Gata es TAN Preciosa.

Y su salida serami gata es tan preciosa.

1 Introduccin: servidores y contenedores de servlets/JSPsLos 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, los CGIs (common gateway interface), programas que generan pginas web en el servidor, o los ASP (Active Server Pages), un mtodo especfico de Microsoft. 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 propia hebra, 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. Los JSPs son en realidad servlets: un JSP se compila a un programa en Java la primera vez que se invoca, y del programa en Java se crea una clase que se empieza a ejecutar en el servidor como un servlet. La principal diferencia entre los servlets y los JSPs es el enfoque de la programacin: un JSP es una pgina Web con etiquetas especiales y cdigo Java incrustado, mientras que un servlet es un programa que recibe peticiones y genera a partir de ellas una pgina web

Ambos necesitan un programa que los contenga, y sea el que enve efectivamente pginas web al servidor, y reciba las peticiones, las distribuya entre los servlets, y lleve a cabo todas las tareas de gestin propias de un servidor web. Mientras que servidores como el Apache estn especialmente pensados para pginas web estticas CGIs, y programas ejecutados por el servidor, tales como el PHP, hay otros servidores especficos para servlets y JSPs

llamados contenedores de servlets (servlet containers) o servlet engines. Los principales son los siguientes:

Resin, de Caucho Technologies, un motor especialmente enfocado al servicio de pginas XML, con una licencia libre para desarrolladores. Dice ser bastante rpido. Incluye soporte para Javascript adems de Java. Incluye tambin un lenguaje de templates llamado XTP. Es bastante fcil de instalar, y en dos minutos, se pueden empezar a servir pginas JSP. BEA Weblogic es un servidor de aplicaciones de alto nivel, y tambin de alto precio. Est escrito ntegramente en Java, y se combina con otra serie de productos, tales como Tuxedo, un servidor de bases de datos para XML. JRun, de Macromedia, un servidor de aplicaciones de Java, de precio medio y probablemente prestaciones medias. Se puede bajar una versin de evaluacin gratuita Lutris Enhydra, otro servidor gratuito y Open Source, aunque tiene una versin de pago. Tambin enfocado a servir XML, y para plataformas mviles. Las versiones ms actualizadas son de pago, como es natural El ms popular, Open Source, y continuamente en desarrollo, es el Jakarta Tomcat, del consorcio Apache, un contenedor de servlets con muchos desarrollos adicionales alrededor; por ejemplo, Cocoon para servir pginas XML. Puede servir pginas slo o bien como un aadido al servidor Apache. Es Open Source, relativamente rpido, y fcil de instalar. La versin actual es la 4.0.3, aunque siguen saliendo versiones de la 3.

Otros muchos se pueden encontrar en la pgina de Sun sobre la industria del servlet/JSP y en la pgina de contenedores de servlets en servlets.com

2 Instalando un contenedor de servletsVamos a ver cmo se instala un contenedor de servlets. Nos fijaremos especialmente en la versin 4.0 de Tomcat, aunque lo que se cuente valdr para casi todos los otros contenedores Open Source. Los de pago, probablemente tendrn un interfaz pijo para instalarlos, a base de botoncitos, o si son los muy caros, vendr un seor con corbata y maletn de cuero para hacerlo, as que de esos no nos preocuparemos demasiado.

Contenido de esta seccin Prerrequisitos para instalar un servidor Instalando un contenedor de servlets Ejecutando los primeros JSPs Hosting de servlets, de pago y gratuito

Antes siquiera de bajarse el programa en cuestin, hay que considerar previamente de la mquina virtual Java que vamos a usar para ejecutarlo. Todos estn escritos en Java, as que esto es esencial. Principalmente, hay dos opciones: las JVM de Sun (que son las originales) o las de IBM, que son algo ms rpidas, pero que no siempre estn actualizadas hasta la ltima versin. Un contenedor de servlets necesita el JDK completo, no slo el runtime environmnt, principalmente por el compilador de java contenido en un fichero llamado tools.jar. En cualquier caso, nos podemos bajar la JVM de Sun en sus versiones para

Linux, o para cualquier otra plataforma (en la versin 1.4), o bien la versin 1.3 de IBM (la ms aconsejable). Si no se consigue una versin de esas, es aconsejable conseguir una que sea compatible con la versin "2" de Java, es decir, JVMs a partir de la versin 1.2. Puede que funcionen con versiones anteriores, pero lo ms probable es que no lo hagan. Igual est ya Java instalado en el sistema; habr que verificar que java y tools.jar estn tambin instalados; basta con intentar ejecutarlo, o bien preguntarle al administrador del sistema, que tambin es una criaturita del se y tiene derecho a que alguien le dirija la palabra, caray. Una vez instalada la JVM, nos bajamos el servidor de su sitio correspondiente ( http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/), si puede ser, en versin binaria, ya compilada. Si disponemos de una distro de Linux que use el RPM para instalacin de paquetes (como Mandrake, RedHat o SuSE), se puede uno bajar los RPMs e instalarlos directamente. Dependiendo de lo que elijamos, habr que bajarse slo un paquete, o bien varios. En todo caso, habr que incluir lo siguiente: Xerces-J, regexp, servletapi, tomcat y tomcat-webapps. Si bajamos el fichero .tar.gz, viene todo incluido. Para instalar el RPM se hace lo siguiente:[yo@mimaquina]$ rpm -Uvh tomcat4-4.0.2-3.noarch.rpm

(esto despus de haber instalado todos los paquetes previos. Si se ha bajado el tar:[yo@mimaquina]$ tar xvfz tomcat4-4.0.2.tar.gz

Ya desempaquetado, tendremos el Tomcat listo para funcionar. Dependiendo de la manera de descargargarlo, tendremos el servidor en un directorio u otro, pero siempre habr directorios conf, lib, bin y webapps. A continuacin, habr que decirle dnde se encuentra la mquina virtual Java, editando un fichero tomcat.conf que se encuentra dentro del directorio conf (que variar de sitio segn la distribucin; puede ser en /etc/tomcat4/conf o en directorio_del_tomcat/conf). En otros sistemas operativos, o con otro tipo de instalacin, habr que definir una variable de entorno, de esta forma:[yo@mimaquina]$ export JAVA_HOME=/opt/IBMJava2-13

o bien[yo@mimaquina]$ setenv JAVA_HOME /opt/IBMJava2-13

, dependiendo de si se trata del intrprete de comandos bash (el primero) o *csh (el segundo). En WinXX habr que dar una orden similar. Finalmente para ejecutar el servidor, fijndonos en el caso de haberlo instalado usando el RPM, hacemos:[yo@mimaquina yo]$ /etc/rc.d/init.d/tomcat4 start

En otros casos, habr que ir al directorio bin de la distribucin y ejecutar ./startup.sh o startup si se trata de Windows. Si todo falla, siempre se puede mirar el

manual. Por defecto, el servidor viene configurado para lanzarse en el puerto 8080 u 8180 (dependiendo de las versiones). Si todo ha ido bien, tendremos funcionando en nuestro ordenador al Tomcat, y al introducir una direccin tal como http://localhost:8080 o http://localhost:8180 (si quieres usar direcciones por debajo de 1000 tendrs que ser superusuario). Si no te sale lo anterior, puede ser por miles de razones diferentes. La primera es comprobar que efectivamente el servidor est funcionando. El principal problema de Tomcat es que falla silenciosamente: ejecuta cosas, y parece que ha arrancado, pero, sin embargo, no lo ha hecho. Para ver si est funcionando tienes diferentes opciones: usar netstat para ver si el puerto est ocupado y alguien est escuchando en l (y si es el Tomcat, mejor; si no lo es, ha fallado por eso, porque no ha podido ocupar el puerto), escuchar atentamente el disco duro a ver si al arrancar el tomcat le ha dado vidilla, lo cual indica que efectivamente est funcionando; mirar a ver si hay algo en el directorio webapps , porque si no lo hay, va a dar un fallo de contexto o algo por el estilo, con lo fcil que es decir, joer, que no hay una puetera pgina, caray!. Tambin es interesante tratar de ejecutar los ejemplos: si fallan los JSPs pero no los servlets, es que no se ha encontrado el fichero tools.jar, que, a pesar de su nombre, es el que compila los JSPs. Por ltimo, hay que mirar en el registro de catalina, en log/catalina_log.[fecha].txt; si se ha arrancado correctamente, aparecer algo as:2002-03-11 08:33:13 HttpConnector Abriendo sockets de servidor en todas las direcciones IP disponibles 2002-03-11 08:33:15 HttpConnector[10001] Iniciando thread de posterior 2002-03-11 08:33:15 HttpProcessor[10001][0] Iniciando thread de posterior

Si solamente pone el primer mensaje, chungo; no ha iniciado ninguna hebra, que son las que efectivamente sirven los JSPs. Si no es nada de eso, mira los mensajes de error en el subdirectorio log, a veces indican que falta algun fichero, o bien que hay un problema de versiones de la mquina virtual Java. Una vez que se ha instalado, y se ha comprobado que funciona correctamente, se puede intentar cambiar la configuracin, sobre todo teniendo en cuenta el nmero de visitas esperadas. La mayora de los cambios de configuracin se hacen sobre el fichero conf/server.xml. Para cambiar el puerto en el que se escucha y el nmero de servidores disponibles mnimo y mximo, hay que cambiar la siguiente orden:

La configuracin de Tomcat se hace sobre un fichero que usa el lenguaje XML. Con l, se definen una serie de elementos: servidores, conectores y contenedores; la configuracin se ha simplificado mucho desde la versin anterior, aunque introduce nuevos elementos: las vlvulas y los motores. Tomcat define para cada servidor una serie de conectores, mediante los cuales diferentes clases responden a diferentes puertos, y se encargan de servirlos; los

contenedores o motores se encuentran dentro de los conectores, y se encargan de manejar todas las peticiones para un servicio. Salvo que se vayan a usar aplicaciones particulares (tales como Cocoon), no hay que preocuparse mucho del tema. En nuestor caso, slo habr que cambiar el nmero mnimo de procesadores (o hebras que sirven peticiones) y el mximo, para no sobrecargar demasiado el sistema en caso de que se cuente con poca memoria principal. El mnimo aceptable es 2, y el mximo es hasta 65535 o hasta que la memoria aguante (que no aguantar mucho). En cuanto al puerto, se puede usar cualquiera, siempre que no est ya usado, y siempre que se ejecute desde superusuario; si no se es superusuario, hay que usar los puertos por encima del mil. Una vez hecho esto, hay que rearrancar el servidor para que tome los nuevos cambios:[yo@mimaquina yo]$ /etc/rc.d/init.d/tomcat4 restart

Para ahorrar recursos, se pueden eliminar cosas de ese fichero. Por ejemplo, si se trata de un servidor de desarrollo, no necesitamos conectores para el apache ni conexiones que usen SSL. Se puede eliminar la el servicio Tomcat-Apache, eliminando todo lo comprendido entre la etiqueta Service y su contraetiqueta. Tambin se pueden eliminar los conectores AJP, SSL, "proxied", y de test, indicados con un comentario, justo debajo del conector normal (el non-SSL HTTP/1.1 ). Se pueden ahorrar unos pocos ms recursos iniciando la JVM de forma que se limite el tamao del heap y de la pila, pero no se ahorra demasiado espacio. Un Tomcat funcionando no ocupar nunca menos de 90 megas (lo que se puede ver ejecutando el top o gtop o bien, desde la lnea de comandos, ps -exfua. Tambin se puede aadir un nuevo contexto al servidor; sobre todo si queremos que nuestras aplicaciones no se mezclen con el resto de las aplicaciones en el contexto raz (las contenidas en el directorio ROOT. Para ello, se puede aadir, justo despus de la lnea donde se define tal contexto, lo siguiente:

(substituyendo micontexto por el valor adecuado; ambos nombres no tienen porqu ser iguales). El path indica el URI que se va a utilizar para referirse a l cuando lo llamen desde algn navegador, es decir, http://miservidor/micontexto, y el segundo nombre es el subdirectorio del directorio webapps al que se refiere Una vez realizada la aplicacin, se puede alojar en un servidor que ofrezca este servicio. Por ejemplo, Verio ofrece soluciones basadas en el sistema operativo Solaris (el precio hay que consultarlo). Un revendedor de este servicio, SoyDigital, menciona precios a partir de 210 . Tambin hay alternativas gratuitas, aunque no son eternas como en el caso de GeoCities. Una de ellas es iSavvix DevSpace, que permite alojamiento gratuito de JSPs, con libreras de tags e incluso XSLT; lo que no permite, es que uno suba sus propias clases, aunque se pueden usar diversas libreras de clases presentes en el sitio. Otra alternativa, WebAppCabaret, que da diversos contenedores de servlets como alternativa: Tomcat y NGASI, Enterprise Java Beans, bases de datos con MySQL, pero todo ello por solamente

15 das; ms all de eso, hay que contratar el servicio Premium, a partir de 3$. Por ltimo, MyCGIserver tambin permite alojamiento gratuito; hay que responder a una pregunta relacionada con los servlets, pero es usualmente fcil de encontrar la respuesta. Ejercicios 1 1. Seguir los pasos anteriores e instalar un contenedor de servlets en el ordenador. Probar con el Tomcat, y si todo va bien, probar tambin con el Caucho Resin. El proceso es bastante similar. Cambiar la configuracin de Tomcat de forma que cada conector use slo 2 hebras mnimo, y 5 mximo. Cambiar al puerto al 10001; rearrancar el servidor. Definir un nuevo contexto para los ficheros propios. 2. Darse de alta en algn servidor gratuito, y subir alguno de los ejemplos de Resin o de Tomcat para probarlo.

3 Nuestra primera pgina JSP

Si todo va bien, y los ejemplos se ejecutan correctamente, hola.jsp ya est uno listo para crear su primer programa, o pgina, en JSP (depende de como uno lo mire). Como las pginas JSP son bsicamente pginas HTML con un poco de Java por medio, sirven, en principio, cualquier editor que comprenda la sintaxis HTML y/o XML; por ejemplo, el XEmacs. Algunos otros entornos, tales como el Sun ONE, una plataforma de desarrollo completa (que consume un montn de recursos), el Visual Age for Java; estos dos estn escritos en Java y pueden ejecutarse en cualquier plataforma. El Dreanweaver Ultradev, sin embargo, existe slo en versin Windows. Fort es gratuito, y los otros dos son de pago, aunque hay versiones de prueba de tiempo limitado que se pueden bajar.

Contenido de esta seccin Cmo crear y dnde poner la pgina

Con cualquier editor de texto se puede crear la primera pgina JSP (hola.jsp; en accin en iSavvix): Hola y nmeros. Intro to JSP Hola, mundo. Te lo repito vez veces

Tras editar esa pgina, habr que ponerla en algn sitio. La estructura de directorios de Tomcat (y de otros contenedores de servlets) es un poco ms compleja que la de los servidores web normales. Todos los ficheros cuelgan del directorio webapps, pero no se pueden colocar directamente ah. De ese directorio descienden otros subdirectorios, que es donde efectivamente se colocan las aplicaciones. Cada directorio corresponde a un

contexto; hay un contexto raz ROOT y tantos otros contextos como queramos definir. Dentro de cada contexto, la estructura de directorios es tambin siempre la misma; directamente descendiendo del directorio se pueden poner los JSPs, y hay tambin un directorio WEB-INF donde hay una serie de ficheros de configuracin y propiedades, y adems otros directorios: classes y lib (que no aparece en esta imagen). En esos directorios se pondrn ms adelante los ficheros .class y .jar, respectivamente. Por tanto, el fichero anterior, ir a parar al directorio ROOT (o bien al directorio del contexto propio que hayamos definido en el ejercicio anterior). Tambin se puede colocar en cualquiera de los subdirectorios del directorio webapps, pero no en el principal El fichero contiene la mayora de los elementos de un JSP. Para empezar, la lnea 2 incluye una directiva, que son rdenes que se ejecutan antes de que se comience a procesar el JSP, y modifican de alguna forma el resultado del mismo. Todas las directivas en JSP se indican con una @ despus del comienzo de la orden JSP (