SlideShare una empresa de Scribd logo
1 de 14
TALLER DE PROYECTOS I                                                                                                                  JSTL


                                                                  Índice

Introducción a JSTL......................................................................................................................
                                                                                                                                      .....2

¿Qué es JSTL? (JSP Standard Tag Library).............................................................
                                                                                                   .......................2

¿Cuales son las ventajas de los JSTL?.........................................................................
                                                                                                            ...................2

¿Cuales son las desventajas de los JSTL?...............................................................
                                                                                                     .......................2

¿Cuál es el problema con los scriptlets JSP?.......................................................................
                                                                                                                 ............3

¿Como mejoran esta situación la librería JSTL?.........................................................
                                                                                                      .....................3

Lenguaje de expresión JSTL......................................................................................................
                                                                                                                             .......3

Instalación y configuración del JSTL........................................................................................
                                                                                                                          .........6

Librerías englobada en el JSTL(Tags)................................................................................
                                                                                                                  ..............7

           La Librería Core...........................................................................................
                                                                                                                     ........................7

           La Librería XML ...........................................................................................................
                                                                                                                                    ........9

           La Librería I18N & Formatting fmt................................................................................
                                                                                                                           ......11

           Acceso a la Base de Datos (SQL)..............................................................
                                                                                                       ......................13

Referencias....................................................................................................................................
                                                                                                                                            ..15




UNMSM- FISI                                                                                                                          PAG. 1
TALLER DE PROYECTOS I                                                                      JSTL


                                       Introducción

JSTL responde a la demanda de los desarrolladores de un conjunto de acciones JSP
personalizadas para manejar las tareas que necesitan casi todas las páginas JSP, incluyendo
procesamiento condicional, internacionalización, acceso a bases de datos y procesamiento XML.
Esto acelerará el desarrollo de JSPs más o menos eliminando la necesidad de elementos de
scripting y los inevitables y difíciles de encontrar errores de sintaxis, y liberando el tiempo
anteriormente gastado en desarrollar y aprender trillones de acciones personalizadas específicas
del proyecto para estas tareas comunes.




¿Qué es JSTL? (JSP Standard Tag Library)

La librería JSTL es un componente dentro de la especificación del Java 2 Enterprise Edition
(J2EE) y es controlada por Sun MicroSystems. JSTL no es más que un conjunto de librerías de
etiquetas simples y estándares que encapsulan la funcionalidad principal que es usada
comúnmente para escribir páginas JSP. Las etiquetas JSTL están organizadas en 4 librerías:

       core: Comprende las funciones script básicas como loops, condicionales, y
        entrada/salida.
       xml: Comprende el procesamiento de xml y para XML-Transformation.
       fmt: Comprende la internacionalización y formato de valores como de moneda y fechas.
       sql: Comprende el acceso a base de datos.


¿Cuales son las ventajas de los JSTL?

       Acelera el desarrollo de JSPs eliminando la necesidad de elementos scrpting y los
        errores de sintaxis.
       Evita la escritura innecesaria de código ya preparado.

¿Cuales son las desventajas de los JSTL?

       Los JSTL pueden agregar mayor sobrecarga en el servidor. Los scriptlets y las librerías
        de etiquetas son compilados a servlets, los cuales luego son ejecutados por el
        contenedor. El código Java embebido en los scriptlets es básicamente copiado en el
        servlet resultante. En cambio, las etiquetas JSTL, causan un poco más de código en el
        servlet. En la mayoría de casos esta cantidad no es mensurable pero debe ser
        considerado.
       Los scriptlets son más potentes que las etiquetas JSTL. Si desea hacer todo en un script
        JSP pues es muy probable que insertará todo el código en Java en él. A pesar que las
        etiquetas JSTL proporciona un potente conjunto de librerías reutilizables, no puede hacer
        todo lo que el código Java puede hacer. La librería JSTL está diseñada para facilitar la
        codificación en el lado de presentación que es típicamente encontrado en la capa de
        Vista si hablamos de la arquitectura Modelo-Vista-Controlador.




UNMSM- FISI                                                                              PAG. 2
TALLER DE PROYECTOS I                                                                       JSTL


¿Cuál es el problema con los scriptlets JSP?

La especificación JSP ahora se ha convertido en una tecnología estándar para la creación de
sitios Web dinámicos en Java, y el problema es que han aparecido algunas debilidades:

       La recuperación de objetos fuera del HTTP Request y Session es complicada. Es
        necesario hacer el Casting de objetos y esto ocasiona que tengamos que importar más
        Clases en los JSP.
       El código Java embebido en scriptlets es desordenado.
       Un programador que no conoce Java no puede modificar el código Java embebido,
        anulando uno de los mayores beneficios de los JSP: permitir a los diseñadores y
        personas que escriben la lógica de presentación que actualicen el contenido de la
        página.
       El código de Java dentro de scriptlets JSP no pueden ser reutilizados por otros JSP, por
        lo tanto la lógica común termina siendo re-implementado en múltiples páginas.

¿Como mejoran esta situación la librería JSTL?

Esto se da a través de:

       Las etiquetas JSTL encapsulan la lógica como el formato de fechas y números. Usando
        los scriptlets JSP, esta misma lógica necesitaría ser repetida en todos los sitios donde es
        usada, o necesitaría ser movida a Clases de ayuda.
       Debido a que las etiquetas JSTL son XML, estas etiquetas se integran limpia y
        uniformemente a las etiquetas HTML.
       Las 4 librerías de etiquetas JSTL incluyen la mayoría de funcionalidad que será
        necesaria en una página JSP. Las etiquetas JSTL son muy sencillas de usarlas para
        personas que no conocen de programación, a lo mucho necesitarán conocimientos de
        etiquetas del estilo HTML.
       Las etiquetas JSTL pueden referenciar objetos que se encuentren en los ambientes
        Request y Session sin conocer el tipo del objeto y sin necesidad de hacer el Casting.

    Los JSP EL (Expression Language) facilitan las llamadas a los métodos Get y Set en los
    objetos Java. Esto no es posible en la versión JSP 1.2, pero ahora está disponible en JSP
    2.0. EL es usado extensamente en la librería JSTL.

Lenguaje de expresión JSTL

Es un lenguaje para acceder a datos de varias fuentes en tiempo de ejecución. Su sintaxis es
considerablemente más amigable que la de Java, que es el único lenguaje soportado
directamente por la especificación JSP 1.2. Todas las acciones JSTL reconocen expresiones EL
(Lenguaje de Expresiones) en sus valores de atributos, y se podrían desarrollar acciones
personalizadas para que hicieran lo mismo. Se espera que EL sea incorporado dentro de la
próxima versión de la especificación JSP para mejorar su uso para acceder a datos sobre el
lenguaje Java. Si es así, podremos usar expresiones EL en un valor de atributo de una acción, o
incluso en una plantilla de texto.

EL toma prestada la sintaxis de JavaScript para acceder a estructuras de datos tanto como
propiedades de un objeto (con el operador “.”) como con elementos con nombres de un array
(con el operador [quot;nombrequot;]). Las propiedades de los componentes JavaBeans y las entradas
java.util.Map, que usan la clave como nombre de propiedad, pueden ser accedidas de esta
forma. Aquí tenemos algunos ejemplos:

${myObj.myProperty}$
${myObj[quot;myPropertyquot;]}$
${myObj[varWithTheName]}$




UNMSM- FISI                                                                                PAG. 3
TALLER DE PROYECTOS I                                                                         JSTL


Como se observa en el ejemplo anterior, una expresión EL siempre debe estar encerrada entre
los caracteres ${y} $. Las dos primeras expresiones acceden a una propiedad llamada
myProperty en un objeto representado por una variable llamada myObj. La tercera expresión
accede a una propiedad con un nombre contenido en un variable, esta sintaxis se puede utilizar
con cualquier expresión que evalúe el nombre de la propiedad.

El operador de acceso a array también se usa para datos representados como una colección de
elementos indexados, como un array Java o una java.util.List:

                           ${myList[2]}$
                           ${myList[aVar + 1]}$

Además de los operadores de propiedad y elemento array y los operadores aritméticos,
relacionales, y lógicos, hay un operador especial para comprobar si un objeto está quot;vacíoquot; o no
puede ser usado en una expresión EL.

La siguiente tabla lista todos los operadores:

     Operador                                        Descripción
.                     Accede a una propiedad
[]                    Accede a un elemento de un array/lista
()                    Agrupa una sub-expresión
+                     Suma
-                     Resta o negación de un número
/ o div               División
% o mod               Módulo (resto)
== o eq               Comprueba Igualdad
!= o ne               Comprueba desigualdad
< o lt                Comprueba menor que
> o gt                Comprueba mayor que
<= o le               Comprueba menor o igual que
>= o gt               Comprueba mayor o igual que
&& o and              Comprueba AND lógico
|| o or               Comprueba OR lógico
! o not               Complemento binario booleano
empty                 Comprueba un valor vacío (null, string vacío, o una colección vacía)

Lo que no encontraremos en EL son sentencias como asignaciones, if/else, o while. Para este
tipo de funcionalidades en JSP se usan los elementos Action. EL no está pensado para utilizarse
como un lenguaje de programación de propósito general, sólo un lenguaje de acceso a datos.

Por supuesto, los literales y las variables, también son parte del lenguaje. EL proporciona los
siguientes literales, similares a los que proporcionan JavaScript, Java, y otros lenguajes
similares:

    Tipo de Literal                                      Descripción
                            Va encerrada con comillas simples o dobles. Una comilla del mismo
                            tipo dentro del string puede ser escapada con una barra invertida: ('
String                      en un string encerrado con comillas simples; quot; en un string encerrado
                            con comillas dobles). El carácter de barra invertida debe se escapado
                            como  en ambos casos.
Integer                     Un signo opcional (+ o -) seguido por dígitos entre 0 y 9.
                            Lo mismo que un literal entero, excepto que usa un punto como
Coma Floating               separador de la parte fraccional y que se puede especificar un
                            exponente con e o E, seguido por un literal entero.
Boolean                     true o false.
Null                        null.




UNMSM- FISI                                                                                  PAG. 4
TALLER DE PROYECTOS I                                                                      JSTL


Cualquier objeto en uno de los ámbitos de JSP (página, solicitud, sesión o aplicación) se puede
utilizar como una variable en una expresión EL. Por ejemplo, si tenemos un bean con una
propiedad firstName en el ámbito de la solicitud bajo el nombre customer, esta expresión EL
representa el valor de la propiedad firstName del bean.

${customer.firstName}

EL también hace que la información de la solicitud y la información general del contenedor esté
disponible como un conjunto de variables implícitas:

         Variable                                      Descripción
param                    Map que mapea nombres de parámetros univaluados a String.
                         Una colección de todos los valores de los parámetros de la solicitud
paramValues
                         como un array de valores string por cada parámetro.
                         Una colección de todas las cabeceras de solicitud como un sólo valor
header
                         string por cada cabecera.
                         Una colección de todos los valores de cabecera de la solicitud como
headerValues
                         un array de valores string por cada cabecera.
                         Una colección con todas las cookies de la solicitud en un sólo ejemplar
cookie
                         de javax.servlet.http.Cookie por cada cokkie.
                         Una colección de todos los parámetros de inicialización de la
initParams
                         aplicación en un sólo valor string por cada parámetro.
pageContext              Un ejemplar de la clase javax.servlet.jspPageContext.
pageScope                Una colección de todos los objetos en el ámbito de la página.
requestScope             Una colección de todos los objetos en el ámbito de la solicitud.
sessionScope             Una colección de todos los objetos en el ámbito de la sesión.
applicationScope         Una colección de todos los objetos en el ámbito de la aplicación.

Las cinco primeras variables implícitas de la tabla nos ofrecen acceso a los valores de
parámetros, cabeceras y cookies de la solicitud actual. Se muestra en el siguiente ejemplo, cómo
acceder a un parámetro de solicitud llamado listType y a la cabecera .

User-Agent:

                                ${param.listType}

                                ${header['User-Agent']}

Este ejemplo se muestra para usar de un modo adecuado la sintaxis de array para la cabecera,
porque el nombre incluye un guión; con la sintaxis de propiedad, sería interpretado como la
expresión variable header.User menos el valor de una variable llamada Agent.

La variable initParameter proporciona acceso a los parámetros de inicialización que se definen en
el fichero web.xml de la aplicación. La variable pageContext tiene varias propiedades que
proporcionan acceso al objeto servlet que representa la solicitud, la respuesta, la sesión y la
aplicación, etc.

Las cuatro últimas variables son colecciones que contienen todos los objetos de cada ámbito
específico. Podemos usarlas para limitar la búsqueda de un objeto en sólo un ámbito en lugar de
buscar en todos ellos, lo que está por defecto si no se especifica ningún ámbito. En otras
palabras, si hay un objeto llamado customer en el ámbito de sesión, estas dos primeras
expresiones encuentran el mismo objeto, pero la tercera vuelve vacía:

                          ${customer}
                          ${sessionScope.customer}
                          ${requestScope.customer}




UNMSM- FISI                                                                              PAG. 5
TALLER DE PROYECTOS I                                                                       JSTL


Todas las acciones JSTL aceptan expresiones EL como valores de atributo, para todos los
atributos excepto para var y scope, porque estos valores de atributo podrían usarse para
chequear el tipo en el momento de la traducción en una futura versión. Hay un atributo de una
acción JSTL adicional que no toma un valor de expresión EL, pero sólo se usa en la librería XML,
por eso lo ignoraremos por ahora. Se pueden usar una o más expresiones EL en el mismo valor
de atributo, y el texto fijo y las expresiones EL se pueden mezclar en el mismo valor de atributo:

                     First name: &lt;c:out value=quot;${customer.firstName}quot; /&gt;
                     &lt;c:out value=quot;First name: ${customer.firstName}quot; /&gt;

Ahora veamos unos ejemplos de su uso:

   Acceso a atributos de objetos Java en expresiones:
      ${user.firstName} = user.getFirstName()
        ${user.address.city} = user.getAddress().getCity()
        ${user.preferencesMap[quot;shippingquot;]} = user.getPreferencesMap().get(quot;shippingquot;)
        ${user.preferencesList[0]} = user.getPreferencesList().get(0)
   Unificando el tratamiento de los operadores: . y []
        ${user.firstName} es equivalente a ${user[quot;firstNamequot;]}
        ${user.preferencesMap[quot;shippingquot;]} es equivalente a ${user.preferencesMap.shipping}
   Con operadoradores: []
        ${user.preferencesMap[quot;book.fictionquot;]} es equivalente a
        user.getPreferencesMap().get(quot;book.fictionquot;)
        ${user.preferencesMap[product.category]} es equivalente a
        user.getPreferencesMap().get(product.getCategory())

Instalación y configuración del JSTL

La librería JSTL es distribuida como un conjunto de archivos JAR que simplemente tenemos que
agregarlo en el classpath del contenedor de servlets.

1. Debemos usar un contenedor de servlets compatible con la ve rsión JSP 2.0 para usar el JSTL
1.1. El Apache Tomcat 5.0 [http://jakarta.apache.org/tomcat/] por ejemplo. En caso contrario, es
posible usar el JSTL 1.0 en un contenedor que soporte por lo menos el JSP 1.2 y servlets 2.3.

2. Descargar la implementación JSTL de la página de proyecto Jakarta TagLibs
[http://jakarta.apache.org/taglibs/binarydist.html]. La distribución binaria viene empaquetada como
.zip o tar.gz. Desempaquete estos archivos en un directorio temporal.

3. Del directorio temporal, copie todos los archivos JAR que se encuentran en jakarta-
taglibs/standard-1.0/lib al directorio /WEB-INF/lib de su aplicación Web. Esto incluirá los JAR
específicos del JSTL así como también los otros JAR que depende de él.

4. Finalmente, importamos en las páginas JSP cada librería JSTL que la página necesitará. Eso
lo hacemos agregando las directivas taglib apropiadas al inicio de la página JSP. Las directivas
son:

core: <%@ taglib prefix=quot;cquot; uri=quot;http://java.sun.com/jstl/corequot; %>
xml: <%@ taglib prefix=quot;xquot; uri=quot;http://java.sun.com/jstl/xmlquot; %>
fmt: <%@ taglib prefix=quot;fmtquot; uri=quot;http://java.sun.com/jstl/fmtquot; %>
sql: <%@ taglib prefix=quot;sqlquot; uri=quot;http://java.sun.com/jstl/sqlquot; %>



Ahora, creamos una página JSP y probamos algunas etiquetas simples para asegurarnos que la
configuración del JSTL está bien hecha.


CODE




UNMSM- FISI                                                                                PAG. 6
TALLER DE PROYECTOS I                                                                       JSTL


    1    <%@ taglib prefix=quot;cquot; uri=quot;http://java.sun.com/jstl/corequot; %>
    2
    3    Setting the value: quot;Hello World!quot;
    4    <c:set var=quot;helloquot; value=quot;Hello World!quot;/>
    5    <p/>
    6    <c:out value=quot;${hello}quot;/>


 Librerías englobada en el JSTL(Tags)

 JSTL 1.0 especifica un conjunto de librerías de etiquetas basadas en el API JSP 1.2. Hay cuatro
 librerías de etiquetas independientes, cada una contiene acciones personalizadas dirigidas a un
 área funcional específica. Esta tabla lista cada librería con su prefijo de etiqueta recomendado y
 la URI por defecto:


                                        Descripción                Prefijo
                                  Core                         c
                                  XML Processing               x
                                  I18N & Formatting            fmt
                                  Database Access              sql

          La Librería Core

 Contiene acciones para las tareas rutinarias, como incluir o excluir una parte de una página
 dependiendo de una condición en tiempo de ejecución, hacer un bucle sobre una colección de
 ítems, manipular URLs para seguimiento de sesión, y la correcta interpretación del recurso
 objetivo, así como acciones para importar contenido de otros recursos y redireccionar la
 respuesta a una URL diferente.
                                          JSTL core

                          Area        Función               Tags             Prefijo
                                                       remove
                                 Variable de soporte
                                                       set

                                                       choose
                                                       when
                                                       otherwise
                                 Flow control
                                                       forEach
                                                       forTokens
                                                       if
                         Core                                                   c
                                                       import
                                                       param
                                                       redirect
                                 URL management
                                                       param
                                                       url
                                                        param
                                                       catch
                                 Miscellaneous
                                                       out

 A continuación se describe cada tags según el tipo de función que desempeña:

 Variable de soporte
Resumen de etiquetas




 UNMSM- FISI                                                                               PAG. 7
TALLER DE PROYECTOS I                                                                    JSTL



               Elimina una variable (desde un ámbito particular, si se especifica).
remove         A continuación se muestra un ejemplo del remove:
               <c:remove var=quot;cartquot; scope=quot;session”/>
               Establece el resultado de una evaluación de expresión en un 'ámbito'.
               EL JSP la variable o propiedad se puede establecer, ya sea el atributo de valor:
               <c:set var=quot;fooquot; scope=quot;sessionquot; value=quot;...quot;/>
               O del cuerpo de la etiqueta
               <c:set var=quot;fooquot;>
set
                ...
               </c:set>
               Por ejemplo, los siguientes conjuntos una variable llamada EL BOOKID con el valor
               del parámetro de solicitud de quitar el nombre:
               <c:set var=quot;bookIdquot; value=quot;${param.Remove}quot;/>


 Control de flujo
Resumen de etiquetas
               Es una etiqueta de condiciona simple que establece un contexto mutuamente
               excluyentes para las operaciones condicionales, marcado por <when> y <otherwise
               >
               Por ejemplo, el código de ejemplo siguiente muestra cómo hacer que el texto sobre
               la base de un cliente de la categoría de miembros.
               <c:choose>
                 <c:when test=quot;${customer.category == 'trial'}quot; >
choose            ...
                 </c:when>
                 <c:when test=quot;${customer.category == 'member'}quot; >
                  ...
                 <c:otherwise>
                  ...
                 </c:otherwise>
               </c:choose>
               Es una etiqueta condicional simple, que evalúa si la condición suministrada es
               verdadera y, opcionalmente, expone una variable booleana de secuencias de
               comandos que representan a la evaluación de esta condición.
               Un ejemplo de esta etiqueta se muestra a continuación:
if
               <c:if test=quot;${!empty param.Add}quot;>
                <c:set var=quot;bidquot; value=quot;${param.Add}quot;/>
                ...
               </c:if>
               La etiqueta básica de iteración, acepta muchos tipos diferentes de subconjuntos de
               apoyo y otras funciones.
               Ejemplo:
forEach        <c:forEach var=quot;itemquot; items=quot;${sessionScope.cart.items}quot;>
                ...
                ...
               </c:forEach>
forTokens      Itera más fichas, separados por el suministrado delimitado.
               Sub etiqueta de <choose> que sigue a la etiqueta<when> y funciona sólo si todas
               las condiciones previas para evaluar son «falsos».
otherwise      <c:otherwise>
                  ...
                 </c:otherwise>
when           Sub etiqueta de <choose> que incluye su cuerpo si su condición evaluada es
               'verdadera.'



 UNMSM- FISI                                                                             PAG. 8
TALLER DE PROYECTOS I                                                                     JSTL



               <c:when test=quot;quot; >
                 ...
                </c:when>


URL management
Resumen de etiquetas
               Recupera un absoluto o relativo URL y expone su contenido, ya sea a la página,
import         una cadena en 'var', o en un lector de 'varReader ».
               <c:import url=quot;/books. mlquot; var=quot;xmlquot; />
                                       x
               Añade un parámetro para que contengan una quot;importaciónquot; de la etiqueta URL.
               <c:url var=quot;urlquot; value=quot;/catalogquot; >
param
                <c:param name=quot;Addquot; value=quot;${bookId}quot; />
               </c:url>
redirect       Redirige a una nueva URL.
url            Crea una URL con parámetros de consulta facultativa.



 Varios
Resumen de etiquetas
               Captura cualquier Throwable que se produce en su cuerpo y, opcionalmente, se
catch
               expone.
               Al igual que <% = ... >, Pero para las expresiones.
out            <c:out value=quot;valuequot; [escapeXml=quot;{true|false}quot;]
                [default=quot;defaultValuequot;] />



          La Librería XML

Contiene acciones para procesamiento XML, incluido validar un documento XML y transformarlo
usando XSLT. También proporciona acciones para extraer parte de un documento XML validado,
hacer bucles sobre un conjunto de nodos, y procesamiento condicional basado en valores de
nodos.

                         Area       Función          Etiqueta        Prefijo
                                                 out
                                Núcleo           parse
                                                 set
                                              choose
                                                 when
                         XML                                            x
                             Flujo de control otherwise
                                              forEach
                                              if
                                                 transform
                                Transformación
                                                   param

A continuación se describe cada etiqueta según el tipo de función que desempeña:

Núcleo
Resumen de etiquetas
out            Al igual que <% = ... >, Pero para las expresiones XPath.
parse          Analiza el contenido en XML de 'fuente' atributo o 'cuerpo'



UNMSM- FISI                                                                             PAG. 9
TALLER DE PROYECTOS I                                                                    JSTL



set           Guarda el resultado de una expresión XPath evaluada en un 'ámbito'


Flujo de Control
Resumen de etiquetas
              Es una etiqueta de condiciona simple que establece un contexto mutuamente
choose        excluyentes para las operaciones condicionales, marcado por <when> y <otherwise
              >
              Etiqueta XML condicional, que evalua su cuerpo, si la expresión XPath
if
              suministrados es quot;verdaderoquot; ,como un booleano.
forEach       Es una etiqueta de iteración XML .
              Sub etiqueta de <choose> que sigue a la etiqueta<when> y funciona sólo si todas
otherwise
              las condiciones previas para evaluar son «falsos».
              Sub etiqueta de <choose> que incluye su cuerpo si su condición evaluada es
when
              'verdadera.'


La página JSP bookcatalog.jsp utiliza la etiqueta foreach para mostrar todos los libros figura
BookList en la forma siguiente:

Code:

                    <x:forEach var=quot;bookquot;
                     select=quot;$applicationScope:booklist/books/*quot;>
                     <tr>
                      <c:set var=quot;bookIdquot;>
                        <x:out select=quot;$book/@idquot;/>
                      </c:set>=
                      <td bgcolor=quot;#ffffaaquot;>
                        <c:url var=quot;urlquot;
                        value=quot;/bookdetailsquot; >
                          <c:param name=quot;bookIdquot; value=quot;${bookId}quot; />
                          <c:param name=quot;Clearquot; value=quot;0quot; />
                        </c:url>
                        <a href=quot;${url}quot;>
                        <strong><x:out select=quot;$book/titlequot;/>&nbsp;
                        </strong></a></td>
                      </tr>
                     <tr>
                      <td bgcolor=quot;#ffffffquot;>
                      &nbsp;&nbsp;<fmt:message key=quot;Byquot;/> <em>
                        <x:out select=quot;$book/firstnamequot;/>&nbsp;
                        <x:out select=quot;$book/surnamequot;/></em></td></tr>
                    </x:forEach>




Transformación

Resumen de etiquetas
              Añade un parámetro para que contenga una quot;transformarquot; de la etiqueta de
param
              transformadores
transform     Lleva a cabo una transformación de un documento XML fuente y una hoja de



UNMSM- FISI                                                                           PAG. 10
TALLER DE PROYECTOS I                                                                     JSTL



               estilos XSLT.




        La Librería I18N & Formatting fmt

Comprende la internacionalización y formato de valores como de moneda y fechas.
Las grandes sites normalmente necesitan complacer a los visitantes de todo el mundo, y servir el
contenido sólo en un idioma no es suficiente. Para desarrollar una site que proporcione una
elección de idiomas, tenemos dos opciones:
        Escribir un conjunto de páginas para cada idioma.
        Escribir un conjunto compartido de páginas que ponga el contenido en diferentes idiomas
         desde fuentes externas.


Resumen de etiquetas
                    Establece    la    localización   por   omisión    para    el
                    especificado ámbito de aplicación. Esto anulará la browserbased
                    local.
setLocale
                    <fmt:setLocale scope=quot;sessionquot;
                    value=quot;fr_CAquot;>

                    Establece      el    contexto      de    localización, basados  en
                    especificada en el paquete de recursos, para ser utilizado dentro de
                    el cuerpo el contenido de esta etiqueta.
bundle
                    <fmt:bundle basename=quot;resourcesquot;
                    prefix=quot;label.quot;>
                    <fmt:message key=quot;userIdquot;/>
                    <fmt:bundle>
                    Crea        y        almacena      en      un     alcance
                    variable, un contexto de localización basado en el especificado
                    paquete de recursos.
setBundle
                    <fmt:setBundle
                    basename=quot;ApplicationResources”
                    var=quot;strutsMessagesquot;
                    scope=quot;applicationquot;/>
                    Parece        un       mensaje       localizado en   un
                    paquete de recursos. Esta etiqueta puede contener anidadas
                    <fmt:param> etiquetas para especificar formato del mensaje
                    la sustitución de valores. El mensaje resultante se imprime
message
                    o almacenada en un alcance variable.

                    <fmt:message key=quot;titlequot;
                    bundle=quot;${strutsResources}quot;/>
param               Supplies a parameter for message
                    format substitution in a containing

                     <fmt:message>
                    tag. Parameters are substituted in sequential order.
                    <fmt:message key=quot;fieldRequiredquot;>
                    <fmt:param value=quot;User IDquot;/>



UNMSM- FISI                                                                            PAG. 11
TALLER DE PROYECTOS I                                                                      JSTL



                   </fmt:message>
                Encarga a utilizar JSTL
                una codificación de caracteres (véase
                http://www.iana.org/assignments/character-sets)
requestEncoding para decodificar parámetros de solicitud. Omitir un valor
                indica a utilizar la detección automática de la correcta
                codificación.
                 <fmt:requestEncoding key=quot;ISO-8859-1quot;/>


Formato de Acciones
Las acciones de formato analizan los números, monedas, porcentajes, fechas y horas.

Resumen de etiquetas
                Ajusta el tiempo especificado, zonas que se aplicarán al cuerpo anidado
                contenido. El siguiente ejemplo muestra que el tiempo zona por esta acción sólo
                ha anidado visibilidad.

                <jsp:useBean id=quot;nowquot;
                class=quot;java.util.Datequot;/>
                <fmt:timeZone
timeZone        value=quot;America/Los_Angelesquot;>
                Pacific Time:<fmt:formatDate
                type=quot;timequot; timeStyle=quot;shortquot;
                value=quot;${now}quot;/>
                </fmt:timeZone>
                <br/>
                Local Time:<fmt:formatDate type=quot;timequot;
                timeStyle=quot;shortquot; value=quot;${now}quot;/>
                Ajusta el tiempo especificado en una zona, nombre de un alcance variable o
                utilizando el intervalo de tiempo predeterminado Nombre de zona var si no se
                especifica.

setTimeZone     <fmt:setTimeZone var=quot;mtnTimequot;
                value=quot;America/Denverquot;/>
                Mountain Time: <fmt:formatDate
                type=quot;timequot; timeStyle=quot;shortquot;
                value=quot;${now}quot; timeZone=quot;${mtnTime}quot;/>
                Formatos de un número, moneda, o el porcentaje en un local con tacto y
                sensibilidad.
                El valor es el formato impreso o almacenado en una scoped variable.
formatNumber
                <fmt:formatNumber type=quot;currencyquot;
                value=quot;3.977quot;>




Formato de Fechas
Fechas y formatos son analizados utilizando el <fmt:formatDate> y <fmt:parseDate>
acciones que comparten las siguientes atributos en común.

Resumen de etiquetas
formatDate       Formatos de fecha y/o el tiempo en un local con tacto y sensibilidad. El valor es
                el formato impreso o almacenado en un alcance variable.



UNMSM- FISI                                                                             PAG. 12
TALLER DE PROYECTOS I                                                                    JSTL




               <fmt:formatDate value=quot;${now}quot;
               pattern=quot;yy-MMM-ddquot;/>
               Analiza una cadena que representa una fecha y/o tiempo en un local con tacto y
               sensibilidad. El valor es analizado impreso o almacenado en un alcance variable.

               <fmt:parseDate var=quot;bdayquot;
parseDate
               pattern=quot;MM/dd/yyquot;
               value=quot;05/10/63quot;/>
               <fmt:formatDate value=quot;${bday}quot;
               dateStyle=quot;fullquot;/>




        Acceso a la Base de Datos (SQL)


La etiqueta SQL se dispone para llevar a cabo acciones bases de datos transaccionales, las
consultas y actualizaciones, tener acceso fácilmente a los resultados de una consulta.
Comprende el acceso a base de datos.

Un sujeto de controversia es la inclusión en JSTL de acciones para acceder a bases de datos.
Alguna gente ve esto como una mala práctica y argumenta que todos los accesos a bases de
datos se deberían realizar desde componentes Java puros en una aplicación basada en MVC en
lugar de desde página JSP.

Resumen de etiquetas
                  Realiza una consulta de base de datos (por ejemplo, select). La consulta se
                 debería esperar para volver un conjunto de resultados. Esta acción puede
                 incluir cuerpo que contiene el contenido real de cadena de consulta, así como
                 <sql:param> y <sql:dateParam> etiquetas de parámetro de sustitución. Si el
                 cuerpo contiene la consulta SQL, debe aparecer antes de cualquier parámetro
                 etiquetas anidadas.
query
                 <sql:query var=quot;usersquot;>
                 SELECT * FROM users WHERE
                 last_name = quot;Burdellquot;
                 </sql:query>
                 <c:forEach var=quot;userquot;items=quot;${users.rows}quot;>
                 <c:out value=quot;${users.user_name}quot;/><br/>
                 </c:forEach>
                 Realiza una base de datos de insertar, actualizar, eliminar o otra declaración
                 (por ejemplo, una declaración DDL), que no devuelve ningún resultado. Esta
                 acción puede incluir cuerpo que contiene el contenido real de actualización de
                 la cadena, así como etiquetas para <sql:param> parámetro de sustitución. Al
                 igual que <sql:query>, el <sql:param> etiquetas debe ocurrir después de la
                 declaración de SQL si es que figura en la etiqueta.
update
                 <sql:update> cuerpo.
                 <sql:update var=quot;updateCountquot;>
                 UPDATE users SET first_name=quot;Williamquot; WHERE
                 first_name = quot;Billquot;
                 </sql:update>
                 <c:out value=quot;${updateCount} rows updated.quot;/>
transaction      Establece una base de datos de transacción para <sql:query> y <sql:update>
                 etiquetas que figuran en esta etiqueta del cuerpo. Es decir, todos los SQL
                 acciones contenidas en el cuerpo de esta etiqueta será tratada como una única



UNMSM- FISI                                                                            PAG. 13
TALLER DE PROYECTOS I                                                                    JSTL



                  transacción atómica. La transacción se ha comprometido sólo si todas las
                  declaraciones éxito. Si alguno de los contenidos de SQL acciones causan una
                  excepción, la transacción se deshace.
                  Nota: esta acción antes de restablecer el quot;auto de cometerquot;
                  ajuste después de su realización.

                  <sql:transaction>
                  <sql:update sql=quot;DELETE users WHERE
                  user_name='bsiggelkow'quot;/>
                  <sql:update sql=quot;INSERT INTO users
                  VALUES ('billsigg','Bill','Siggy')quot;/>
                  </sql:transaction>
                  Crea y almacena en una variable alcance una fuente de datos SQL. Esta
                  etiqueta no puede tener un cuerpo. O bien la fuente de datos o URL atributo
                  debe ser especificado.

                  <sql:setDataSource var=quot;testDBquot;
setDataSource     url=quot;jdbc:mysql://localhost/test,
                  com.mysql.jdbc.Driverquot;/>
                  <sql:query var=quot;usersquot;
                  dataSource=quot;${testDB}quot;>
                  SELECT * FROM users
                  </sql:query>
                  Suplentes parámetros en SQL declaración preparada marcadores de posición
                  (quot;?quot;). Esta acción sólo se puede anidar dentro de <sql:query> o <sql:update>
                  etiquetas. Si la etiqueta especifica que remite el SQL en el cuerpo, cualquier
                  <sql:param> etiquetas debe aparecer después de la SQL. Los parámetros son
                  sustituidos en orden secuencial.
param             <c:set var=quot;firstNamequot;>Bill</c:set>
                  <sql:query var=quot;usersquot;>
                  SELECT user_name, last_name
                  FROM users WHERE first_name = ?
                  <sql:param value=quot;${firstName}quot;/>
                  </sql:query>
                  Suplentes hora, fecha, hora o los parámetros en SQL declaración preparada
                  marcadores de posición. Esta acción sólo se puede anidar dentro de
                  <sql:query> o <sql:update> etiquetas. Los parámetros son sustituidos en orden
                  secuencial.

                  <fmt:parseDate var=quot;ww2Endquot;
                  pattern=quot;yyyy-MM-ddquot;
dateParam
                  value=quot;1945-09-02quot;/>
                  <sql:query var=quot;postWarBabiesquot;>
                  SELECT user_name FROM user_profile
                  WHERE birth_date > ?
                  <sql:dateParam value=quot;${ww2End}quot;
                  type=quot;datequot;/>
                  </sql:query>
Referencias

       http://www.programacion.com/java/tutorial/jstl1/2/

       http://www.programacion.com/java/tutorial/jstl1/3/

       http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSTL8.html

       http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html




UNMSM- FISI                                                                           PAG. 14

Más contenido relacionado

La actualidad más candente

Postgres programmer josue
Postgres programmer josuePostgres programmer josue
Postgres programmer josueJosué Ruiz
 
Manual.completo.oracle.9i
Manual.completo.oracle.9iManual.completo.oracle.9i
Manual.completo.oracle.9iESPE
 
Índice el Libro "Hacking Web Applications: Client-Side Attacks"
Índice el Libro "Hacking Web Applications: Client-Side Attacks"Índice el Libro "Hacking Web Applications: Client-Side Attacks"
Índice el Libro "Hacking Web Applications: Client-Side Attacks"Telefónica
 
Curso Interconexion de redes.pdf
Curso Interconexion de redes.pdfCurso Interconexion de redes.pdf
Curso Interconexion de redes.pdfjcarrey
 
Curso Interconexion de redes Soluciones.pdf
Curso Interconexion de redes Soluciones.pdfCurso Interconexion de redes Soluciones.pdf
Curso Interconexion de redes Soluciones.pdfjcarrey
 
Índice del libro "Hacking Aplicaciones Web: SQL Injection"
Índice del libro "Hacking Aplicaciones Web: SQL Injection" Índice del libro "Hacking Aplicaciones Web: SQL Injection"
Índice del libro "Hacking Aplicaciones Web: SQL Injection" Telefónica
 
Índice del libro: "Python para pentesters" [2ª Edición] de 0xWord
Índice del libro: "Python para pentesters" [2ª Edición] de 0xWordÍndice del libro: "Python para pentesters" [2ª Edición] de 0xWord
Índice del libro: "Python para pentesters" [2ª Edición] de 0xWordTelefónica
 
Índice del libro "Hacking Web Technologies"
Índice del libro "Hacking Web Technologies"Índice del libro "Hacking Web Technologies"
Índice del libro "Hacking Web Technologies"Telefónica
 
Índice de libro: "Spring Boot & Angular: Desarrollo de WebApps Seguras. Tomo ...
Índice de libro: "Spring Boot & Angular: Desarrollo de WebApps Seguras. Tomo ...Índice de libro: "Spring Boot & Angular: Desarrollo de WebApps Seguras. Tomo ...
Índice de libro: "Spring Boot & Angular: Desarrollo de WebApps Seguras. Tomo ...Telefónica
 
Índice del libro "Spring Boot & Angular: Desarrollo de Webapps seguras" de 0x...
Índice del libro "Spring Boot & Angular: Desarrollo de Webapps seguras" de 0x...Índice del libro "Spring Boot & Angular: Desarrollo de Webapps seguras" de 0x...
Índice del libro "Spring Boot & Angular: Desarrollo de Webapps seguras" de 0x...Telefónica
 
Índice del libro "Ataques en redes de datos IPv4&IPv6 (4ª Edición)"
Índice del libro "Ataques en redes de datos IPv4&IPv6 (4ª Edición)"Índice del libro "Ataques en redes de datos IPv4&IPv6 (4ª Edición)"
Índice del libro "Ataques en redes de datos IPv4&IPv6 (4ª Edición)"Telefónica
 
Índice del libro de "Pentesting con Powershell" Silver Edition
Índice del libro de "Pentesting con Powershell" Silver EditionÍndice del libro de "Pentesting con Powershell" Silver Edition
Índice del libro de "Pentesting con Powershell" Silver EditionTelefónica
 
Índice del libro de Windows Server 2016: Administración, Seguridad y Operaciones
Índice del libro de Windows Server 2016: Administración, Seguridad y OperacionesÍndice del libro de Windows Server 2016: Administración, Seguridad y Operaciones
Índice del libro de Windows Server 2016: Administración, Seguridad y OperacionesTelefónica
 
My sql query browser
My sql query browserMy sql query browser
My sql query browserJulio PQ
 
Índice del libro "Machine Learning aplicado a Ciberseguridad: Técnicas y ejem...
Índice del libro "Machine Learning aplicado a Ciberseguridad: Técnicas y ejem...Índice del libro "Machine Learning aplicado a Ciberseguridad: Técnicas y ejem...
Índice del libro "Machine Learning aplicado a Ciberseguridad: Técnicas y ejem...Telefónica
 

La actualidad más candente (17)

Introduccion a AJAX
Introduccion a AJAXIntroduccion a AJAX
Introduccion a AJAX
 
Postgres programmer josue
Postgres programmer josuePostgres programmer josue
Postgres programmer josue
 
Manual.completo.oracle.9i
Manual.completo.oracle.9iManual.completo.oracle.9i
Manual.completo.oracle.9i
 
Índice el Libro "Hacking Web Applications: Client-Side Attacks"
Índice el Libro "Hacking Web Applications: Client-Side Attacks"Índice el Libro "Hacking Web Applications: Client-Side Attacks"
Índice el Libro "Hacking Web Applications: Client-Side Attacks"
 
Curso Interconexion de redes.pdf
Curso Interconexion de redes.pdfCurso Interconexion de redes.pdf
Curso Interconexion de redes.pdf
 
Curso Interconexion de redes Soluciones.pdf
Curso Interconexion de redes Soluciones.pdfCurso Interconexion de redes Soluciones.pdf
Curso Interconexion de redes Soluciones.pdf
 
Introduccion Ajax
Introduccion AjaxIntroduccion Ajax
Introduccion Ajax
 
Índice del libro "Hacking Aplicaciones Web: SQL Injection"
Índice del libro "Hacking Aplicaciones Web: SQL Injection" Índice del libro "Hacking Aplicaciones Web: SQL Injection"
Índice del libro "Hacking Aplicaciones Web: SQL Injection"
 
Índice del libro: "Python para pentesters" [2ª Edición] de 0xWord
Índice del libro: "Python para pentesters" [2ª Edición] de 0xWordÍndice del libro: "Python para pentesters" [2ª Edición] de 0xWord
Índice del libro: "Python para pentesters" [2ª Edición] de 0xWord
 
Índice del libro "Hacking Web Technologies"
Índice del libro "Hacking Web Technologies"Índice del libro "Hacking Web Technologies"
Índice del libro "Hacking Web Technologies"
 
Índice de libro: "Spring Boot & Angular: Desarrollo de WebApps Seguras. Tomo ...
Índice de libro: "Spring Boot & Angular: Desarrollo de WebApps Seguras. Tomo ...Índice de libro: "Spring Boot & Angular: Desarrollo de WebApps Seguras. Tomo ...
Índice de libro: "Spring Boot & Angular: Desarrollo de WebApps Seguras. Tomo ...
 
Índice del libro "Spring Boot & Angular: Desarrollo de Webapps seguras" de 0x...
Índice del libro "Spring Boot & Angular: Desarrollo de Webapps seguras" de 0x...Índice del libro "Spring Boot & Angular: Desarrollo de Webapps seguras" de 0x...
Índice del libro "Spring Boot & Angular: Desarrollo de Webapps seguras" de 0x...
 
Índice del libro "Ataques en redes de datos IPv4&IPv6 (4ª Edición)"
Índice del libro "Ataques en redes de datos IPv4&IPv6 (4ª Edición)"Índice del libro "Ataques en redes de datos IPv4&IPv6 (4ª Edición)"
Índice del libro "Ataques en redes de datos IPv4&IPv6 (4ª Edición)"
 
Índice del libro de "Pentesting con Powershell" Silver Edition
Índice del libro de "Pentesting con Powershell" Silver EditionÍndice del libro de "Pentesting con Powershell" Silver Edition
Índice del libro de "Pentesting con Powershell" Silver Edition
 
Índice del libro de Windows Server 2016: Administración, Seguridad y Operaciones
Índice del libro de Windows Server 2016: Administración, Seguridad y OperacionesÍndice del libro de Windows Server 2016: Administración, Seguridad y Operaciones
Índice del libro de Windows Server 2016: Administración, Seguridad y Operaciones
 
My sql query browser
My sql query browserMy sql query browser
My sql query browser
 
Índice del libro "Machine Learning aplicado a Ciberseguridad: Técnicas y ejem...
Índice del libro "Machine Learning aplicado a Ciberseguridad: Técnicas y ejem...Índice del libro "Machine Learning aplicado a Ciberseguridad: Técnicas y ejem...
Índice del libro "Machine Learning aplicado a Ciberseguridad: Técnicas y ejem...
 

Similar a Trabajo Junto Taller Saul Angel Cuzcano Quintin

Similar a Trabajo Junto Taller Saul Angel Cuzcano Quintin (20)

Tutorial Jsf
Tutorial JsfTutorial Jsf
Tutorial Jsf
 
Tutorial JSF
Tutorial JSFTutorial JSF
Tutorial JSF
 
Jsf
JsfJsf
Jsf
 
Capitulo 3
Capitulo 3Capitulo 3
Capitulo 3
 
kupdf.net_bases-de-datos.pdf
kupdf.net_bases-de-datos.pdfkupdf.net_bases-de-datos.pdf
kupdf.net_bases-de-datos.pdf
 
Manualpletooracleespa±olspanish
Manualpletooracleespa±olspanishManualpletooracleespa±olspanish
Manualpletooracleespa±olspanish
 
Manual.completo.oracle.9i
Manual.completo.oracle.9iManual.completo.oracle.9i
Manual.completo.oracle.9i
 
Manual de php
Manual de phpManual de php
Manual de php
 
Manual de php
Manual de phpManual de php
Manual de php
 
J2 me
J2 meJ2 me
J2 me
 
Java 2 micro edition
Java 2 micro editionJava 2 micro edition
Java 2 micro edition
 
Java A Tope J2 Me (Java 2 Micro Edition)
Java A Tope  J2 Me (Java 2 Micro Edition)Java A Tope  J2 Me (Java 2 Micro Edition)
Java A Tope J2 Me (Java 2 Micro Edition)
 
Servlets
ServletsServlets
Servlets
 
Estandar programacion plsql
Estandar programacion plsqlEstandar programacion plsql
Estandar programacion plsql
 
Java j2me prev
Java j2me prevJava j2me prev
Java j2me prev
 
Java j2me pre
Java j2me preJava j2me pre
Java j2me pre
 
Introduccion Xhtml 2caras
Introduccion Xhtml 2carasIntroduccion Xhtml 2caras
Introduccion Xhtml 2caras
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Manual completo python
Manual completo pythonManual completo python
Manual completo python
 
Python desde 0
Python desde 0Python desde 0
Python desde 0
 

Último

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 

Último (16)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 

Trabajo Junto Taller Saul Angel Cuzcano Quintin

  • 1. TALLER DE PROYECTOS I JSTL Índice Introducción a JSTL...................................................................................................................... .....2 ¿Qué es JSTL? (JSP Standard Tag Library)............................................................. .......................2 ¿Cuales son las ventajas de los JSTL?......................................................................... ...................2 ¿Cuales son las desventajas de los JSTL?............................................................... .......................2 ¿Cuál es el problema con los scriptlets JSP?....................................................................... ............3 ¿Como mejoran esta situación la librería JSTL?......................................................... .....................3 Lenguaje de expresión JSTL...................................................................................................... .......3 Instalación y configuración del JSTL........................................................................................ .........6 Librerías englobada en el JSTL(Tags)................................................................................ ..............7  La Librería Core........................................................................................... ........................7  La Librería XML ........................................................................................................... ........9  La Librería I18N & Formatting fmt................................................................................ ......11  Acceso a la Base de Datos (SQL).............................................................. ......................13 Referencias.................................................................................................................................... ..15 UNMSM- FISI PAG. 1
  • 2. TALLER DE PROYECTOS I JSTL Introducción JSTL responde a la demanda de los desarrolladores de un conjunto de acciones JSP personalizadas para manejar las tareas que necesitan casi todas las páginas JSP, incluyendo procesamiento condicional, internacionalización, acceso a bases de datos y procesamiento XML. Esto acelerará el desarrollo de JSPs más o menos eliminando la necesidad de elementos de scripting y los inevitables y difíciles de encontrar errores de sintaxis, y liberando el tiempo anteriormente gastado en desarrollar y aprender trillones de acciones personalizadas específicas del proyecto para estas tareas comunes. ¿Qué es JSTL? (JSP Standard Tag Library) La librería JSTL es un componente dentro de la especificación del Java 2 Enterprise Edition (J2EE) y es controlada por Sun MicroSystems. JSTL no es más que un conjunto de librerías de etiquetas simples y estándares que encapsulan la funcionalidad principal que es usada comúnmente para escribir páginas JSP. Las etiquetas JSTL están organizadas en 4 librerías:  core: Comprende las funciones script básicas como loops, condicionales, y entrada/salida.  xml: Comprende el procesamiento de xml y para XML-Transformation.  fmt: Comprende la internacionalización y formato de valores como de moneda y fechas.  sql: Comprende el acceso a base de datos. ¿Cuales son las ventajas de los JSTL?  Acelera el desarrollo de JSPs eliminando la necesidad de elementos scrpting y los errores de sintaxis.  Evita la escritura innecesaria de código ya preparado. ¿Cuales son las desventajas de los JSTL?  Los JSTL pueden agregar mayor sobrecarga en el servidor. Los scriptlets y las librerías de etiquetas son compilados a servlets, los cuales luego son ejecutados por el contenedor. El código Java embebido en los scriptlets es básicamente copiado en el servlet resultante. En cambio, las etiquetas JSTL, causan un poco más de código en el servlet. En la mayoría de casos esta cantidad no es mensurable pero debe ser considerado.  Los scriptlets son más potentes que las etiquetas JSTL. Si desea hacer todo en un script JSP pues es muy probable que insertará todo el código en Java en él. A pesar que las etiquetas JSTL proporciona un potente conjunto de librerías reutilizables, no puede hacer todo lo que el código Java puede hacer. La librería JSTL está diseñada para facilitar la codificación en el lado de presentación que es típicamente encontrado en la capa de Vista si hablamos de la arquitectura Modelo-Vista-Controlador. UNMSM- FISI PAG. 2
  • 3. TALLER DE PROYECTOS I JSTL ¿Cuál es el problema con los scriptlets JSP? La especificación JSP ahora se ha convertido en una tecnología estándar para la creación de sitios Web dinámicos en Java, y el problema es que han aparecido algunas debilidades:  La recuperación de objetos fuera del HTTP Request y Session es complicada. Es necesario hacer el Casting de objetos y esto ocasiona que tengamos que importar más Clases en los JSP.  El código Java embebido en scriptlets es desordenado.  Un programador que no conoce Java no puede modificar el código Java embebido, anulando uno de los mayores beneficios de los JSP: permitir a los diseñadores y personas que escriben la lógica de presentación que actualicen el contenido de la página.  El código de Java dentro de scriptlets JSP no pueden ser reutilizados por otros JSP, por lo tanto la lógica común termina siendo re-implementado en múltiples páginas. ¿Como mejoran esta situación la librería JSTL? Esto se da a través de:  Las etiquetas JSTL encapsulan la lógica como el formato de fechas y números. Usando los scriptlets JSP, esta misma lógica necesitaría ser repetida en todos los sitios donde es usada, o necesitaría ser movida a Clases de ayuda.  Debido a que las etiquetas JSTL son XML, estas etiquetas se integran limpia y uniformemente a las etiquetas HTML.  Las 4 librerías de etiquetas JSTL incluyen la mayoría de funcionalidad que será necesaria en una página JSP. Las etiquetas JSTL son muy sencillas de usarlas para personas que no conocen de programación, a lo mucho necesitarán conocimientos de etiquetas del estilo HTML.  Las etiquetas JSTL pueden referenciar objetos que se encuentren en los ambientes Request y Session sin conocer el tipo del objeto y sin necesidad de hacer el Casting. Los JSP EL (Expression Language) facilitan las llamadas a los métodos Get y Set en los objetos Java. Esto no es posible en la versión JSP 1.2, pero ahora está disponible en JSP 2.0. EL es usado extensamente en la librería JSTL. Lenguaje de expresión JSTL Es un lenguaje para acceder a datos de varias fuentes en tiempo de ejecución. Su sintaxis es considerablemente más amigable que la de Java, que es el único lenguaje soportado directamente por la especificación JSP 1.2. Todas las acciones JSTL reconocen expresiones EL (Lenguaje de Expresiones) en sus valores de atributos, y se podrían desarrollar acciones personalizadas para que hicieran lo mismo. Se espera que EL sea incorporado dentro de la próxima versión de la especificación JSP para mejorar su uso para acceder a datos sobre el lenguaje Java. Si es así, podremos usar expresiones EL en un valor de atributo de una acción, o incluso en una plantilla de texto. EL toma prestada la sintaxis de JavaScript para acceder a estructuras de datos tanto como propiedades de un objeto (con el operador “.”) como con elementos con nombres de un array (con el operador [quot;nombrequot;]). Las propiedades de los componentes JavaBeans y las entradas java.util.Map, que usan la clave como nombre de propiedad, pueden ser accedidas de esta forma. Aquí tenemos algunos ejemplos: ${myObj.myProperty}$ ${myObj[quot;myPropertyquot;]}$ ${myObj[varWithTheName]}$ UNMSM- FISI PAG. 3
  • 4. TALLER DE PROYECTOS I JSTL Como se observa en el ejemplo anterior, una expresión EL siempre debe estar encerrada entre los caracteres ${y} $. Las dos primeras expresiones acceden a una propiedad llamada myProperty en un objeto representado por una variable llamada myObj. La tercera expresión accede a una propiedad con un nombre contenido en un variable, esta sintaxis se puede utilizar con cualquier expresión que evalúe el nombre de la propiedad. El operador de acceso a array también se usa para datos representados como una colección de elementos indexados, como un array Java o una java.util.List: ${myList[2]}$ ${myList[aVar + 1]}$ Además de los operadores de propiedad y elemento array y los operadores aritméticos, relacionales, y lógicos, hay un operador especial para comprobar si un objeto está quot;vacíoquot; o no puede ser usado en una expresión EL. La siguiente tabla lista todos los operadores: Operador Descripción . Accede a una propiedad [] Accede a un elemento de un array/lista () Agrupa una sub-expresión + Suma - Resta o negación de un número / o div División % o mod Módulo (resto) == o eq Comprueba Igualdad != o ne Comprueba desigualdad < o lt Comprueba menor que > o gt Comprueba mayor que <= o le Comprueba menor o igual que >= o gt Comprueba mayor o igual que && o and Comprueba AND lógico || o or Comprueba OR lógico ! o not Complemento binario booleano empty Comprueba un valor vacío (null, string vacío, o una colección vacía) Lo que no encontraremos en EL son sentencias como asignaciones, if/else, o while. Para este tipo de funcionalidades en JSP se usan los elementos Action. EL no está pensado para utilizarse como un lenguaje de programación de propósito general, sólo un lenguaje de acceso a datos. Por supuesto, los literales y las variables, también son parte del lenguaje. EL proporciona los siguientes literales, similares a los que proporcionan JavaScript, Java, y otros lenguajes similares: Tipo de Literal Descripción Va encerrada con comillas simples o dobles. Una comilla del mismo tipo dentro del string puede ser escapada con una barra invertida: (' String en un string encerrado con comillas simples; quot; en un string encerrado con comillas dobles). El carácter de barra invertida debe se escapado como en ambos casos. Integer Un signo opcional (+ o -) seguido por dígitos entre 0 y 9. Lo mismo que un literal entero, excepto que usa un punto como Coma Floating separador de la parte fraccional y que se puede especificar un exponente con e o E, seguido por un literal entero. Boolean true o false. Null null. UNMSM- FISI PAG. 4
  • 5. TALLER DE PROYECTOS I JSTL Cualquier objeto en uno de los ámbitos de JSP (página, solicitud, sesión o aplicación) se puede utilizar como una variable en una expresión EL. Por ejemplo, si tenemos un bean con una propiedad firstName en el ámbito de la solicitud bajo el nombre customer, esta expresión EL representa el valor de la propiedad firstName del bean. ${customer.firstName} EL también hace que la información de la solicitud y la información general del contenedor esté disponible como un conjunto de variables implícitas: Variable Descripción param Map que mapea nombres de parámetros univaluados a String. Una colección de todos los valores de los parámetros de la solicitud paramValues como un array de valores string por cada parámetro. Una colección de todas las cabeceras de solicitud como un sólo valor header string por cada cabecera. Una colección de todos los valores de cabecera de la solicitud como headerValues un array de valores string por cada cabecera. Una colección con todas las cookies de la solicitud en un sólo ejemplar cookie de javax.servlet.http.Cookie por cada cokkie. Una colección de todos los parámetros de inicialización de la initParams aplicación en un sólo valor string por cada parámetro. pageContext Un ejemplar de la clase javax.servlet.jspPageContext. pageScope Una colección de todos los objetos en el ámbito de la página. requestScope Una colección de todos los objetos en el ámbito de la solicitud. sessionScope Una colección de todos los objetos en el ámbito de la sesión. applicationScope Una colección de todos los objetos en el ámbito de la aplicación. Las cinco primeras variables implícitas de la tabla nos ofrecen acceso a los valores de parámetros, cabeceras y cookies de la solicitud actual. Se muestra en el siguiente ejemplo, cómo acceder a un parámetro de solicitud llamado listType y a la cabecera . User-Agent: ${param.listType} ${header['User-Agent']} Este ejemplo se muestra para usar de un modo adecuado la sintaxis de array para la cabecera, porque el nombre incluye un guión; con la sintaxis de propiedad, sería interpretado como la expresión variable header.User menos el valor de una variable llamada Agent. La variable initParameter proporciona acceso a los parámetros de inicialización que se definen en el fichero web.xml de la aplicación. La variable pageContext tiene varias propiedades que proporcionan acceso al objeto servlet que representa la solicitud, la respuesta, la sesión y la aplicación, etc. Las cuatro últimas variables son colecciones que contienen todos los objetos de cada ámbito específico. Podemos usarlas para limitar la búsqueda de un objeto en sólo un ámbito en lugar de buscar en todos ellos, lo que está por defecto si no se especifica ningún ámbito. En otras palabras, si hay un objeto llamado customer en el ámbito de sesión, estas dos primeras expresiones encuentran el mismo objeto, pero la tercera vuelve vacía: ${customer} ${sessionScope.customer} ${requestScope.customer} UNMSM- FISI PAG. 5
  • 6. TALLER DE PROYECTOS I JSTL Todas las acciones JSTL aceptan expresiones EL como valores de atributo, para todos los atributos excepto para var y scope, porque estos valores de atributo podrían usarse para chequear el tipo en el momento de la traducción en una futura versión. Hay un atributo de una acción JSTL adicional que no toma un valor de expresión EL, pero sólo se usa en la librería XML, por eso lo ignoraremos por ahora. Se pueden usar una o más expresiones EL en el mismo valor de atributo, y el texto fijo y las expresiones EL se pueden mezclar en el mismo valor de atributo: First name: &lt;c:out value=quot;${customer.firstName}quot; /&gt; &lt;c:out value=quot;First name: ${customer.firstName}quot; /&gt; Ahora veamos unos ejemplos de su uso:  Acceso a atributos de objetos Java en expresiones: ${user.firstName} = user.getFirstName() ${user.address.city} = user.getAddress().getCity() ${user.preferencesMap[quot;shippingquot;]} = user.getPreferencesMap().get(quot;shippingquot;) ${user.preferencesList[0]} = user.getPreferencesList().get(0)  Unificando el tratamiento de los operadores: . y [] ${user.firstName} es equivalente a ${user[quot;firstNamequot;]} ${user.preferencesMap[quot;shippingquot;]} es equivalente a ${user.preferencesMap.shipping}  Con operadoradores: [] ${user.preferencesMap[quot;book.fictionquot;]} es equivalente a user.getPreferencesMap().get(quot;book.fictionquot;) ${user.preferencesMap[product.category]} es equivalente a user.getPreferencesMap().get(product.getCategory()) Instalación y configuración del JSTL La librería JSTL es distribuida como un conjunto de archivos JAR que simplemente tenemos que agregarlo en el classpath del contenedor de servlets. 1. Debemos usar un contenedor de servlets compatible con la ve rsión JSP 2.0 para usar el JSTL 1.1. El Apache Tomcat 5.0 [http://jakarta.apache.org/tomcat/] por ejemplo. En caso contrario, es posible usar el JSTL 1.0 en un contenedor que soporte por lo menos el JSP 1.2 y servlets 2.3. 2. Descargar la implementación JSTL de la página de proyecto Jakarta TagLibs [http://jakarta.apache.org/taglibs/binarydist.html]. La distribución binaria viene empaquetada como .zip o tar.gz. Desempaquete estos archivos en un directorio temporal. 3. Del directorio temporal, copie todos los archivos JAR que se encuentran en jakarta- taglibs/standard-1.0/lib al directorio /WEB-INF/lib de su aplicación Web. Esto incluirá los JAR específicos del JSTL así como también los otros JAR que depende de él. 4. Finalmente, importamos en las páginas JSP cada librería JSTL que la página necesitará. Eso lo hacemos agregando las directivas taglib apropiadas al inicio de la página JSP. Las directivas son: core: <%@ taglib prefix=quot;cquot; uri=quot;http://java.sun.com/jstl/corequot; %> xml: <%@ taglib prefix=quot;xquot; uri=quot;http://java.sun.com/jstl/xmlquot; %> fmt: <%@ taglib prefix=quot;fmtquot; uri=quot;http://java.sun.com/jstl/fmtquot; %> sql: <%@ taglib prefix=quot;sqlquot; uri=quot;http://java.sun.com/jstl/sqlquot; %> Ahora, creamos una página JSP y probamos algunas etiquetas simples para asegurarnos que la configuración del JSTL está bien hecha. CODE UNMSM- FISI PAG. 6
  • 7. TALLER DE PROYECTOS I JSTL 1 <%@ taglib prefix=quot;cquot; uri=quot;http://java.sun.com/jstl/corequot; %> 2 3 Setting the value: quot;Hello World!quot; 4 <c:set var=quot;helloquot; value=quot;Hello World!quot;/> 5 <p/> 6 <c:out value=quot;${hello}quot;/> Librerías englobada en el JSTL(Tags) JSTL 1.0 especifica un conjunto de librerías de etiquetas basadas en el API JSP 1.2. Hay cuatro librerías de etiquetas independientes, cada una contiene acciones personalizadas dirigidas a un área funcional específica. Esta tabla lista cada librería con su prefijo de etiqueta recomendado y la URI por defecto: Descripción Prefijo Core c XML Processing x I18N & Formatting fmt Database Access sql  La Librería Core Contiene acciones para las tareas rutinarias, como incluir o excluir una parte de una página dependiendo de una condición en tiempo de ejecución, hacer un bucle sobre una colección de ítems, manipular URLs para seguimiento de sesión, y la correcta interpretación del recurso objetivo, así como acciones para importar contenido de otros recursos y redireccionar la respuesta a una URL diferente. JSTL core Area Función Tags Prefijo remove Variable de soporte set choose when otherwise Flow control forEach forTokens if Core c import param redirect URL management param url param catch Miscellaneous out A continuación se describe cada tags según el tipo de función que desempeña: Variable de soporte Resumen de etiquetas UNMSM- FISI PAG. 7
  • 8. TALLER DE PROYECTOS I JSTL Elimina una variable (desde un ámbito particular, si se especifica). remove A continuación se muestra un ejemplo del remove: <c:remove var=quot;cartquot; scope=quot;session”/> Establece el resultado de una evaluación de expresión en un 'ámbito'. EL JSP la variable o propiedad se puede establecer, ya sea el atributo de valor: <c:set var=quot;fooquot; scope=quot;sessionquot; value=quot;...quot;/> O del cuerpo de la etiqueta <c:set var=quot;fooquot;> set ... </c:set> Por ejemplo, los siguientes conjuntos una variable llamada EL BOOKID con el valor del parámetro de solicitud de quitar el nombre: <c:set var=quot;bookIdquot; value=quot;${param.Remove}quot;/> Control de flujo Resumen de etiquetas Es una etiqueta de condiciona simple que establece un contexto mutuamente excluyentes para las operaciones condicionales, marcado por <when> y <otherwise > Por ejemplo, el código de ejemplo siguiente muestra cómo hacer que el texto sobre la base de un cliente de la categoría de miembros. <c:choose> <c:when test=quot;${customer.category == 'trial'}quot; > choose ... </c:when> <c:when test=quot;${customer.category == 'member'}quot; > ... <c:otherwise> ... </c:otherwise> </c:choose> Es una etiqueta condicional simple, que evalúa si la condición suministrada es verdadera y, opcionalmente, expone una variable booleana de secuencias de comandos que representan a la evaluación de esta condición. Un ejemplo de esta etiqueta se muestra a continuación: if <c:if test=quot;${!empty param.Add}quot;> <c:set var=quot;bidquot; value=quot;${param.Add}quot;/> ... </c:if> La etiqueta básica de iteración, acepta muchos tipos diferentes de subconjuntos de apoyo y otras funciones. Ejemplo: forEach <c:forEach var=quot;itemquot; items=quot;${sessionScope.cart.items}quot;> ... ... </c:forEach> forTokens Itera más fichas, separados por el suministrado delimitado. Sub etiqueta de <choose> que sigue a la etiqueta<when> y funciona sólo si todas las condiciones previas para evaluar son «falsos». otherwise <c:otherwise> ... </c:otherwise> when Sub etiqueta de <choose> que incluye su cuerpo si su condición evaluada es 'verdadera.' UNMSM- FISI PAG. 8
  • 9. TALLER DE PROYECTOS I JSTL <c:when test=quot;quot; > ... </c:when> URL management Resumen de etiquetas Recupera un absoluto o relativo URL y expone su contenido, ya sea a la página, import una cadena en 'var', o en un lector de 'varReader ». <c:import url=quot;/books. mlquot; var=quot;xmlquot; /> x Añade un parámetro para que contengan una quot;importaciónquot; de la etiqueta URL. <c:url var=quot;urlquot; value=quot;/catalogquot; > param <c:param name=quot;Addquot; value=quot;${bookId}quot; /> </c:url> redirect Redirige a una nueva URL. url Crea una URL con parámetros de consulta facultativa. Varios Resumen de etiquetas Captura cualquier Throwable que se produce en su cuerpo y, opcionalmente, se catch expone. Al igual que <% = ... >, Pero para las expresiones. out <c:out value=quot;valuequot; [escapeXml=quot;{true|false}quot;] [default=quot;defaultValuequot;] />  La Librería XML Contiene acciones para procesamiento XML, incluido validar un documento XML y transformarlo usando XSLT. También proporciona acciones para extraer parte de un documento XML validado, hacer bucles sobre un conjunto de nodos, y procesamiento condicional basado en valores de nodos. Area Función Etiqueta Prefijo out Núcleo parse set choose when XML x Flujo de control otherwise forEach if transform Transformación param A continuación se describe cada etiqueta según el tipo de función que desempeña: Núcleo Resumen de etiquetas out Al igual que <% = ... >, Pero para las expresiones XPath. parse Analiza el contenido en XML de 'fuente' atributo o 'cuerpo' UNMSM- FISI PAG. 9
  • 10. TALLER DE PROYECTOS I JSTL set Guarda el resultado de una expresión XPath evaluada en un 'ámbito' Flujo de Control Resumen de etiquetas Es una etiqueta de condiciona simple que establece un contexto mutuamente choose excluyentes para las operaciones condicionales, marcado por <when> y <otherwise > Etiqueta XML condicional, que evalua su cuerpo, si la expresión XPath if suministrados es quot;verdaderoquot; ,como un booleano. forEach Es una etiqueta de iteración XML . Sub etiqueta de <choose> que sigue a la etiqueta<when> y funciona sólo si todas otherwise las condiciones previas para evaluar son «falsos». Sub etiqueta de <choose> que incluye su cuerpo si su condición evaluada es when 'verdadera.' La página JSP bookcatalog.jsp utiliza la etiqueta foreach para mostrar todos los libros figura BookList en la forma siguiente: Code: <x:forEach var=quot;bookquot; select=quot;$applicationScope:booklist/books/*quot;> <tr> <c:set var=quot;bookIdquot;> <x:out select=quot;$book/@idquot;/> </c:set>= <td bgcolor=quot;#ffffaaquot;> <c:url var=quot;urlquot; value=quot;/bookdetailsquot; > <c:param name=quot;bookIdquot; value=quot;${bookId}quot; /> <c:param name=quot;Clearquot; value=quot;0quot; /> </c:url> <a href=quot;${url}quot;> <strong><x:out select=quot;$book/titlequot;/>&nbsp; </strong></a></td> </tr> <tr> <td bgcolor=quot;#ffffffquot;> &nbsp;&nbsp;<fmt:message key=quot;Byquot;/> <em> <x:out select=quot;$book/firstnamequot;/>&nbsp; <x:out select=quot;$book/surnamequot;/></em></td></tr> </x:forEach> Transformación Resumen de etiquetas Añade un parámetro para que contenga una quot;transformarquot; de la etiqueta de param transformadores transform Lleva a cabo una transformación de un documento XML fuente y una hoja de UNMSM- FISI PAG. 10
  • 11. TALLER DE PROYECTOS I JSTL estilos XSLT.  La Librería I18N & Formatting fmt Comprende la internacionalización y formato de valores como de moneda y fechas. Las grandes sites normalmente necesitan complacer a los visitantes de todo el mundo, y servir el contenido sólo en un idioma no es suficiente. Para desarrollar una site que proporcione una elección de idiomas, tenemos dos opciones:  Escribir un conjunto de páginas para cada idioma.  Escribir un conjunto compartido de páginas que ponga el contenido en diferentes idiomas desde fuentes externas. Resumen de etiquetas Establece la localización por omisión para el especificado ámbito de aplicación. Esto anulará la browserbased local. setLocale <fmt:setLocale scope=quot;sessionquot; value=quot;fr_CAquot;> Establece el contexto de localización, basados en especificada en el paquete de recursos, para ser utilizado dentro de el cuerpo el contenido de esta etiqueta. bundle <fmt:bundle basename=quot;resourcesquot; prefix=quot;label.quot;> <fmt:message key=quot;userIdquot;/> <fmt:bundle> Crea y almacena en un alcance variable, un contexto de localización basado en el especificado paquete de recursos. setBundle <fmt:setBundle basename=quot;ApplicationResources” var=quot;strutsMessagesquot; scope=quot;applicationquot;/> Parece un mensaje localizado en un paquete de recursos. Esta etiqueta puede contener anidadas <fmt:param> etiquetas para especificar formato del mensaje la sustitución de valores. El mensaje resultante se imprime message o almacenada en un alcance variable. <fmt:message key=quot;titlequot; bundle=quot;${strutsResources}quot;/> param Supplies a parameter for message format substitution in a containing <fmt:message> tag. Parameters are substituted in sequential order. <fmt:message key=quot;fieldRequiredquot;> <fmt:param value=quot;User IDquot;/> UNMSM- FISI PAG. 11
  • 12. TALLER DE PROYECTOS I JSTL </fmt:message> Encarga a utilizar JSTL una codificación de caracteres (véase http://www.iana.org/assignments/character-sets) requestEncoding para decodificar parámetros de solicitud. Omitir un valor indica a utilizar la detección automática de la correcta codificación. <fmt:requestEncoding key=quot;ISO-8859-1quot;/> Formato de Acciones Las acciones de formato analizan los números, monedas, porcentajes, fechas y horas. Resumen de etiquetas Ajusta el tiempo especificado, zonas que se aplicarán al cuerpo anidado contenido. El siguiente ejemplo muestra que el tiempo zona por esta acción sólo ha anidado visibilidad. <jsp:useBean id=quot;nowquot; class=quot;java.util.Datequot;/> <fmt:timeZone timeZone value=quot;America/Los_Angelesquot;> Pacific Time:<fmt:formatDate type=quot;timequot; timeStyle=quot;shortquot; value=quot;${now}quot;/> </fmt:timeZone> <br/> Local Time:<fmt:formatDate type=quot;timequot; timeStyle=quot;shortquot; value=quot;${now}quot;/> Ajusta el tiempo especificado en una zona, nombre de un alcance variable o utilizando el intervalo de tiempo predeterminado Nombre de zona var si no se especifica. setTimeZone <fmt:setTimeZone var=quot;mtnTimequot; value=quot;America/Denverquot;/> Mountain Time: <fmt:formatDate type=quot;timequot; timeStyle=quot;shortquot; value=quot;${now}quot; timeZone=quot;${mtnTime}quot;/> Formatos de un número, moneda, o el porcentaje en un local con tacto y sensibilidad. El valor es el formato impreso o almacenado en una scoped variable. formatNumber <fmt:formatNumber type=quot;currencyquot; value=quot;3.977quot;> Formato de Fechas Fechas y formatos son analizados utilizando el <fmt:formatDate> y <fmt:parseDate> acciones que comparten las siguientes atributos en común. Resumen de etiquetas formatDate Formatos de fecha y/o el tiempo en un local con tacto y sensibilidad. El valor es el formato impreso o almacenado en un alcance variable. UNMSM- FISI PAG. 12
  • 13. TALLER DE PROYECTOS I JSTL <fmt:formatDate value=quot;${now}quot; pattern=quot;yy-MMM-ddquot;/> Analiza una cadena que representa una fecha y/o tiempo en un local con tacto y sensibilidad. El valor es analizado impreso o almacenado en un alcance variable. <fmt:parseDate var=quot;bdayquot; parseDate pattern=quot;MM/dd/yyquot; value=quot;05/10/63quot;/> <fmt:formatDate value=quot;${bday}quot; dateStyle=quot;fullquot;/>  Acceso a la Base de Datos (SQL) La etiqueta SQL se dispone para llevar a cabo acciones bases de datos transaccionales, las consultas y actualizaciones, tener acceso fácilmente a los resultados de una consulta. Comprende el acceso a base de datos. Un sujeto de controversia es la inclusión en JSTL de acciones para acceder a bases de datos. Alguna gente ve esto como una mala práctica y argumenta que todos los accesos a bases de datos se deberían realizar desde componentes Java puros en una aplicación basada en MVC en lugar de desde página JSP. Resumen de etiquetas Realiza una consulta de base de datos (por ejemplo, select). La consulta se debería esperar para volver un conjunto de resultados. Esta acción puede incluir cuerpo que contiene el contenido real de cadena de consulta, así como <sql:param> y <sql:dateParam> etiquetas de parámetro de sustitución. Si el cuerpo contiene la consulta SQL, debe aparecer antes de cualquier parámetro etiquetas anidadas. query <sql:query var=quot;usersquot;> SELECT * FROM users WHERE last_name = quot;Burdellquot; </sql:query> <c:forEach var=quot;userquot;items=quot;${users.rows}quot;> <c:out value=quot;${users.user_name}quot;/><br/> </c:forEach> Realiza una base de datos de insertar, actualizar, eliminar o otra declaración (por ejemplo, una declaración DDL), que no devuelve ningún resultado. Esta acción puede incluir cuerpo que contiene el contenido real de actualización de la cadena, así como etiquetas para <sql:param> parámetro de sustitución. Al igual que <sql:query>, el <sql:param> etiquetas debe ocurrir después de la declaración de SQL si es que figura en la etiqueta. update <sql:update> cuerpo. <sql:update var=quot;updateCountquot;> UPDATE users SET first_name=quot;Williamquot; WHERE first_name = quot;Billquot; </sql:update> <c:out value=quot;${updateCount} rows updated.quot;/> transaction Establece una base de datos de transacción para <sql:query> y <sql:update> etiquetas que figuran en esta etiqueta del cuerpo. Es decir, todos los SQL acciones contenidas en el cuerpo de esta etiqueta será tratada como una única UNMSM- FISI PAG. 13
  • 14. TALLER DE PROYECTOS I JSTL transacción atómica. La transacción se ha comprometido sólo si todas las declaraciones éxito. Si alguno de los contenidos de SQL acciones causan una excepción, la transacción se deshace. Nota: esta acción antes de restablecer el quot;auto de cometerquot; ajuste después de su realización. <sql:transaction> <sql:update sql=quot;DELETE users WHERE user_name='bsiggelkow'quot;/> <sql:update sql=quot;INSERT INTO users VALUES ('billsigg','Bill','Siggy')quot;/> </sql:transaction> Crea y almacena en una variable alcance una fuente de datos SQL. Esta etiqueta no puede tener un cuerpo. O bien la fuente de datos o URL atributo debe ser especificado. <sql:setDataSource var=quot;testDBquot; setDataSource url=quot;jdbc:mysql://localhost/test, com.mysql.jdbc.Driverquot;/> <sql:query var=quot;usersquot; dataSource=quot;${testDB}quot;> SELECT * FROM users </sql:query> Suplentes parámetros en SQL declaración preparada marcadores de posición (quot;?quot;). Esta acción sólo se puede anidar dentro de <sql:query> o <sql:update> etiquetas. Si la etiqueta especifica que remite el SQL en el cuerpo, cualquier <sql:param> etiquetas debe aparecer después de la SQL. Los parámetros son sustituidos en orden secuencial. param <c:set var=quot;firstNamequot;>Bill</c:set> <sql:query var=quot;usersquot;> SELECT user_name, last_name FROM users WHERE first_name = ? <sql:param value=quot;${firstName}quot;/> </sql:query> Suplentes hora, fecha, hora o los parámetros en SQL declaración preparada marcadores de posición. Esta acción sólo se puede anidar dentro de <sql:query> o <sql:update> etiquetas. Los parámetros son sustituidos en orden secuencial. <fmt:parseDate var=quot;ww2Endquot; pattern=quot;yyyy-MM-ddquot; dateParam value=quot;1945-09-02quot;/> <sql:query var=quot;postWarBabiesquot;> SELECT user_name FROM user_profile WHERE birth_date > ? <sql:dateParam value=quot;${ww2End}quot; type=quot;datequot;/> </sql:query> Referencias  http://www.programacion.com/java/tutorial/jstl1/2/  http://www.programacion.com/java/tutorial/jstl1/3/  http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSTL8.html  http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html UNMSM- FISI PAG. 14