SlideShare una empresa de Scribd logo
1 de 16
Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
Jaaaaaaaaaaaa
Desarrollo de Aplicaciones Web con J2EE
Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
TEMA Nº 3: ELEMENTOS DE JSP
PROCESAMIENTO DE JSP
Con 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. Las
páginas JSP están compuestas de código HTML/XML mezclado con etiquetas
especiales para programar scripts de servidor en sintaxis Java. Por tanto, las JSP
podremos escribirlas con nuestro editor HTML/XML habitual.
MOTORJSP
El motor de las páginas JSP está basado en los servlets de Java -programas en Java
destinados a ejecutarse en el servidor-, aunque el número de desarrolladores que
pueden afrontar la programación de JSP es mucho mayor, dado que resulta mucho
más sencillo aprender que los servlets.
En JSP creamos páginas de manera parecida a como se crean en ASP o PHP -otras
dos 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 el
servidor. Antes de que sean funcionales los archivos, el motor JSP lleva a cabo una
fase 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 se
recibe la primera solicitud de la página .jsp, aunque existe la opción de precompilar
en código para evitar ese tiempo de espera la primera vez que un cliente solicita la
página. Ejemplo de página JSP
En la imagen siguiente se puede ver un ejemplo extremadamente simple de una
página JSP y el esquema de conversión de esa página en un servlet.
Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
REREQUISITOS
Para aprender JSP, aparte de conocer HTML, será necesario comprender y tener algo
de experiencia en la programación en Java, que es un lenguaje de programación
Orientado a Objetos por completo. Una vez conocida la programación en Java se
puede estudiar por encima el sistema de Servlets, lo que nos dará una mejor idea del
funcionamiento interno del motor JSP.
Para aprender Java podemos consultar algunos enlaces del correspondiente
directorio de nuestro buscador de enlaces. Además, necesitaremos descargar e
instalar Tomcat, el contenedor de servlets usado en la referencia oficial de
implementación de JSP. Podemos acceder a un ejercicio para aprender a realizar esta
instalación, disponible también en la referencia de aprendizaje de la página de Java.
ReferenciasJSP
Hemos creado una nueva sección en nuestro directorio dedicada por completo a las
páginas JSP, que será muy interesante para todo aquel que desee profundizar en el
tema.
DIRECTIVAS JSP
Esta figura muestra lo que quizás sea la aplicación JSP más sencilla que uno podría
escribir.
Duke Dice Hello
El 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 J2EE
Ing. 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 J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
</html>
La Directiva Page
La directiva Page es una etiqueta JSP que usaremos encaso todos los ficheros fuente
JSP 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. En
este ejemplo, está directiva especifica un comentario informativo que formará parte
del fichero JSP compilado. En otros casos, podría específicar el lenguaje de script
usado en el fichero fuente JSP, los paquetes de ficheros fuentes que serán
importados, 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 buen
estilo de codificación situarlo en la parte superior del fichero. como es una etiqueta
JSP, podemos situarla antes de la etiqueta de apertura <html>tag.
La Directiva Include
La directiva include inserta el contenido de otro fichero en el fichero principal JSP,
donde está situada la directiva. Es útil para incluir informacióndecopuright, ficheros
de lenguaje de script, p cualquier cosa que podríamos querer reutilizar en otras
aplicaciones. En este ejemplo, el fichero incluido es una tabla que crea un banner
gráfico.
Podemos ver el contenido del fichero incluido viendo la página fuente del fichero
principal JSP mientras estamos ejecutando Hello, World. El fichero incluido no
contiene etiquetas <html> o <body>, porque podrían generar conflictos con las
mismas etiquetas del fichero JSP llamante.
Una Nota sobre las Etiquetas JSP
Cuando uses los ejemplos de este capítulo, recuerda que las etiquetas JSP son
sensibles 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 referencia
JSP 1.0 lanzará una excepción. Algunos de los atributos de las etiquetas toman
nombres de clases, nombres de paquetes, pathnameso otros valores también
sensibles a las mayúsculas.
¿Cómo ejecutar la aplicación de ejemplo
Las instrucciones dadas aquí usan una pathname del estilo UNIX. Si estamos
trabajando en Windows, usamo el mismo pathname pero con el separador de
directorios apropiado
Creamos el directorio (o carpeta) ../jswdk-.0/examples/jsp/tutorial/helloworld.
Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
Situamos 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 de
Sun:cd../jswdk-1.0 startserver
Abrimos un navegador Web y vamos a http://yourMachineName:8080/examples/jsp/
tutorial/helloworld/helloworld.jsp
ACCIONES
reación de acciones JSP personalizadas
Para todo aquel que haya utilizado alguna vez JSP, sabe que con la librería core de
JSLT tendremos en la mayoría de las ocasiones las herramientas necesarias para
nuestras aplicaciones, pero puede haber casos que no sean suficientes o que nos
interese crear nuestras propias etiquetas para nuestras aplicaciones. Veremos ahora
paso 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 realizar
por la aplicación.
Creación del archivo de libería, que contiene la información necesaria para que el
contenedor web pueda interpretar esa información.
IMPLEMENTACIÓN DE LA CLASE MANEJADORA
La interfaz javax.servlet.jsp.tagext.Tag es la que nos proporciona el soporte para
poder crear esta clase manejadora con los elementos mínimos necesarios. También
podríamos heredar de la clase javax.servlet.jsp.tagext.TagSupport que ya nos
proporciona 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 el
contenedor 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 que
se le pasa el objeto Tag o en su defecto Null.
Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
intdoStartTag(): Se ejecuta una vez que el contenedor detecta la etiqueta de
comienzo de la acción. Nos devolverá un número que indicará al contenedor como
tratar 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 que
evalue 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 valores
son:Tag.EVAL_PAGE, que indica que tienen que evaluar el resto de la página o el
valorTag.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 uso
de la clase JspWriter, y en concreto haciendo uso de su método getOut(). Por
mediopageContext 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 J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
ARCHIVO LIBRERÍA
Este archivo consiste en un archivo XML con extensión .tld, donde indicaremos el
conjunto 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 etiquetas
del 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 caso
2.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 cuerpo
de 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 atributo
required. Indica si el atributo es o no obligatorio
rtexprvalue. Indica si el atributo puede o no ser calculado
dinámicamente utilizando una expresión.
type. Tipo de dato del atributo (nombre cualificado de la clase). Para literales es
siempre String.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPEtaglib
PUBLIC "-//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 J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
<short-name>ejemplo</short-
name><uri>http://www.milibreria.tld</uri><description>Ejemplo de
librerí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 APLICACION
A la hora de distribuir las clases manejadoras podemos optar por tratar con los .class
o, 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 la
aplicación Web para lo cual debemos proceder de la siguiente manera según la forma
en que se distribuyan las clases:
Si las clases se distribuyen como .class, todos estos archivos deberán ser incluidos en
algún paquete dentro del directorio WEB-INFclasses de la aplicación.
Si se distribuyen como un archivo .jar, este deberá ser incluido en el directorio
WEBINFlib de la aplicación
En cuanto al archivo de librería .tld, lo más práctico es incluirlo en el .jar junto con las
clases manejadoras, aunque podemos situarlo en cualquier subdirectorio de la
aplicación (normalmente, dentro de WEB-INF).
Una vez realizadas las operaciones anteriores, para poder usar las acciones de la
librería en cualquier página JSP de la aplicación simplemente tendremos que incluir
una referencia a la librería a través de la directiva taglib. Por ejemplo para utilizar una
liberí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, pero
si estuviera situado, por ejemplo, en la ubicación WEB-
Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
INFlibreriasejemplolibreria.tld, sería necesario incluir la siguiente entrada en el
archivo 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”%>
EXPRESIONES
En 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 y
asegúrese que dicho signo acompaña al de porcentaje (%)).
Existe otra sintaxis que es la siguiente
Cualquiera de las dos sintaxis se corresponde con una expresión en JSP. ¿Cómo
funcionan las expresiones?. Pues muy sencillo, la expresión es evaluada en el Motor
de 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, hacemos
Nuevo Proyecto, Java Web, Web Application y le damos nombre expresiones1,
Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
cuando NetBeans 6.9 nos muestre la plantilla del archivo index.jsp lo cambiamos por
este otro código.
En el código anterior, en la línea 19 tenemos una expresión. Esta expresión
básicamente consiste en crear una nueva instancia de la clase Date, con lo cual la
expresión new java.util.Date() producirá una llamada a la fecha del sistema por parte
del Motor JSP desde el servidor, y esa fecha obtenida se sustituirá por todo lo que
hay entre las etiquetas de comienzo y fin del lenguaje JSP.
DECLARACIONES
Las 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 desde
cualquier lugar de la página JSP. Hay que tener en cuenta que el servidor a través del
motor JSP transforma la página JSP en un servlet, y éste es usado por múltiples
peticiones, lo que provoca que este tipo de variables conserven su valor entre
sucesivas llamadas o ejecuciones. Las declaraciones se ejecutan una única vez, en la
primera 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 por
ejemplo:
<%!int contador = 0; %>
Los ocho tipos de datos primitivos incluidos en el lenguaje de programación Java que
pueden 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 sintaxis
Ejemplo1:
Queremos declarar y asignar valores a tres variables numéricas a través de
declaraciones JSP para calcular finalmente el valor medio.
Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
Iniciamos una nueva sesión con Netbeans IDE, abrimos un proyecto nuevo del tipo
“Java Web” – “Web Application”, le damos por nombre declaraciones1 y sustituimos
el 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, la
declaración del método media en la línea 21, la utilización de las variables en la línea
20 y finalmente la utilización de la media en la línea 22. En los dos últimos casos y
para mostrar los valores tanto de las variables como de la media se han utilizado
expresiones JSP. Ver Tutorial JSP(3) – Expresiones.
Si ahora ejecuta el programa (Ejecutar en el menú principal o F6) aparecerá en el
navegador:
<%--
Document : index
Created on : 09-dic-2007, 20:16:33
Author : 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 J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
OPERADORES LOGICOS
Operadores lógicos se utilizan para realizar comparaciones entre valores, numéricos o
no, dando como resultado un valor booleanos (true, false). La operación lógica
negación invierte el operando, si es true lo hace false y viceversa. Si se comparan
números con cadenas, JavaScript intenta convertir internamente los datos. En los
operadores relacionales (>, <, >=, <=) intenta convertir los datos en tipo número. Para
los operadores de igualdad (== !=) intenta convertir los tipos de datos a cadena,
número y booleano. Los operadores de identidad (===, !==) no realizan conversión de
tipo.
Mayor que >
Compara dos valores y devuelve true si el primero es mayor que el segundo. Compara
tanto 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. Compara
tanto 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 el
segundo. Compara tanto números como cadenas.
Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
var 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 el
segundo. 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úmeros
como 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 el
segundo. Compara tanto números como cadenas.
var hoy = 4; ayer = '4', comp;
comp = hoy == ayer; /*
comp adquiere el valor true*/
comp = hoy === ayer /* comp
adquiere 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 comprobar
varias 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 J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
Adquiere el valor false */
comp es false por que op1 no es mayor que op2 aunque sea mayor que op3
OR 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ón
sea true para que devuelva el valor true.
var op1 = 2, op2 = 50, op3 = 25, comp;
comp = (op1 > op2) && (op1 < op3); /*comp
toma el valor true */
comp es true por que op1 es menor que op3, (op1 < op3 es por tanto true)
COMENTARIOS JSP
Cuando hablamos de comentarios en JSP tenemos que considerar básicamente dos
circunstancias, a saber:
1) Comentarios que aparecen como etiquetas HTML en un archivo jsp y que SÍ recibe
el 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 la
página HTML de salida generada por el servlet asociado al JSP para enviarla al cliente
solicitante. Esta instrucción es transparente para el Motor JSP.
2) Comentarios escritos en Java entre los identificadores <% y %> que NO se enviarán
al cliente solicitante de la página, sólo aparecen en la propia página JSP y en su servlet
asociado.
<% // Comentario en Java de una sola línea %>
o este otro
<% /* Comentario en Java de una línea y
otra línea,
y otra línea, o muchas líneas */%>
Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
OBJETOS IMPLÍCITOS JSP
Son una serie de objetos internos asociados a las APIs de servlets y jsps suministrados
por el contenedor jsp, que pueden ser usados en cualquier scriptlet y expresión, para
aumentar su funcionalidad. Muchos de ellos, apenas serán utilizados por el

Más contenido relacionado

La actualidad más candente

Manual completo-php-5
Manual completo-php-5Manual completo-php-5
Manual completo-php-5jjmvc2481
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itstomicx
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasosSoni BM
 
Tutorial de cómo crear una pagina web
Tutorial de cómo crear una pagina webTutorial de cómo crear una pagina web
Tutorial de cómo crear una pagina webSamuel Reyes
 
La Arquitectura De Netbeans V2
La Arquitectura De Netbeans V2La Arquitectura De Netbeans V2
La Arquitectura De Netbeans V2ralphkui
 
Programacion Web 2o dept
Programacion Web 2o deptProgramacion Web 2o dept
Programacion Web 2o deptLeonardo Moreno
 
Servlets exposicion
Servlets exposicionServlets exposicion
Servlets exposicionFlashnet S.A
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfonysymfony_bcn
 
Modelo Java Enterprise Edition
Modelo Java Enterprise EditionModelo Java Enterprise Edition
Modelo Java Enterprise EditionAraceli Justo
 
PROGRAMACION DE APPLET EN JAVA
PROGRAMACION DE APPLET EN JAVAPROGRAMACION DE APPLET EN JAVA
PROGRAMACION DE APPLET EN JAVAguestfccb3f8
 
04 taller-django
04 taller-django04 taller-django
04 taller-djangosamerscd
 
Servidor de prueba wamp
Servidor de prueba wampServidor de prueba wamp
Servidor de prueba wampedinson
 

La actualidad más candente (20)

Manualcake
ManualcakeManualcake
Manualcake
 
Manual completo-php-5
Manual completo-php-5Manual completo-php-5
Manual completo-php-5
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Tutorial de cómo crear una pagina web
Tutorial de cómo crear una pagina webTutorial de cómo crear una pagina web
Tutorial de cómo crear una pagina web
 
La Arquitectura De Netbeans V2
La Arquitectura De Netbeans V2La Arquitectura De Netbeans V2
La Arquitectura De Netbeans V2
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Programacion Web 2o dept
Programacion Web 2o deptProgramacion Web 2o dept
Programacion Web 2o dept
 
Servlets exposicion
Servlets exposicionServlets exposicion
Servlets exposicion
 
Webutil
WebutilWebutil
Webutil
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfony
 
nn
nnnn
nn
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Modelo Java Enterprise Edition
Modelo Java Enterprise EditionModelo Java Enterprise Edition
Modelo Java Enterprise Edition
 
Java script
Java scriptJava script
Java script
 
9.laravel
9.laravel9.laravel
9.laravel
 
(Desarrollo web).manual.php.5
(Desarrollo web).manual.php.5(Desarrollo web).manual.php.5
(Desarrollo web).manual.php.5
 
PROGRAMACION DE APPLET EN JAVA
PROGRAMACION DE APPLET EN JAVAPROGRAMACION DE APPLET EN JAVA
PROGRAMACION DE APPLET EN JAVA
 
04 taller-django
04 taller-django04 taller-django
04 taller-django
 
Servidor de prueba wamp
Servidor de prueba wampServidor de prueba wamp
Servidor de prueba wamp
 

Destacado

Destacado (8)

Paper c1
Paper c1Paper c1
Paper c1
 
Ebusines : Plataformas comerciales y aplicaciones Web
Ebusines : Plataformas comerciales y aplicaciones Web Ebusines : Plataformas comerciales y aplicaciones Web
Ebusines : Plataformas comerciales y aplicaciones Web
 
Mineria de datos
Mineria de datosMineria de datos
Mineria de datos
 
Sistemas de informacion gernecial
Sistemas de informacion gernecialSistemas de informacion gernecial
Sistemas de informacion gernecial
 
Caso PráCtico De Sig
Caso PráCtico De SigCaso PráCtico De Sig
Caso PráCtico De Sig
 
Memoria laboral alejandra aguilar
Memoria laboral alejandra aguilarMemoria laboral alejandra aguilar
Memoria laboral alejandra aguilar
 
E jemplo de estadia
E jemplo de estadiaE jemplo de estadia
E jemplo de estadia
 
Memoria de titulación informatica administrativa
Memoria de titulación informatica administrativaMemoria de titulación informatica administrativa
Memoria de titulación informatica administrativa
 

Similar a TEMA Nº 3: ELEMENTOS DE JSP (20)

Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xml
 
Curso Jsp Mas
Curso Jsp MasCurso Jsp Mas
Curso Jsp Mas
 
Jsp
JspJsp
Jsp
 
JSP
JSPJSP
JSP
 
Sesion06 apuntes
Sesion06 apuntesSesion06 apuntes
Sesion06 apuntes
 
Jsp
JspJsp
Jsp
 
Curso Java Avanzado 3 Js Ps
Curso Java Avanzado   3 Js PsCurso Java Avanzado   3 Js Ps
Curso Java Avanzado 3 Js Ps
 
JSP
JSPJSP
JSP
 
Resumen jee
Resumen jeeResumen jee
Resumen jee
 
Java Primeros Pasos Revista- Edición 2
Java Primeros Pasos Revista- Edición 2Java Primeros Pasos Revista- Edición 2
Java Primeros Pasos Revista- Edición 2
 
JSP
JSP JSP
JSP
 
Java Web - JSP
Java Web - JSPJava Web - JSP
Java Web - JSP
 
Guia java script
Guia java scriptGuia java script
Guia java script
 
JavaServer Page
JavaServer PageJavaServer Page
JavaServer Page
 
Lenguajes de desarrollo web
Lenguajes de desarrollo webLenguajes de desarrollo web
Lenguajes de desarrollo web
 
Lenguajes de desarrollo web
Lenguajes de desarrollo webLenguajes de desarrollo web
Lenguajes de desarrollo web
 
Java Web Lección 02 - JSP
Java Web Lección 02 - JSPJava Web Lección 02 - JSP
Java Web Lección 02 - JSP
 
Asp.net
Asp.netAsp.net
Asp.net
 
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicasASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
 
Curso Jsp
Curso JspCurso Jsp
Curso Jsp
 

Más de Anyeni Garay

DETECCIÓN FÁCIL Y BARATA DE SUSTANCIAS TÓXICAS Y ALIMENTOS EN MAL ESTADO CON ...
DETECCIÓN FÁCIL Y BARATA DE SUSTANCIAS TÓXICAS Y ALIMENTOS EN MAL ESTADO CON ...DETECCIÓN FÁCIL Y BARATA DE SUSTANCIAS TÓXICAS Y ALIMENTOS EN MAL ESTADO CON ...
DETECCIÓN FÁCIL Y BARATA DE SUSTANCIAS TÓXICAS Y ALIMENTOS EN MAL ESTADO CON ...Anyeni Garay
 
Gestión de la cadena de suministros
Gestión de la cadena de suministrosGestión de la cadena de suministros
Gestión de la cadena de suministrosAnyeni Garay
 
Cables con tecnologia swr
Cables con tecnologia swrCables con tecnologia swr
Cables con tecnologia swrAnyeni Garay
 
Planificador de Recursos Empresariales (ERP)
Planificador de Recursos Empresariales  (ERP)Planificador de Recursos Empresariales  (ERP)
Planificador de Recursos Empresariales (ERP)Anyeni Garay
 
Encriptación de datos y seguridad de los mismos
Encriptación de datos y seguridad de los mismosEncriptación de datos y seguridad de los mismos
Encriptación de datos y seguridad de los mismosAnyeni Garay
 
Computación en la Nube
Computación en la  NubeComputación en la  Nube
Computación en la NubeAnyeni Garay
 
W riticity ELECTRICIDAD INALAMRICA
W riticity ELECTRICIDAD     INALAMRICAW riticity ELECTRICIDAD     INALAMRICA
W riticity ELECTRICIDAD INALAMRICAAnyeni Garay
 
Un derivado del adn es buen conductor de la electricidad
Un derivado del adn es buen conductor de la electricidadUn derivado del adn es buen conductor de la electricidad
Un derivado del adn es buen conductor de la electricidadAnyeni Garay
 
Software para la maquetacion de publicaciones
Software para la maquetacion de publicacionesSoftware para la maquetacion de publicaciones
Software para la maquetacion de publicacionesAnyeni Garay
 
Sistema inalámbrico para transmitir energía dentro del cuerpo
Sistema inalámbrico para transmitir energía dentro del cuerpoSistema inalámbrico para transmitir energía dentro del cuerpo
Sistema inalámbrico para transmitir energía dentro del cuerpoAnyeni Garay
 
Retoques fotográficos
Retoques fotográficosRetoques fotográficos
Retoques fotográficosAnyeni Garay
 
Proyecto crowdfunding para distribuir electricidad sin cables en
Proyecto crowdfunding para distribuir electricidad sin cables enProyecto crowdfunding para distribuir electricidad sin cables en
Proyecto crowdfunding para distribuir electricidad sin cables enAnyeni Garay
 
Programas para dibujar planos
Programas para dibujar planosProgramas para dibujar planos
Programas para dibujar planosAnyeni Garay
 
Programas de dibujo libre
Programas de dibujo libreProgramas de dibujo libre
Programas de dibujo libreAnyeni Garay
 

Más de Anyeni Garay (20)

DETECCIÓN FÁCIL Y BARATA DE SUSTANCIAS TÓXICAS Y ALIMENTOS EN MAL ESTADO CON ...
DETECCIÓN FÁCIL Y BARATA DE SUSTANCIAS TÓXICAS Y ALIMENTOS EN MAL ESTADO CON ...DETECCIÓN FÁCIL Y BARATA DE SUSTANCIAS TÓXICAS Y ALIMENTOS EN MAL ESTADO CON ...
DETECCIÓN FÁCIL Y BARATA DE SUSTANCIAS TÓXICAS Y ALIMENTOS EN MAL ESTADO CON ...
 
Data warehouse
Data warehouseData warehouse
Data warehouse
 
Gestión de la cadena de suministros
Gestión de la cadena de suministrosGestión de la cadena de suministros
Gestión de la cadena de suministros
 
Erp
ErpErp
Erp
 
Data mart
Data martData mart
Data mart
 
Cables con tecnologia swr
Cables con tecnologia swrCables con tecnologia swr
Cables con tecnologia swr
 
Geolocalizacion
GeolocalizacionGeolocalizacion
Geolocalizacion
 
Planificador de Recursos Empresariales (ERP)
Planificador de Recursos Empresariales  (ERP)Planificador de Recursos Empresariales  (ERP)
Planificador de Recursos Empresariales (ERP)
 
Encriptación de datos y seguridad de los mismos
Encriptación de datos y seguridad de los mismosEncriptación de datos y seguridad de los mismos
Encriptación de datos y seguridad de los mismos
 
Computación en la Nube
Computación en la  NubeComputación en la  Nube
Computación en la Nube
 
CRM
CRMCRM
CRM
 
W riticity ELECTRICIDAD INALAMRICA
W riticity ELECTRICIDAD     INALAMRICAW riticity ELECTRICIDAD     INALAMRICA
W riticity ELECTRICIDAD INALAMRICA
 
Un derivado del adn es buen conductor de la electricidad
Un derivado del adn es buen conductor de la electricidadUn derivado del adn es buen conductor de la electricidad
Un derivado del adn es buen conductor de la electricidad
 
Super baterias
Super bateriasSuper baterias
Super baterias
 
Software para la maquetacion de publicaciones
Software para la maquetacion de publicacionesSoftware para la maquetacion de publicaciones
Software para la maquetacion de publicaciones
 
Sistema inalámbrico para transmitir energía dentro del cuerpo
Sistema inalámbrico para transmitir energía dentro del cuerpoSistema inalámbrico para transmitir energía dentro del cuerpo
Sistema inalámbrico para transmitir energía dentro del cuerpo
 
Retoques fotográficos
Retoques fotográficosRetoques fotográficos
Retoques fotográficos
 
Proyecto crowdfunding para distribuir electricidad sin cables en
Proyecto crowdfunding para distribuir electricidad sin cables enProyecto crowdfunding para distribuir electricidad sin cables en
Proyecto crowdfunding para distribuir electricidad sin cables en
 
Programas para dibujar planos
Programas para dibujar planosProgramas para dibujar planos
Programas para dibujar planos
 
Programas de dibujo libre
Programas de dibujo libreProgramas de dibujo libre
Programas de dibujo libre
 

TEMA Nº 3: ELEMENTOS DE JSP

  • 1. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com Jaaaaaaaaaaaa Desarrollo de Aplicaciones Web con J2EE
  • 2. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com TEMA Nº 3: ELEMENTOS DE JSP PROCESAMIENTO DE JSP Con 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. Las páginas JSP están compuestas de código HTML/XML mezclado con etiquetas especiales para programar scripts de servidor en sintaxis Java. Por tanto, las JSP podremos escribirlas con nuestro editor HTML/XML habitual. MOTORJSP El motor de las páginas JSP está basado en los servlets de Java -programas en Java destinados a ejecutarse en el servidor-, aunque el número de desarrolladores que pueden afrontar la programación de JSP es mucho mayor, dado que resulta mucho más sencillo aprender que los servlets. En JSP creamos páginas de manera parecida a como se crean en ASP o PHP -otras dos 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 el servidor. Antes de que sean funcionales los archivos, el motor JSP lleva a cabo una fase 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 se recibe la primera solicitud de la página .jsp, aunque existe la opción de precompilar en código para evitar ese tiempo de espera la primera vez que un cliente solicita la página. Ejemplo de página JSP En la imagen siguiente se puede ver un ejemplo extremadamente simple de una página JSP y el esquema de conversión de esa página en un servlet.
  • 3. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com REREQUISITOS Para aprender JSP, aparte de conocer HTML, será necesario comprender y tener algo de experiencia en la programación en Java, que es un lenguaje de programación Orientado a Objetos por completo. Una vez conocida la programación en Java se puede estudiar por encima el sistema de Servlets, lo que nos dará una mejor idea del funcionamiento interno del motor JSP. Para aprender Java podemos consultar algunos enlaces del correspondiente directorio de nuestro buscador de enlaces. Además, necesitaremos descargar e instalar Tomcat, el contenedor de servlets usado en la referencia oficial de implementación de JSP. Podemos acceder a un ejercicio para aprender a realizar esta instalación, disponible también en la referencia de aprendizaje de la página de Java. ReferenciasJSP Hemos creado una nueva sección en nuestro directorio dedicada por completo a las páginas JSP, que será muy interesante para todo aquel que desee profundizar en el tema. DIRECTIVAS JSP Esta figura muestra lo que quizás sea la aplicación JSP más sencilla que uno podría escribir. Duke Dice Hello El 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>
  • 4. Desarrollo de Aplicaciones Web con J2EE Ing. 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>
  • 5. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com </html> La Directiva Page La directiva Page es una etiqueta JSP que usaremos encaso todos los ficheros fuente JSP 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. En este ejemplo, está directiva especifica un comentario informativo que formará parte del fichero JSP compilado. En otros casos, podría específicar el lenguaje de script usado en el fichero fuente JSP, los paquetes de ficheros fuentes que serán importados, 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 buen estilo de codificación situarlo en la parte superior del fichero. como es una etiqueta JSP, podemos situarla antes de la etiqueta de apertura <html>tag. La Directiva Include La directiva include inserta el contenido de otro fichero en el fichero principal JSP, donde está situada la directiva. Es útil para incluir informacióndecopuright, ficheros de lenguaje de script, p cualquier cosa que podríamos querer reutilizar en otras aplicaciones. En este ejemplo, el fichero incluido es una tabla que crea un banner gráfico. Podemos ver el contenido del fichero incluido viendo la página fuente del fichero principal JSP mientras estamos ejecutando Hello, World. El fichero incluido no contiene etiquetas <html> o <body>, porque podrían generar conflictos con las mismas etiquetas del fichero JSP llamante. Una Nota sobre las Etiquetas JSP Cuando uses los ejemplos de este capítulo, recuerda que las etiquetas JSP son sensibles 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 referencia JSP 1.0 lanzará una excepción. Algunos de los atributos de las etiquetas toman nombres de clases, nombres de paquetes, pathnameso otros valores también sensibles a las mayúsculas. ¿Cómo ejecutar la aplicación de ejemplo Las instrucciones dadas aquí usan una pathname del estilo UNIX. Si estamos trabajando en Windows, usamo el mismo pathname pero con el separador de directorios apropiado Creamos el directorio (o carpeta) ../jswdk-.0/examples/jsp/tutorial/helloworld.
  • 6. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com Situamos 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 de Sun:cd../jswdk-1.0 startserver Abrimos un navegador Web y vamos a http://yourMachineName:8080/examples/jsp/ tutorial/helloworld/helloworld.jsp ACCIONES reación de acciones JSP personalizadas Para todo aquel que haya utilizado alguna vez JSP, sabe que con la librería core de JSLT tendremos en la mayoría de las ocasiones las herramientas necesarias para nuestras aplicaciones, pero puede haber casos que no sean suficientes o que nos interese crear nuestras propias etiquetas para nuestras aplicaciones. Veremos ahora paso 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 realizar por la aplicación. Creación del archivo de libería, que contiene la información necesaria para que el contenedor web pueda interpretar esa información. IMPLEMENTACIÓN DE LA CLASE MANEJADORA La interfaz javax.servlet.jsp.tagext.Tag es la que nos proporciona el soporte para poder crear esta clase manejadora con los elementos mínimos necesarios. También podríamos heredar de la clase javax.servlet.jsp.tagext.TagSupport que ya nos proporciona 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 el contenedor 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 que se le pasa el objeto Tag o en su defecto Null.
  • 7. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com intdoStartTag(): Se ejecuta una vez que el contenedor detecta la etiqueta de comienzo de la acción. Nos devolverá un número que indicará al contenedor como tratar 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 que evalue 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 valores son:Tag.EVAL_PAGE, que indica que tienen que evaluar el resto de la página o el valorTag.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 uso de la clase JspWriter, y en concreto haciendo uso de su método getOut(). Por mediopageContext 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; } }
  • 8. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com ARCHIVO LIBRERÍA Este archivo consiste en un archivo XML con extensión .tld, donde indicaremos el conjunto 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 etiquetas del 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 caso 2.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 cuerpo de 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 atributo required. Indica si el atributo es o no obligatorio rtexprvalue. Indica si el atributo puede o no ser calculado dinámicamente utilizando una expresión. type. Tipo de dato del atributo (nombre cualificado de la clase). Para literales es siempre String. <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPEtaglib PUBLIC "-//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>
  • 9. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com <short-name>ejemplo</short- name><uri>http://www.milibreria.tld</uri><description>Ejemplo de librerí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 APLICACION A la hora de distribuir las clases manejadoras podemos optar por tratar con los .class o, 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 la aplicación Web para lo cual debemos proceder de la siguiente manera según la forma en que se distribuyan las clases: Si las clases se distribuyen como .class, todos estos archivos deberán ser incluidos en algún paquete dentro del directorio WEB-INFclasses de la aplicación. Si se distribuyen como un archivo .jar, este deberá ser incluido en el directorio WEBINFlib de la aplicación En cuanto al archivo de librería .tld, lo más práctico es incluirlo en el .jar junto con las clases manejadoras, aunque podemos situarlo en cualquier subdirectorio de la aplicación (normalmente, dentro de WEB-INF). Una vez realizadas las operaciones anteriores, para poder usar las acciones de la librería en cualquier página JSP de la aplicación simplemente tendremos que incluir una referencia a la librería a través de la directiva taglib. Por ejemplo para utilizar una liberí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, pero si estuviera situado, por ejemplo, en la ubicación WEB-
  • 10. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com INFlibreriasejemplolibreria.tld, sería necesario incluir la siguiente entrada en el archivo 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”%> EXPRESIONES En 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 y asegúrese que dicho signo acompaña al de porcentaje (%)). Existe otra sintaxis que es la siguiente Cualquiera de las dos sintaxis se corresponde con una expresión en JSP. ¿Cómo funcionan las expresiones?. Pues muy sencillo, la expresión es evaluada en el Motor de 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, hacemos Nuevo Proyecto, Java Web, Web Application y le damos nombre expresiones1,
  • 11. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com cuando NetBeans 6.9 nos muestre la plantilla del archivo index.jsp lo cambiamos por este otro código. En el código anterior, en la línea 19 tenemos una expresión. Esta expresión básicamente consiste en crear una nueva instancia de la clase Date, con lo cual la expresión new java.util.Date() producirá una llamada a la fecha del sistema por parte del Motor JSP desde el servidor, y esa fecha obtenida se sustituirá por todo lo que hay entre las etiquetas de comienzo y fin del lenguaje JSP. DECLARACIONES Las 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 desde cualquier lugar de la página JSP. Hay que tener en cuenta que el servidor a través del motor JSP transforma la página JSP en un servlet, y éste es usado por múltiples peticiones, lo que provoca que este tipo de variables conserven su valor entre sucesivas llamadas o ejecuciones. Las declaraciones se ejecutan una única vez, en la primera 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 por ejemplo: <%!int contador = 0; %> Los ocho tipos de datos primitivos incluidos en el lenguaje de programación Java que pueden 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 sintaxis Ejemplo1: Queremos declarar y asignar valores a tres variables numéricas a través de declaraciones JSP para calcular finalmente el valor medio.
  • 12. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com Iniciamos una nueva sesión con Netbeans IDE, abrimos un proyecto nuevo del tipo “Java Web” – “Web Application”, le damos por nombre declaraciones1 y sustituimos el 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, la declaración del método media en la línea 21, la utilización de las variables en la línea 20 y finalmente la utilización de la media en la línea 22. En los dos últimos casos y para mostrar los valores tanto de las variables como de la media se han utilizado expresiones JSP. Ver Tutorial JSP(3) – Expresiones. Si ahora ejecuta el programa (Ejecutar en el menú principal o F6) aparecerá en el navegador: <%-- Document : index Created on : 09-dic-2007, 20:16:33 Author : 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>
  • 13. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com OPERADORES LOGICOS Operadores lógicos se utilizan para realizar comparaciones entre valores, numéricos o no, dando como resultado un valor booleanos (true, false). La operación lógica negación invierte el operando, si es true lo hace false y viceversa. Si se comparan números con cadenas, JavaScript intenta convertir internamente los datos. En los operadores relacionales (>, <, >=, <=) intenta convertir los datos en tipo número. Para los operadores de igualdad (== !=) intenta convertir los tipos de datos a cadena, número y booleano. Los operadores de identidad (===, !==) no realizan conversión de tipo. Mayor que > Compara dos valores y devuelve true si el primero es mayor que el segundo. Compara tanto 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. Compara tanto 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 el segundo. Compara tanto números como cadenas.
  • 14. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com var 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 el segundo. 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úmeros como 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 el segundo. Compara tanto números como cadenas. var hoy = 4; ayer = '4', comp; comp = hoy == ayer; /* comp adquiere el valor true*/ comp = hoy === ayer /* comp adquiere 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 comprobar varias 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
  • 15. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com Adquiere el valor false */ comp es false por que op1 no es mayor que op2 aunque sea mayor que op3 OR 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ón sea true para que devuelva el valor true. var op1 = 2, op2 = 50, op3 = 25, comp; comp = (op1 > op2) && (op1 < op3); /*comp toma el valor true */ comp es true por que op1 es menor que op3, (op1 < op3 es por tanto true) COMENTARIOS JSP Cuando hablamos de comentarios en JSP tenemos que considerar básicamente dos circunstancias, a saber: 1) Comentarios que aparecen como etiquetas HTML en un archivo jsp y que SÍ recibe el 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 la página HTML de salida generada por el servlet asociado al JSP para enviarla al cliente solicitante. Esta instrucción es transparente para el Motor JSP. 2) Comentarios escritos en Java entre los identificadores <% y %> que NO se enviarán al cliente solicitante de la página, sólo aparecen en la propia página JSP y en su servlet asociado. <% // Comentario en Java de una sola línea %> o este otro <% /* Comentario en Java de una línea y otra línea, y otra línea, o muchas líneas */%>
  • 16. Desarrollo de Aplicaciones Web con J2EE Ing. Pablo Cesar Ttito C. InfomixUnitek@gmail.com OBJETOS IMPLÍCITOS JSP Son una serie de objetos internos asociados a las APIs de servlets y jsps suministrados por el contenedor jsp, que pueden ser usados en cualquier scriptlet y expresión, para aumentar su funcionalidad. Muchos de ellos, apenas serán utilizados por el