JSP( JavaServer Pages) Esta guia contienens conceptos sobre JSP ( JavaSever Pages), que es un documento tipo texto que describe la manera de procesar una solicitud para crear una respuesta utilizando la plataforma Java, siendo generalmente el resultado final, de la ejecucion de una JSP, un documento con codigo HTML. En una JSP escribimos codigo HTML combinado con codigo Java, pero el codigo va encerrado entre <% y %>. Este codigo Java se procesa en el Servidor Web convirtiendose en HTML que sera enviado al cliente. Los puntos a tratar son: 1. Introduccion a JavaServer Pages(JSP) 2. Elementos JSP 3. Ciclo de vida de un JSP 4. Introduccion a JSTL ( JavaServer Pages Standard Tag Library) 1
1. INTRODUCCION A JSP Java Enterprise Edition ( Java EE) define la tecnologia JavaServer Pages ( JSP) para permitir la generacion dinamica de contenidos web, como HTML, XHTML y XML. Una JSP es un documento de tipo texto que describe la manera de procesar una solicitud para crear una respuesta utilizando la plataforma Java, siendo generalmente el resultado final, de la ejecucion de una JSP, un documento con codigo HTML. En una JSP escribimos codigo HTML combinado con codigo Java, pero el codigo va encerrado entre <% y %>. Este codigo Java se procesa en el Servidor Web convirtiendose en HTML que sera enviado al cliente. Las JSP tendran extension.jsp y seran ubicadas dentro de nuestro proyecto Web. A pesar de que estas se parezcan a documentos HTML, detrás del escenario una JSP se convierte en un programa compilado, donde el HTML estatico simplemente se imprime en el stream de salida estandar asociado. Esto normalmente solo se hace la primera vez que se solicita la pagina, y los desarrolladores pueden solicitar la pagina ellos mismos cuando la instalan, si quieren estar seguros de que el primer cliente real no tenga retardo momentaneo cuando la pagina JSP sea traducida y compilada. Mediante la siguiente figura, podemos apreciar que una JSP en el servidor Web, generara un documento con contenido HTML que sera recibido por el cliente: Documento JSP en Servidor Web <% for ( int x=1;x<=6;x++) { %> <H<%=x%>> Hola a todos </H<%=x%>> <%}%> Documento JSP recibido por Cliente en Internet <H1> Hola a todos </H1> <H2> Hola a todos </H2> <H3> Hola a todos </H3> <H4> Hola a todos </H4> <H5> Hola a todos </H5> <H6> Hola a todos </H6> El siguiente proyecto va a permitir apreciar el comportamiento de un JSP en accion. El simple mensaje Hola a todos se vera en un cliente Web que sera contruido con codigo Java. Proyecto primerosjsp Genere en NetBeans un proyecto llamado primerosjsp, en el cual haremos varios ejemplos JSP iniciales. Entonces ir al menu File/New Project: En el dialogo New Project se mostrara, del grupo Categories seleccione Java Web y del grupo Projects seleccione Web Application, luego clic en el boton Next>: 2
El dialogo New Web Application se mostrara. Para el campo Project Name digite primerosjsp. Seleccione su Project Location ( ruta en el disco donde guardara su aplicación ), clic en el boton Next>: 3
Para el campo Server seleccione Apache Tomcat 6.0.26 por ser el mas liviano ( ligero en estos ejercicios iniciales) y verifique que el campo Java EE version sea Java EE 5 que es la version que nos aceptara todo lo que hagamos en estos ejercicios del tema 02. Finalmente, clic en el boton Next >: Estaremos viendo el dialogo final que pide seleccionar el framework (herramientas adicionales), por ahora no seleccionar ninguna y clic en el botono Finish. 4
NetBeans procedera a crear las carpetas y documentos del proyecto según las especificaciones dadas en los dialogos por los cuales hemos pasado. Entonces vera en la ficha Projects ( si no la ve, pulse Crt+1 o menu Windows/Projects) el proyecto primerosjsp que despliega sus nodos mas importantes. El nodo Web Pages contendra nuestros JSPs, como vemos ya en el a index.jsp creado por NetBeans. Tambien, en el Web Pages podresmo crear nuevas carpetas para distribuir en ellas a nuestros JSPs a fin de tener mas orden en la administracion de la aplicación cuando la cantidad de documentos es muy alta. El nodo Source Packages contendra nuestros archivos.java. Y el el nodo Libraries sera un repositorio de bibliotecas que iremos añadiendo a medida que usemos codigo adicional creado por terceros, como por ejemplo construccion de graficos estadisticos,drivers a base de datos y otros. El documento index.jsp creado por NetBeans, tendra el siguiente contenido. 5
Las lineas 1,2,3,4 y 5 es comentario para indicar el nombre del documento, fecha y hora de creacion, asi como el responsable de su origen (Author). La linea 7 es codigo de Java, fijese que esta entre <% %> y lo que hara, sera compìlar dicho documento en un formato final text/html. En cuanto al valor UTF-8 (8-bit Unicode Transformation Format) es para que los parametros enviados a este JSP puedan ser leidos aceptando alfabetos de muchos de los lenguajes del mundo. Incluyendo español. Debe ser la primera linea Java si es que recogera parametro ( request. getparameter). Las lineas 8 y 9 declaran el documento para ser HTML 4.01 transitorio. El HTML 4 transitorio incluye todos los elementos y cualidades del HTML 4 estricto pero agrega cualidades de presentacion, elementos desaprobados y blancos de acomplamiento. el HTML 4 transitorio reconoce la ayuda relativamente pobre del browser para las hojas de stilo, permitiendo que muchas caracteristicas de la presentacion del HTML sean utilizadas como transacion hacia HTML 4.01 estricto. Para mayor informacion puede visitar http://www.w3.org/tr/html401/ Las lineas 13 y 14 especifican que el browser debe mostrar juegos de caracteres de diversos paises, incluyendo el español. Sin embargo, recomiendo esta direccion http://www.cristalab.com/tips/42532/configurar-tu-web-para-usar-utf-8 para una breve interpretacion. Ahora, editemos el <body>. </body> de index.jsp con el siguiente codigo: Corresponde entonces crear el documento hola.jsp clic derecho sobre el proyecto primerosjsp 6
El dialogo New JSP File debe mostrarse, entonces en el campo JSP File Name digite hola, no se preocupe de la extension (.jsp) que ya lo agregara NetBeans. Finalmente, clic en el boton Finish: En este nuevo archivo (hola.jsp) reemplace el zbody> </body> con el siguiente codigo: Ahora, ejecute dando clic derecho sobre el nombre del proyecto (primerosjsp) y seleccionando Run, entonces vera. 7
2. ELEMENTOS JSP Para el desarrollo de un JSP, existen elementos que van definiendo a insercion o complementacion con codigo Java. La siguiente tabla muestra estos elementos. Elemento JSP Sintaxis Interpretacion Expresion <%= expresion %> La expresion es evaluada (variable o retorno de funcion ) y situada en la salida. Scriptlet <% codigo Java %> Codigo Java que sera interpretado. pudiendo producir codigo HTML Declaracion <%! Variable %> Para definir variables globales dentro de un JSP Directiva page <%@ page att= val %> Proporciona instrucciones al motor de procesamiento afectando a toda la JSP Directiva include <%@ include file= url Permite incluir una archivo ( %> fragmento de JSP) dentro de la JSP Comentario <%-- comentario %> Para escribir comentarios en la JSP 2.1. La directiva page Esta directiva da instrucciones al motor que porocesa el documento JSP, aplicandose estas instrucciones a todo el documento. Utilizando esta directiva se podria especificar un ccomentario informativo que formara parte del documento JSP compilado, el lenguaje de script usado en el fichero fuente JSP, los paquetes de ficheros fuentes que seran importador, o la pagina de error que se llamara si ocurren errores o excepciones, entre otros aspectos. Como por ejemplo <%@ page languaje= java 8
contenttype= text/html info= Ejemplo sobre page import= java.lang.math errorpage= paginadeerror.jsp %> Podemos usar la directiva page en cualquier lugar del documento JSP, pero es muy recomendable situarlo en la parte superior del fichero. Como es una etiqueta JSP, podemos situarla antes de la etiqueta de apertura <html> A continuacion detallamos alguno de los atributos de la directiva page: Atributo Sintaxis Utilizacion import <%@ page import= Importa la clase Math para java.lang.math %> hacer uso de sus metodos. session <%@ page session= Especifica si utiliza los datos false %> contenidos en session; por defecto true contenttype <%@ page contenttype= text/html %> Especifica el tipo MIME del objeto response. Por defecto text/html; charset=iso-8859-1 errorpage iserrorpage <%@page errorpage= paginadeerror.jsp %> <%@page iserrorpage= true %> Especifica la pagina de error que sera invocada en caso de producirse una excepcion durante la ejecucion de la JSP. Determina si este fichero JSP es una pagina que maneja excepciones. Unicamente a este tipo de paginas pueden acceder a la variable implicita exception, que contiene la exception que provoco la llamada a la pagina de error. 2.1. La directiva import Este atributo de la directiva page nos permite tener acceso a bibliotecas de Java en el momento en que la pagina JSP es traducida a un servlet. Su uso se parece a esto: <%@page import= java.util.date %> Recuerde que estamos desarrollando nuestro proyecto primerosjsp, entonces en el vamos añadir ejemplos con las directivas page e import, por lo tanto modifique index.jsp para que su body se vea asi: 9
Ahora, debe crear la JSP directivapage.jsp como lo hizo con la hola.jsp, entonces edite el codigo de este nuevo documento (directivapage.jsp) de tal modo que tenga la siguiente presentacion: 10
Cuando ejecute esta JSP ( directivapage.jsp) podra apreciar como formatear numeros y fechas para aplicarlo en siguientes aplicaciones. La siguiente imagen muestra dichas tareas: 2.2. La directiva include Esta directiva nos permite incluir fragmentos JSP o documentos HTML, en el momento en que la pagina JSP es traducida a un servlet. La directiva se parece a esto: <%@ include file= WEB-INF/jspf/menu.jspf %> La siguiente imagen ilustra como un fragmento de JSP ( JSPF ) se incluye dentro de un documento JSP con el uso de la directiva include: JSPF Documento JSP que incluye a JSPF 11
Son frarmentos de JSP que con la directiva include podemos insertar en una JSP. Para crear uno ( y seguir con nuestro ejemplo) de clic derecho sobre el nodo Web Pages del proyecto primerosjsp y seleccione New/JSP En dialogo New JSP File, para el campo JSP File name digite menu. Dando clic en el boton Browse seleccione la carpeta WEB-INF y agrege /jspf que es la recomendación de NetBeans para guardar nuestros JSPF. Por ultimo, marque el checkbox Create as a JSP Segment y clic en Finish: El contenido inicial de menu.jspf sera: Recuerde que NetBeans nos recomienda ubicar los JSPF en la carpeta WEB-INF/jspf a fin de que estos no puedan ser accedidos por los clientes Web, y solo seran invocados por documentos JSP. En la imagen a la izquierda, se muestra la ubicación de menu.jspf, Edite el codigo del fragmento de JSP ( menu.jspf ) para que podamos navegar a otros documentos con el siguiente contenido. 12
Es momento de crear los documentos a los que navegara menu.jspf sin incluir index.jsp ( ya creado), y son : directivainclude01.jsp y directivainclude02.jsp Por lo tanto el contenido de directivainclude01.jsp sera: 13
El contenido de directivainclude02.jsp sera: Tambien, edite index.jsp para llamar a las nuesvas JSPs: Al ejecutar el proyecto podra navegar a directivainclude01.jsp que nos lleva a un pequeño menu, desde donde podra ir a directivainclude02.jsp y tambien iindex.jsp. 14
3. CICLO DE VIDA DE UNA JSP Cuando una JSP es requerida por un cliente, entonces, si esta no ha sido ejecutada anteriormente sera recien convertida a un servlet y compilada como tal para su ejecucion y servicio al cliente. Pero si anteriormente fue solicitada, ya no pasara el proceso de compilacion, pues ya se encuentra publicada en el servidor Web. JEE Web Container HTML Request primera vez que se ejecuta? SI JSP Servlet(Java) HTML Response NO, ya se ejcuto anteriormente Servlet(Class) Servlet Servlet cargado e inicializado En el Servidor Web. Tambien, habra que considerar el hecho de que cuando la JSP es modificada, esta nuevamente pasa por el proceso de conversion y compilacion a un servlet. Resumiendo: Es responsabilidad del desarrollador ejecutar su JSP antes de que su cliente la ejecute para que este no sienta la demora del proceso de compilacion. 4. INTRODUCCION A JSTL JavaServer Pages Standard Tag Library (JSTL) encapsula como simples etiquetas la funcionalidad basica de muchas aplicaciones Web. Tambien proporciona un marco para la integracion de las etiquetas personalizadas y responde a la demanda de los desarrolladores de un conjunto de acciones JSP personalizadas para manejar las tareas que necesitan casi todas las paginas JSP, incluyendo procesamiendo condicional, internacionalizacion, acceso a bases de datos y procesamiento XML. Esto acelera el desarrollo de JSPs eliminando la necesidad de los elementos de scriptle( codigo java). Demostracion 01:Para hacer una demostracion de JSTL crearemos el proyecto demojstl de categoria Java Web y tipo Web Application, como nuestros anteriores proyectos.. Una vez creado, seleccionar el nodo Libraries del proyecto, clic derecho en el y seleccione Add Library: 15
Del dialogo Add Library seleccione JSTL 1.1 Entonces, veremos añadido a nuestro proyecto dicha biblioteca Ahora. editar index.jsp con el siguiente codigo: 16
17
En la linea 5 podemos ver la biblioteca JSTL. Que estamos usando y que se representara a traves de su prefijo ( c ). Las lineas [54-64] muestran el uso de los nuevos tags. Las siguiente imagen muestra su ejecucion: 18