JavaServer%20Pages%20Standard%20Tag%20Library%20(JSTL) - PowerPoint PPT Presentation

About This Presentation
Title:

JavaServer%20Pages%20Standard%20Tag%20Library%20(JSTL)

Description:

Asumimos que ya has instalado Tomcat 4.1 en tu m quina, si no cons guelo de: ... SQL/DB support. fmt_rt. fmt. Internationalization/format. c_rt. c. Core ... – PowerPoint PPT presentation

Number of Views:157
Avg rating:3.0/5.0
Slides: 28
Provided by: bas54
Category:

less

Transcript and Presenter's Notes

Title: JavaServer%20Pages%20Standard%20Tag%20Library%20(JSTL)


1
JavaServer Pages Standard Tag Library (JSTL)
  • Dr. Diego Lz. de Ipiña Gz. de Artaza

2
JSTL
  • Objetivo
  • Simplificar y agilizar el desarrollo de
    aplicaciones web
  • 3ra iteración después de servlets y JSPs
  • Sirven para la generación dinámica de páginas web

3
Instalar JSTL
  • Asumimos que ya has instalado Tomcat 4.1 en tu
    máquina, si no consíguelo de
  • http//apache.rediris.es/jakarta/tomcat-4/v4.1.29/
    bin/jakarta-tomcat-4.1.29-LE-jdk14.exe
  • Bajar JSTL de
  • http//apache.rediris.es/jakarta/taglibs/standard-
    1.0/jakarta-taglibs-standard-current.zip
  • Copiar archivos standard.jar y jstl.jar a
    Tomcat4.1\common\lib

4
Usar JSTL en una aplicación Web
  • Para cualquier aplicación web desde la cual
    quieres usar JSTL, copiar los ficheros .tld al
    directorio WEB-INF de tu aplicación web.
  • Edita el web.xml de tu aplicación web añadiendo
    las siguientes entradas
  • lttaglibgt    lttaglib-urigthttp//java.sun.com/
    jstl/fmtlt/taglib-urigt    lttaglib-locationgt/WEB-IN
    F/fmt.tldlt/taglib-locationgt  lt/taglibgt  lttaglib
    gt    lttaglib-urigthttp//java.sun.com/jstl/corelt/t
    aglib-urigt    lttaglib-locationgt/WEB-INF/c.tldlt/ta
    glib-locationgt  lt/taglibgt  lttaglibgt    lttaglib
    -urigthttp//java.sun.com/jstl/sqllt/taglib-urigt   
     lttaglib-locationgt/WEB-INF/sql.tldlt/taglib-locatio
    ngt  lt/taglibgt  lttaglibgt    lttaglib-urigthttp//
    java.sun.com/jstl/xlt/taglib-urigt    lttaglib-locat
    iongt/WEB-INF/x.tldlt/taglib-locationgt  lt/taglibgt
  • Estas entradas permiten a tu aplicación web usar
    las librerías de etiquetas JSTL que usan el
    lenguaje de expresiones. La posición de estas
    entradas tiene importancia.

5
Características
  • Las páginas JSTL son también páginas JSP. JSTL es
    un superconjunto de JSP.
  • JSTL provee un conjunto de cuatro librerías
    estándar
  • Core
  • Internationalization/format
  • XML y
  • SQL
  • Además JSTL define un nuevo lenguaje de
    expresiones llamado EL
  • Una etiqueta JSTL corresponde a una acción
    llamándolas acción nos indica que añaden
    comportamiento dinámico a una, de otra manera,
    página estática.

6
Soporte para EL I
  • El lenguaje de expresiones EL simplemente define
    un poderoso mecanismo para expresar expresiones
    simples en una sintáxis muy sencilla.
  • Es algo entre JavaScript y Perl.
  • Su combinación con las etiquetas de las 4
    librerías antes mencionadas proveen mucha
    flexibilidad y poder para el desarrollo de
    páginas dinámicas.
  • En EL las expresiones están delimitadas por .

7
Soporte para EL II
  • Algunos ejemplos del uso de EL son
  • anExpression
  • aList4
  • aListsomeVariable ? acceso a un elemento de
    una colección
  • anObject.aProperty ? acceso a la propiedad de
    un objeto
  • anObject"aPropertyName" ? entrada en un mapa
    con propiedad aPropertyName
  • anObjectaVariableContainingPropertyName
  • Existen una serie de variables implícitas
    definidas en EL
  • pageContext el contexto del JSP actual
  • pageScope, requestScope, sessionScope, and
    applicationScope colecciones de mapas que mapean
    nombres de variables en esos contextos a valores
  • param and paramValues parámetros pasados con la
    petición de la página, lo micmo que en JSP
  • header and headerValues cabeceras pasadas en la
    petición de la página
  • cookie mapa que mapea nombres de cookies a los
    valores de las mismas

8
JSTL Tag Libraries
Librería Prefijo librería EL Prefijo de Librería Request-time (RT)
Core c c_rt
Internationalization/format fmt fmt_rt
SQL/DB support sql sql_rt
XML x x_rt
9
Uso de las librerías JSTL en un JSP
  • La siguiente directiva ha de incluirse al
    comienzo de la página
  • lt_at_ taglib prefix"c" urihttp//java.sun.com/jstl
    /core gt
  • Para utilizar una etiqueta de una librería
    simplemente se ha de preceder con el prefijo de
    la librería utilizada
  • ltcout value"anExpression"/gt

10
La librería de etiquetas Core
  • Permiten llevar a cabo las siguientes acciones
  • Visualizar/asignar valores y manejar excepciones
  • Control de flujo
  • Otras acciones de utilidad

11
Visualizar/asignar valores y manejar excepciones
con Core I
  • Para visualizar valores utilizamos
  • ltcout
  • value"applicationScope.product.inventoryCount"
    escapeXml"true" default"0"  /gt of those items
    in stock.
  • escapeXml indica si hay que aplicar códigos de
    escape a los caracteres lt, gt, y .
  • Asignar una variable en una página
  • ltcset var"customerID" value"paramcustomerNumb
    er" scope"session" /gt
  • scope indica el contexto en el que se define la
    variable
  • También podemos asignar el contenido de una
    etiqueta a una variable
  • ltcset var"cellContents"gtlttdgtltcout
    value"myCell"/gtlt/tdgtlt/csetgt

12
Visualizar/asignar valores y manejar excepciones
con Core II
  • Normalmente en un JSP o incluimos un bloque
    try/catch o usamos la directiva errorPage
  • ltccatchgt     lt!--. . . some set of nested JSTL
    tags below which would be hit on an
    exception--gtlt/ccatchgt
  • Para borrar una variable se puede utilizar
    ltcremovegt

13
Control de flujo con JSTL Core I
  • Para llevar a cabo simples condiciones (cif)
  • ltcif test"status.totalVisits 1000000"
    var"visits"gt   You are the millionth visitor to
    our site!  Congratulations!lt/cifgt
  • El switch de un lenguaje de programación se puede
    emular con cchoose
  • ltcchoosegtltcwhen test"item.type
    'book'"gt...lt/cwhengtltcwhen test"item.type
    'electronics'"gt...lt/cwhengtltcwhen
    test"item.type 'toy'"gt...lt/cwhengtltcoth
    erwisegt...lt/cotherwisegtlt/cchoosegt

14
Control de flujo con JSTL Core II
  • Para iterar sobre una colección se define
    cforeach. Se pueden especificar índice de
    comienzo, final e incremento con los atributos
    begin, end y step.
  • lttablegtltcforEach var"name" items"customerNam
    es"gtlttrgtlttdgtltcout value"name"/gtlt/tdgtlt/trgtlt
    /cforEachgt
  • lt/tablegt

15
Control de flujo con JSTL Core III
  • Funcionalidad similar a StringTokenizer puede ser
    obtenida en JSTL con cforTokens
  • lttablegtltcforTokens items"47,52,53,55,46,22,16,2
    " delims"," var"dailyPrice"gtlttrgtlttdgtltcout
    value"dailyPrice"/gtlt/tdgtlt/trgtlt/cforTokensgt
  • lt/tablegt

16
Listar todos los parámetros pasados a una petición
  • lt_at_ taglib uri"http//java.sun.com/jstl/core"
    prefix"c" gtlthtmlgtltbodygtltheadgtlttitlegtParamete
    r Listing Examplelt/titlegtlt/headgtltbrgtltbgtParame
    ter values passed to this page for each
    parameter lt/bgtlttable border"2"gtltcforEach
    var"current" items"param"gt    lttrgt    lttdgt
        ltbgtltcout value"current.key"
    /gtlt/bgt    lt/tdgt        ltcforEach var"aVal"
    items"paramValuescurrent.key"gt            lt
    tdgt            ltcout value"aVal"
    /gt            lt/tdgt        lt/cforEachgt    lt/tr
    gtlt/cforEachgtlt/tablegtlt/bodygtlt/htmlgt

17
Otras acciones
  • Para codificar URLs se puede utilizar curl
  • ltcurl value"http//acme.com/exec/register"
    var"myUrl"gtltcparam name"name"
    value"param.name"/gtltcparam name"country"
    value"param.country"/gtlt/curlgtlta
    href'ltcout value"myUrl"/gt'gtRegisterlt/agt
  • Se pueden importar otros JSPs o incluso otros
    recursos en una URL arbitraria usando cimport
    (análogo to jspinclude)
  • Para manejar redireccionamiento se puede utilizar
    la etiqueta credirect

18
La librería de etiquetas de internacionalización I
  • Cubre dos áreas
  • Etiquetas (acciones) de formateo
  • Acciones de internacionalización
  • Acciones de formateo
  • Inspiradas en el funcionamiento de las clases
    DateFormat y NumberFormat
  • Para formatear un número usamos formatNumber con
    los atributos number para el número y pattern
    para el patrón de formateo a aplicar.
  • ltfmtformatNumber value"1000.001"
    pattern",00.0"/gt
  • Si queremos parsear un número a partir de un
    string usamos parseNumber
  • ltfmtparseNumber value"currencyInput"
    type"currency" var"parsedNumber"/gt
  • Para formatear una fecha usamos formatDate y para
    parsear un string parseDate
  • ltjspuseBean id"now" class"java.util.Date" /gt
  • ltfmtformatDate value"now" timeStyle"long"da
    teStyle"long"/gt
  • ltfmtparseDate value"dateInput" pattern"MM
    dd, YYYY" /gt

19
La librería de etiquetas de internacionalización
II
  • Acciones de internacionalización
  • Una pieza imporante de la localización en Java es
    la clase ResourceBundle. Las acciones JSTL que
    permiten trabajar con esta clase son
  • fmtbundle para obtener un ResourceBundle
    correspondiente al Locale actual y
  • fmtmessage para hacer lookups en el
    ResourceBundle
  • Ejemplo
  • ltfmtbundle basename"myBundle"gtlt-- Use values
    in myBundle --gtltfmtmessage key"Introduction"gt
       ltfmtparam value"loginName"/gt  
    ltfmtparam value"loginCount"/gtlt/fmtmessagegt
    ltfmtformatDate value"now" var"parsedDate"/gt
    lt/fmtbundlegt

20
La librería de etiquetas SQL I
  • JSTL permite una fácil integración con bases de
    datos
  • No gestiona bien connection pooling, por tanto
    son solamente adecuadas para llevar a cabo
    prototipos o aplicaciones de bajo volumen.
  • Ejemplo seleccionar y visualizar un conjunto de
    elementos
  • ltsqlsetDataSource      driver"com.cheapDrivers
    .jdbcDriver"      url"jdbccheapDrivers."     
     user"guest"      password"password"      var
    "dataSource" /gtltsqlquery var"orderItems"
    dataSource"dataSource"gtSELECT FROM
    itemsWHERE order_id ltcout value"orderID"/gt
    ORDER BY pricelt/sqlquerygtlttablegtltcforEach
    var"row" items"orderItems.rows"gtlttrgtlttdgtltc
    out value"row.itemName"/gtlt/tdgtlttdgtltcout
    value"row.price"/gtlt/tdgtlttdgtltcout
    value"row.weight"/gtlt/tdgtlt/trgtlt/cforEachgtlt/
    tablegt

21
La librería de etiquetas SQL II
  • También se soportan acciones para manejar
    transacciones (sqltransaction), sqlupdate
    soporta no sólo updates sino que también insert y
    delete e incluso create, es decir todas las
    acciones SQL que no devuelven un resultado
  • ltsqltransaction dataSource"dataSource"gtltsql
    updategtUPDATE accountSET account_balance
    account_balance -?WHERE accountNo
    ?ltsqlparam value"transferAmount"/gtltsqlpara
    m value"sourceAccount"/gtlt/sqlupdategtltsqlup
    dategtUPDATE accountSET account_balance
    account_balance ?WHERE accountNo
    ?ltsqlparam value"transferAmount"/gtltsqlpara
    m value"destAccount"/gtlt/sqlupdategt
  • lt/sqltransactiongt

22
La librería de etiquetas XML I
  • El soporte de XML que lleva a cabo JSTL conforma
    con la especificación XPath.
  • Xpath provee una sintáxis clara para acceder a
    partes jerárquicas de un documento.
  • Acciones cimport es utilizada para importar un
    documento, mientras xparse para genera un árbol
    DOM a partir de él. xset crea una variable a
    partir de un extracto de XML
  • lt!-- Find and parse our XML document (somewhere
    on the WWW) --gt
  • ltcimport url"http//www.cheapstuff.com/orderStat
    us?id2435" var"xml"/gt
  • ltxparse xml"xml" var"doc"/gtlt!-- access
    XML data via XPath expressions --gtltxout
    select"doc/name"/gtltxout select"doc/shippingA
    ddress"/gtltxout select"doc/deliveryDate"/gtlt!--
    Set a scoped variable --gtltxset var"custName"
    scope"request" select"doc/name"/gt

23
La librería de etiquetas XML II
  • JSTL se integra fenomenálmente con XSTL
  • lt_at_ taglib uri"http//java.sun.com/jstl/core"
    prefix"c" gtlt_at_ taglib uri"http//java.sun.com/
    jstl/xml" prefix"x" gtltcset var"xsltSource"gt
    lt?xml version"1.0"?gtltxslstylesheet
    xmlnsxsl"http//www.w3.org/1999/XSL/Transform"
    version"1.0"gtltxsltemplate match"/"gt      ltxsl
    apply-templates/gtlt/xsltemplategtltxsltemplate
    match"music"gtlthtmlgtltheadgtlt/headgtltbody
    marginheight"0" marginwidth"0" topmargin"0"
    leftmargin"0"gtlttable cellpadding"0"
    cellspacing"0" border"1" bgcolor"ffffff"gt    
      lttrgt            lttdgtltSTRONGgtArtistlt/STRONGgtlt/td
    gt            lttdgtltSTRONGgtAlbumlt/STRONGgtlt/tdgt    
            lttdgtltSTRONGgtYearlt/STRONGgtlt/tdgt           
     lttdgtltSTRONGgtGenrelt/STRONGgtlt/tdgt      lt/trgt     
     

24
La librería de etiquetas XML III
  • lt!---Set up for loop to
    collect all the artist information
    //--gt      lt!-- ltxslfor-each select"./name()
    'artists'"gt --gt      ltxslfor-each
    select"artists"gt            lttrgt               
       lttdgtltxslvalue-of select"artist"/gtlt/tdgt      
                lttdgtltxslvalue-of select"album"/gtlt/td
    gt                  lttdgtltxslvalue-of
    select"year"/gtlt/tdgt                  lttdgtltxslva
    lue-of select"genre"/gtlt/tdgt            lt/trgt   
       lt/xslfor-eachgtlt/tablegtlt/bodygtlt/htmlgtlt/xsl
    templategtlt/xslstylesheetgtlt/csetgt
    ltxtransform xslt"xsltSource"
    gtltmusicgtltartistsgt            ltartistgtJonny
    Blt/artistgt            ltalbumgtFeedback and
    Distortionlt/albumgt            ltyeargt2001lt/yeargt 
               ltgenregtRocklt/genregt      lt/artistsgt
          ltartistsgt            ltartistgtHarmony's
    Nieceslt/artistgt            ltalbumgtSappy Pop
    Balladslt/albumgt            ltyeargt2002lt/yeargt    
            ltgenregtPoplt/genregt      lt/artistsgt
    lt/musicgtlt/xtransformgt
  •       

25
La librería de etiquetas XML IV
  • Una manera más sencilla de realizar una
    transformación XSLT sería
  • lt_at_ taglib uri"http//java.sun.com/jstl/core"
    prefix"c"gt
  • lt_at_ taglib uri"http//java.sun.com/jstl/x"
    prefix"x"gt
  • ltcimport var"xmlSource" urlsomeDocumentURL"
    /gt
  • ltcimport var"xsltSource" urlanotherDocumentU
    RL" /gt
  • ltxtransform xml"xmlSource"
    xslt"xsltSource"/gt

26
Recursos
  • Javadoc de JSTL APIs es disponible en
  • http//www.jcp.org/aboutJava/communityprocess/fina
    l/jsr052/

27
Conclusiones
  • A codificar ahora que lo sabes todo sobre JSTL
  • Tarea transformar la aplicación de JSPs que
    realizasteis usando JSTL
Write a Comment
User Comments (0)
About PowerShow.com