TEMA Nº 3: ELEMENTOS DE JSP
Upcoming SlideShare
Loading in...5
×
 

TEMA Nº 3: ELEMENTOS DE JSP

on

  • 344 views

 

Statistics

Views

Total Views
344
Views on SlideShare
344
Embed Views
0

Actions

Likes
0
Downloads
23
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    TEMA Nº 3: ELEMENTOS DE JSP TEMA Nº 3: ELEMENTOS DE JSP Document Transcript

    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comJaaaaaaaaaaaaDesarrollo de Aplicaciones Web con J2EE
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comTEMA Nº 3: ELEMENTOS DE JSPPROCESAMIENTO DE JSPCon JSP podemos crear aplicaciones web que se ejecuten en variados servidores web,de múltiples plataformas, ya que Java es en esencia un lenguaje multiplataforma. Laspáginas JSP están compuestas de código HTML/XML mezclado con etiquetasespeciales para programar scripts de servidor en sintaxis Java. Por tanto, las JSPpodremos escribirlas con nuestro editor HTML/XML habitual.MOTORJSPEl motor de las páginas JSP está basado en los servlets de Java -programas en Javadestinados a ejecutarse en el servidor-, aunque el número de desarrolladores quepueden afrontar la programación de JSP es mucho mayor, dado que resulta muchomás sencillo aprender que los servlets.En JSP creamos páginas de manera parecida a como se crean en ASP o PHP -otrasdos tecnologías de servidor-. Generamos archivos con extensión .jsp que incluyen,dentro de la estructura de etiquetas HTML, las sentencias Java a ejecutar en elservidor. Antes de que sean funcionales los archivos, el motor JSP lleva a cabo unafase de traducción de esa página en un servlet, implementado en un archivo class(Byte codes de Java). Esta fase de traducción se lleva a cabo habitualmente cuando serecibe la primera solicitud de la página .jsp, aunque existe la opción de precompilaren código para evitar ese tiempo de espera la primera vez que un cliente solicita lapágina. Ejemplo de página JSPEn la imagen siguiente se puede ver un ejemplo extremadamente simple de unapágina JSP y el esquema de conversión de esa página en un servlet.
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comREREQUISITOSPara aprender JSP, aparte de conocer HTML, será necesario comprender y tener algode experiencia en la programación en Java, que es un lenguaje de programaciónOrientado a Objetos por completo. Una vez conocida la programación en Java sepuede estudiar por encima el sistema de Servlets, lo que nos dará una mejor idea delfuncionamiento interno del motor JSP.Para aprender Java podemos consultar algunos enlaces del correspondientedirectorio de nuestro buscador de enlaces. Además, necesitaremos descargar einstalar Tomcat, el contenedor de servlets usado en la referencia oficial deimplementación de JSP. Podemos acceder a un ejercicio para aprender a realizar estainstalación, disponible también en la referencia de aprendizaje de la página de Java.ReferenciasJSPHemos creado una nueva sección en nuestro directorio dedicada por completo a laspáginas JSP, que será muy interesante para todo aquel que desee profundizar en eltema.DIRECTIVAS JSPEsta figura muestra lo que quizás sea la aplicación JSP más sencilla que uno podríaescribir.Duke Dice HelloEl Banner de Duke (dukebanner.html)<table border="0" width="400" cellspacing="0"cellpadding="0"><tr><td height="150" width="150">&nbsp; </td><td width="250">&nbsp; </td></tr>
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.com<tr><td width="150">&nbsp; </td><td align="right" width="250"><br><imgsrc="duke.waving.gif"></td></tr></table><br>La página JSP (helloworld.jsp)<%@ page info="a hello world example" %><html><head><title>Hello, World</title></head><body bgcolor="#ffffff" background="background.gif"><%@ include file="dukebanner.html" %><table><tr><td width=150>&nbsp; </td><td width=250 align=right><h1>Hello, World!</h1></td></tr></table></body>
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.com</html>La Directiva PageLa directiva Page es una etiqueta JSP que usaremos encaso todos los ficheros fuenteJSP que escribamos. En helloworld.jsp, es la línea que se parece a esto:<%@ page info="a hello world example" %>Esta directiva da instrucciones al motor JSO que aplica a todo el fichero fuente JSP. Eneste ejemplo, está directiva especifica un comentario informativo que formará partedel fichero JSP compilado. En otros casos, podría específicar el lenguaje de scriptusado en el fichero fuente JSP, los paquetes de ficheros fuentes que seránimportados, o la página de error que se llamará si ocurren errores o excepciones.Podemos usar la directiva page en cualquier lugar del fichero JSP, pero es un buenestilo de codificación situarlo en la parte superior del fichero. como es una etiquetaJSP, podemos situarla antes de la etiqueta de apertura <html>tag.La Directiva IncludeLa directiva include inserta el contenido de otro fichero en el fichero principal JSP,donde está situada la directiva. Es útil para incluir informacióndecopuright, ficherosde lenguaje de script, p cualquier cosa que podríamos querer reutilizar en otrasaplicaciones. En este ejemplo, el fichero incluido es una tabla que crea un bannergráfico.Podemos ver el contenido del fichero incluido viendo la página fuente del ficheroprincipal JSP mientras estamos ejecutando Hello, World. El fichero incluido nocontiene etiquetas <html> o <body>, porque podrían generar conflictos con lasmismas etiquetas del fichero JSP llamante.Una Nota sobre las Etiquetas JSPCuando uses los ejemplos de este capítulo, recuerda que las etiquetas JSP sonsensibles a las mayúscula. Si, por ejemplo, tecleamos <jsp:usebean> en lugar de <jsp:useBean>, nuestra etiqueta no será reconocida, y la implementación de referenciaJSP 1.0 lanzará una excepción. Algunos de los atributos de las etiquetas tomannombres de clases, nombres de paquetes, pathnameso otros valores tambiénsensibles a las mayúsculas.¿Cómo ejecutar la aplicación de ejemploLas instrucciones dadas aquí usan una pathname del estilo UNIX. Si estamostrabajando en Windows, usamo el mismo pathname pero con el separador dedirectorios apropiadoCreamos el directorio (o carpeta) ../jswdk-.0/examples/jsp/tutorial/helloworld.
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comSituamos los siguientes ficheros en el directorio ../tutorial/hello: background.gif,duke.waving.gif, dukebanner.html, y helloworld.jsp.Desde la línea de comandos, arrancamos la implementación de referencia JSP deSun:cd../jswdk-1.0 startserverAbrimos un navegador Web y vamos a http://yourMachineName:8080/examples/jsp/tutorial/helloworld/helloworld.jspACCIONESreación de acciones JSP personalizadasPara todo aquel que haya utilizado alguna vez JSP, sabe que con la librería core deJSLT tendremos en la mayoría de las ocasiones las herramientas necesarias paranuestras aplicaciones, pero puede haber casos que no sean suficientes o que nosinterese crear nuestras propias etiquetas para nuestras aplicaciones. Veremos ahorapaso a paso como crearlas.Esta acción requiere de dos pasos fundamentales:Implementación de la clase manejadora. Por cada tag que queramos crear,deberemos de definir su clase manejadora que implemente las operaciones a realizarpor la aplicación.Creación del archivo de libería, que contiene la información necesaria para que elcontenedor web pueda interpretar esa información.IMPLEMENTACIÓN DE LA CLASE MANEJADORALa interfaz javax.servlet.jsp.tagext.Tag es la que nos proporciona el soporte parapoder crear esta clase manejadora con los elementos mínimos necesarios. Tambiénpodríamos heredar de la clase javax.servlet.jsp.tagext.TagSupport que ya nosproporciona una implementación de Tag por defecto.Los métodos que se ejecutan en una durante la ejecución de la acción son:voidsetPageContext(PageContext pc): Es el primer método invocado por elcontenedor y permite establecer el contexto de la página actual.voidsetParent (Tagparent): Es el segundo método que se ejecuta en al acción y al quese le pasa el objeto Tag o en su defecto Null.
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comintdoStartTag(): Se ejecuta una vez que el contenedor detecta la etiqueta decomienzo de la acción. Nos devolverá un número que indicará al contenedor comotratar con el cuerpo de la acción. Los posibles valores son: Tag.EVAL_BODY_INCLUDE,si queremos que se evalue el body de la acción o Tag.SKIP_BODY, si no queremos queevalue el cuerpo.intdoEndTag(): Se invoca cuando detecta la etiqueta de cierre de la acción. Devolveráun valor que indica al contenedor como tiene que actuar. Los posibles valoresson:Tag.EVAL_PAGE, que indica que tienen que evaluar el resto de la página o elvalorTag.SKIP_PAGE, con la que no se evaluará el resto de la página.Para poder mostrar los resultados de la etiqueta en la página, tenemos que hacer usode la clase JspWriter, y en concreto haciendo uso de su método getOut(). PormediopageContext podremos tener acceso al objeto JspWriter.package ejemplo;importjavax.servlet.jsp.*;importjavax.servlet.jsp.tagext.*;public class Saludo extends TagSupport{publicintdoStartTag() throws JspException{try{JspWriter out=pageContext.getOut();out.println("HolaMundo");} catch(Exception e){e.printStackTrace();}return SKIP_BODY;}publicintdoEndTag(){return EVAL_PAGE;}}
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comARCHIVO LIBRERÍAEste archivo consiste en un archivo XML con extensión .tld, donde indicaremos elconjunto de acciones que queremos que pertenezcan a la libería.Lo primero que deberemos de indicar es el standar que se utilizará en el documento.En nuestro caso:<!DOCTYPEtaglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN""http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">Luego indicaremos el elemento raiz taglig, y dentro indicaremos todas las etiquetasdel documento. Las mas importantes son:tlib-version: Número de la versión de la librería.jsp-version: Versión de la especificación JSP utilizada por la librería, en nuestro caso2.0.short-name: posible valor elegido para ser utilizado como prefijo.uri: es la url asociada a la librería.description: Texto descriptivo de la libería.tag: definición de una librería. Contendrá los siguientes subelementos:name: Nombre de la acción.tag-class: Nombre de la clase que define la acción.body-content: Información utilizada para determinar como se va a evaluar el cuerpode la acción.description: Descripcion de la acción.attribute: define los atributos de la acción. Los posibles elementos serán:name. Nombre del atributorequired. Indica si el atributo es o no obligatoriortexprvalue. Indica si el atributo puede o no ser calculadodinámicamente utilizando una expresión.type. Tipo de dato del atributo (nombre cualificado de la clase). Para literales essiempre String.<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPEtaglibPUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN""http://java.sun.com/dtd/webjsptaglibrary_1_2.dtd"><taglib><tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version>
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.com<short-name>ejemplo</short-name><uri>http://www.milibreria.tld</uri><description>Ejemplo delibrería</description><tag><name>saludo</name><tag-class>ejemplo.Saludo</tag-class><body-content>empty</body-content><description>tag de ejemplo</description></tag></taglib>UTLIZACION EN LA APLICACIONA la hora de distribuir las clases manejadoras podemos optar por tratar con los .classo, preferiblemente, generar un archivo .jar en el que se incluyan todas estas clases.Tanto en un caso como en otro, las clases tendrán que ser accesibles desde laaplicación Web para lo cual debemos proceder de la siguiente manera según la formaen que se distribuyan las clases:Si las clases se distribuyen como .class, todos estos archivos deberán ser incluidos enalgún paquete dentro del directorio WEB-INFclasses de la aplicación.Si se distribuyen como un archivo .jar, este deberá ser incluido en el directorioWEBINFlib de la aplicaciónEn cuanto al archivo de librería .tld, lo más práctico es incluirlo en el .jar junto con lasclases manejadoras, aunque podemos situarlo en cualquier subdirectorio de laaplicación (normalmente, dentro de WEB-INF).Una vez realizadas las operaciones anteriores, para poder usar las acciones de lalibrería en cualquier página JSP de la aplicación simplemente tendremos que incluiruna referencia a la librería a través de la directiva taglib. Por ejemplo para utilizar unalibería ya creada, al principio del archivo JSP deberíamos de poner la siguiente línea,sustituyendo el uri, por el que nosotros hayamos indicado.<%@ tagliburi=“http://www.ejemplolibreria.tld” prefix= “ejemplo”%>Si el .tld estuviera en el archivo .jar no habría que hacer ninguna otra operación, perosi estuviera situado, por ejemplo, en la ubicación WEB-
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comINFlibreriasejemplolibreria.tld, sería necesario incluir la siguiente entrada en elarchivo web.xml<web-app><!--otros elementos--><taglib><taglib-uri>http://www.milibreria.tld</taglib-uri><taglib-location>/WEB-INF/librerias/ejemplolibreria.tld</taglib-location></taglib>Su uso en un archivo jsp quedaría de la siguiente forma que os indicamos:<%@page contentType="text/html"%><%@page pageEncoding="UTF-8"%><%@ tagliburi=“http://www.milibreria.tld” prefix=“ejemplo”%>EXPRESIONESEn JSP se utilizan las expresiones para insertar valores, obtenidos con Java,directamente a la salida que se envía al cliente o solicitante.Tiene dos sintaxis:<%=expresiónJava%>(Note el signo igual (=) que acompaña justo detrás del inicio de código JSP yasegúrese que dicho signo acompaña al de porcentaje (%)).Existe otra sintaxis que es la siguienteCualquiera de las dos sintaxis se corresponde con una expresión en JSP. ¿Cómofuncionan las expresiones?. Pues muy sencillo, la expresión es evaluada en el Motorde JSP, se obtiene un valor de la expresión y éste se sustituye justo donde se utiliza.Veamos un ejemplo sencillo, abrimos una nueva sesión de NetBeans 6.9, hacemosNuevo Proyecto, Java Web, Web Application y le damos nombre expresiones1,
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comcuando NetBeans 6.9 nos muestre la plantilla del archivo index.jsp lo cambiamos poreste otro código.En el código anterior, en la línea 19 tenemos una expresión. Esta expresiónbásicamente consiste en crear una nueva instancia de la clase Date, con lo cual laexpresión new java.util.Date() producirá una llamada a la fecha del sistema por partedel Motor JSP desde el servidor, y esa fecha obtenida se sustituirá por todo lo quehay entre las etiquetas de comienzo y fin del lenguaje JSP.DECLARACIONESLas declaraciones de variables o métodos se hacen en JSP en la forma<%! declaración de variable o método; %>Note el signo (!) de admiración que acompaña justo detrás del signo porcentaje (%),allí donde comienza del código JSP.Estas variables o métodos así definidos serán globales y por tanto accesibles desdecualquier lugar de la página JSP. Hay que tener en cuenta que el servidor a través delmotor JSP transforma la página JSP en un servlet, y éste es usado por múltiplespeticiones, lo que provoca que este tipo de variables conserven su valor entresucesivas llamadas o ejecuciones. Las declaraciones se ejecutan una única vez, en laprimera llamada al servlet equivalente.En el caso de una declación múltiple,<%! variable1; [variable2;] … %>También puede inicializarse las variables en el momento de la declaración, como porejemplo:<%!int contador = 0; %>Los ocho tipos de datos primitivos incluidos en el lenguaje de programación Java quepueden declararse para una variable son: byte, short, int, long, float, double,boolean y char.(Ver http://www.codexion.com/tutorialesjava/java/nutsandbolts/datatypes.html ).También puede usarse esta otra sintaxisEjemplo1:Queremos declarar y asignar valores a tres variables numéricas a través dedeclaraciones JSP para calcular finalmente el valor medio.
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comIniciamos una nueva sesión con Netbeans IDE, abrimos un proyecto nuevo del tipo“Java Web” – “Web Application”, le damos por nombre declaraciones1 y sustituimosel archivo index.jsp por el siguiente código:En el ejemplo anterior, puede verse la declaración de las variables en la línea 17, ladeclaración del método media en la línea 21, la utilización de las variables en la línea20 y finalmente la utilización de la media en la línea 22. En los dos últimos casos ypara mostrar los valores tanto de las variables como de la media se han utilizadoexpresiones JSP. Ver Tutorial JSP(3) – Expresiones.Si ahora ejecuta el programa (Ejecutar en el menú principal o F6) aparecerá en elnavegador:<%--Document : indexCreated on : 09-dic-2007, 20:16:33Author : jtagua--%><%@page contentType="text/html" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Ejemplo Declaraciones1</title></head><body><%! double num1=2.2, num2=4.4, num3=6.0;%><h2><center>Los números a promediar son: <%=num1%>, <%=num2%> y <%=num3%><br><hr><%! public double media(double n1,double n2,double n3){ return (n1+n2+n3)/3; } %>Media = <%=media(num1,num2,num3)%></center></h2></body></html>
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comOPERADORES LOGICOSOperadores lógicos se utilizan para realizar comparaciones entre valores, numéricos ono, dando como resultado un valor booleanos (true, false). La operación lógicanegación invierte el operando, si es true lo hace false y viceversa. Si se comparannúmeros con cadenas, JavaScript intenta convertir internamente los datos. En losoperadores relacionales (>, <, >=, <=) intenta convertir los datos en tipo número. Paralos operadores de igualdad (== !=) intenta convertir los tipos de datos a cadena,número y booleano. Los operadores de identidad (===, !==) no realizan conversión detipo.Mayor que >Compara dos valores y devuelve true si el primero es mayor que el segundo. Comparatanto números como cadenas.var hoy = 4; ayer = 10, comp;comp = hoy > ayer /*comp adquiere el valor false*/Menor qué <Compara dos valores y devuelve true si el primero es mayor que el segundo. Comparatanto números como cadenas.var hoy = 4; ayer = 10, comp;comp = hoy < ayer /*comp adquiere el valor false*/Mayor o igual >=Compara dos valores y devuelve true si el primero es mayor o es igual que elsegundo. Compara tanto números como cadenas.
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comvar hoy = 4; ayer = 4, comp;comp = hoy >= ayer /*comp adquiere el valor true*/Menor o igual <=Compara dos valores y devuelve true si el primero es menor o es igual que elsegundo. Compara tanto números como cadenas.var hoy = 4; ayer = 4, comp;comp = hoy <= ayer /*comp adquiere el valor true*/Iguales ==Compara dos valores y devuelve true si ambos son iguales. Compara tanto númeroscomo cadenas.var hoy = 4; ayer = 4, comp;comp = hoy == ayer /*comp adquiere el valor true*/Idénticos ===Similar a == pero también compara el tipo de datos de los opeandos.Compara dos valores y devuelve true si el primero es mayor o es igual que elsegundo. Compara tanto números como cadenas.var hoy = 4; ayer = 4, comp;comp = hoy == ayer; /*comp adquiere el valor true*/comp = hoy === ayer /* compadquiere el valor false*/No iguales!=No idénticos !==Invierten el sentido de las comparaciones iguales == e idénticos === respectivamente.AND lógico &&Este operador se utiliza para concatenar comparaciones, es decir, para comprobarvarias condiciones. El resultado sólo será true si todas las comparaciones lo son.var op1 = 2, op2 = 50, op3 = 25, comp;comp = (op1 > op2) && (op1 < op3); /*comp
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comAdquiere el valor false */comp es false por que op1 no es mayor que op2 aunque sea mayor que op3OR lógico ||Como el anterior, sirve apra realizar comparaciones compuestas y sólo devolveráfalse cuando todas las comparaciones los sean. Es decir basta que una comparaciónsea true para que devuelva el valor true.var op1 = 2, op2 = 50, op3 = 25, comp;comp = (op1 > op2) && (op1 < op3); /*comptoma el valor true */comp es true por que op1 es menor que op3, (op1 < op3 es por tanto true)COMENTARIOS JSPCuando hablamos de comentarios en JSP tenemos que considerar básicamente doscircunstancias, a saber:1) Comentarios que aparecen como etiquetas HTML en un archivo jsp y que SÍ recibeel cliente o peticionario de la página, esto es:<!– Comentario HTML (Este comentario sí se pasa al cliente) –>esta instrucción al ser una etiqueta/marca HTML se transmitirá directamente a lapágina HTML de salida generada por el servlet asociado al JSP para enviarla al clientesolicitante. Esta instrucción es transparente para el Motor JSP.2) Comentarios escritos en Java entre los identificadores <% y %> que NO se enviaránal cliente solicitante de la página, sólo aparecen en la propia página JSP y en su servletasociado.<% // Comentario en Java de una sola línea %>o este otro<% /* Comentario en Java de una línea yotra línea,y otra línea, o muchas líneas */%>
    • Desarrollo de Aplicaciones Web con J2EEIng. Pablo Cesar Ttito C.InfomixUnitek@gmail.comOBJETOS IMPLÍCITOS JSPSon una serie de objetos internos asociados a las APIs de servlets y jsps suministradospor el contenedor jsp, que pueden ser usados en cualquier scriptlet y expresión, paraaumentar su funcionalidad. Muchos de ellos, apenas serán utilizados por el