SlideShare a Scribd company logo
1 of 22
Páginas dinámicas con tags JSP


             mayo de 2005
¿Qué son?
       JSP incorpora tags <jsp:xxx …>
         Generalmente manejo de propiedades de beans,
          incluir otros JSPs …
         Funcionalidad limitada
       Extensiones:
         Definición de nuevos Tags <mi-tag:mi-funcion>
         Llamada a función Java a través de sintáxis XML
         Hacen uso de Java Tag Extension API
¿Para qué sirven?
       JSPs resolvían problema de servlets
          Más elegancia al escribir HTML
       Ventajas de JSPs
          Más fáciles de mantener por no programadores
       HTML estático  Limitación presentación. Necesaria cierta lógica en
        presentación. Solución JSP:
          Scriptlets (<% %>)
              Rápidos
              Menos familiar para diseñador
              Páginas pierden estilo y claridad
          Extensiones
              Más costosas de programar en un principio
              Más sencillas de utilizar
              Mejor mantenimiento
              Separación más clara Lógica – Presentación
              Utilización más sencilla por diseñador (son tags XML)  Mejor integración con
               HTML
¿Qué aporta Struts?
       Struts ha escrito sus propias extensiones para
        tareas comunes
            Manejo de beans
            Internacionalización
            Lógica (iteracción, chequeo de propiedades, etc.)
            Simplificación controles HTML <html:xxx>
       Alternativas
         Especificación JSTL (Java Standard Tag Library)
            Definición oficial Sun
            Estándar oficial. Requiere JSP 2.0 (p.e. Tomcat 5).
            Primera implementación Jakarta Apache Taglibs  Puede
             usarse con Struts
            Funcionalidad complementaria o alternativa a tags Struts
¿Cómo se escribe una Tag
                              Extension?
       Definición formato de tag
              Fichero tld con sintaxis XML.
                    Debe verificar DTD de acuerdo a versión JSP utilizada
           <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

       Codificación lógica de tag:
          public class BaseTag extends TagSupport {
          // ...
          public int doStartTag() throws JspException {
                              HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
                              StringBuffer buf = new StringBuffer("<base href="");
                              buf.append(request.getScheme());
                              buf.append("://");
                              buf.append(request.getServerName());
                              buf.append(request.getRequestURI());
                              buf.append(""");
                              if (target != null) {
                                                    buf.append(" target="");
                                                    buf.append(target);
                                                    buf.append(""");
                              }
                              buf.append(">");
                              JspWriter out = pageContext.getOut();
                              try {
                                                    out.write(buf.toString());
                              }
                              catch (IOException e) {
                                                    pageContext.setAttribute(Action.EXCEPTION_KEY, e,
                                                    PageContext.REQUEST_SCOPE);
                                                    throw new JspException(messages.getMessage("common.io", e.toString()));
                              }
                              return EVAL_BODY_INCLUDE;
          }
          }
¿Cómo se utilizan Tag
                 Extensions?
   Instalar ficheros TLD y JAR
        WEB-INFlibstruts.jar
        WEB-INFstruts-bean.tld
        WEB-INFstruts-html.tld
        WEB-INFstruts-logic.tld

   Configurar web.xml
        <web-app>
            <!-- ... Otros elementos ... -->
            <taglib>
            <taglib-uri>/tags/struts-bean</taglib-uri>
            <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
            </taglib>
        </web-app>
¿Cómo se utilizan Tag
                Extensions? (II)
   Referenciar definiciones taglib en JSP
         <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
         <%@ taglib uri="/tags/struts-html" prefix="html" %>
        Atributo URI especificado en web.xml
   Utiliza los tags dentro del JSP
     <bean:write name="userForm" property="firstName"/>
Tipos taglibs de Struts
       Librerías incluidas
         Bean
             Acceso a propiedades de JavaBeans
         Html
             Relaciona campos formularios HTML con framework Struts
         Logic
             Generación condicional de salida (HTML) en base a
              recorrido de colecciones, control de flujo, etc
         Nested
             Proporcionan capacidades de anidamiento a otras tags
         Tiles
             Permiten crear páginas en base a piezas (tiles). (Vistas
              más adelante)
Características comunes
       Ámbito automático
         Los objetos se almacenan en uno de estos ámbitos (menor a
          mayor persistencia): page, request, session o application
         Todos los tags buscan el objeto referido en todos los ámbitos:
          Se quedan con primera estancia
         Puede fijarse el ámbito de búsqueda: argumento scope
       Nombres de propiedades comunes
         Propiedades típicas de cada tag:
             Id: nombre de variable creada por un tag
             Name: nombre simbólico del bean (nombre del atributo)
             Property: propiedad del bean
             Scope: ámbito donde buscar el bean
Características comunes (II)
       Sintaxis extendida
         Referencia anidada
            property=“a.b.c”  getA().getB().getC() /
               getA().getB()setC(valor)
         Referencia indexada (desde 1.1)
            property=“a[2]”  getA(2) / setA(2, valor)
       Scriptlets dentro de tags
         Uso como último recurso, pero posible
            <html:link href=‘<%= "/" + name + "/index.jsp" %>’>

       Gestión de errores común
         Atributo “org.apache.struts.action.EXCEPTION” del
          request  Nombre de JSP de tratamiento
Taglib <bean>
   Lista de tags
    Nombre Tag   Descripción
    cookie       Define variable scripting basado en el valor de una cookie

    define       Define variable scripting basado en el valor de una propiedad de bean

    header       Define variable scripting basado en el valor de una cabecera del request

    include      Carga el objeto response y lo hace disponible como bean

    message      Muestra mensaje internacionalizado desde etiqueta

    page         Hace disponible un objeto del contexto page como bean

    parameter    Hace disponible un parámetro del contexto request como variable

    resource     Carga recurso web y lo hace disponible como bean

    size         Define un bean que contiene el número de elementos de una colección

    struts       Expone la configuración de struts como un objeto

    write        Imprime valor de una propiedad de un bean
Taglib <bean> (II)
       Tags más importantes:
         Tag <bean:write>
            Acceso de lectura a propiedades de beans
             <bean:write name="shoppingCart" property="itemSum"/>
         Tag <bean:message>
            Imprime mensaje internacionalizado
            Se fija en el locale solicitado por el cliente en el request
            Extrae literal de fichero properties especificado en struts-
             config.xml.(Puede haber varios  bundle)
             <bean:message key=“inquiry” />
              es_ES  ¿Cómo está usted?
              de_DE  Wie geht es Ihnen?
Taglib <html> (I)
       Diseñados para rellenar formularios con datos
        dinámicos
          <input type="text" name="firstName“            value="<
          %=formBean.getFirstName()%>"/>
          equivale
           <html:text property="firstName"/>

         El bean no necesita ser referenciado. Por defecto el mismo
          para toda el formulario
         Hay tantos tags como controles HTML. P.e.:
          <html:file>  <input type=“file”/>
          <html:img>  <img>
          <html:radio>  <input type=“radio”>
Taglib <html> (II)
   Todos los tags tienen los mismos
    atributos
       name: Nombre del ActionForm o JavaBean
       on*: Tags de eventos Javascript
       accesskey: Tecla de acceso rápido de
        acceso a este elemento
       tabindex: Orden para focus con tabulador
       style: Estilo CSS
       StyleClass: Hoja de estilos CSS
Taglib <logic> (I)
       Tres tipos:
         Evaluación: Valor ==, >, <, o presente
         Control de flujo: Redirección/Forward del request
         Repetición: Iteración sobre colección
       Tags de evaluación
         Generalmente para diferentes vistas dentro de una misma
          página
          <logic:notPresent name="logonForm">
              <html:link forward="logon">Sign in here</html:link>
          </logic:notPresent>
          <logic:present name="logonForm">
              <html:link forward="logoff">Sign out</html:link>
          </logic:present>
         Pueden comparar valor con cookie, cabecera HTTP,
          paramero del request, bean o propiedad de un bean
Taglib <logic> (II)
   Tags de control de flujo
       Uso típico redirección index.jsp a un action
          <%@ taglib uri="/tags/struts-logic" prefix="logic" %>
          <logic:forward name="welcome"/>

   Tags de repetición
        <UL>
           <logic:iterate id="item" name="list">
              <LI><bean:write name="item"/></LI>
           </logic:iterate>
        </UL>
Usos habituales
   Ejemplo. Login:
         <%@ taglib uri="/tags/struts-html" prefix="html" %>
         <html:html>
         <HEAD><TITLE>Sign in, Please!</title></head>
         <BODY>
         <html:errors/>
         <html:form action="/logonSubmit"
         name="logonForm" type="app.LogonForm" scope="request">
         <TABLE border="0" width="100%">
         <TR><TH>Username: </TH>
         <TD><html:text property="username"/></TD>
         </TR>
         <TR><TH>Password: </TH>
         <TD><html:password property="password"/></TD>
         </TR>
         <TR>
         <TD><html:submit/></TD>
         <TD><html:reset/></TD>
         </TR>
         </TABLE>
         </html:form>
         </BODY>
         </html:html>
Usos habituales (II)
       Declaración de un formulario
         <html:form></html:form>
         <html:form action="/logonSubmit"
         name="logonForm" type="app.LogonForm" scope="request">
         Todo elemento dentro del formulario referenciará
          por defecto al Bean (o ActionForm) logonForm que
          es una instancia de LogonForm en el contexto del
          objeto request
         <html:errors/> Imprime errores anteriores al rellenar
          formulario
Usos habituales (III)
       Rellenar control HTML
          <html:text property="username"/>
         Equivale a (ejemplo anterior):
          <input type="text“ name=“username” value="<%=
          logonForm.getUsername() %>"">
             logonForm es un bean obtenido del request
       Selección de radio button
          <html:radio property="expectedVia" value="UPS"/>UPS
          <html:radio property="expectedVia"
             value="FEDX"/>Federal Express
          <html:radio property="expectedVia"
             value="AIRB"/>Airborne
            Habilita como checked la opción cuyo valor coincida con el valor
             de la propiedad
Usos habituales (IV)
   Utilizar una colección para control options
         Colección propiedad de un ActionForm
          <TR>
          <TD>Item Image Source:</TD>
          <TD><html:select property="hasImage">
          <html:options property="imageOptions" />
          </html:select>
          </TD>
          </TR>
         Colección propiedad de un Bean aparte (de request, session o
          application)
          <TR>
          <TD>Item Image Source:</TD>
          <TD><html:select property="hasImage">
          <html:options collection="imageOptions" />
          </html:select>
          </TD>
          </TR>
Usos avanzados (I)
   Iterar sólo sobre una parte de una
    colección
       P.e. avanzar de 5 en 5 elementos
        empezando del 5º:
        <logic:iterate id="element" name="list" offset="5"
            length="5">
       Hacer disponible variable de iteración
        <OL>
        <logic:iterate id="element" name="list" indexId="index">
        <LI><EM><bean:write name="element"/></EM>
        [<bean:write name="index"/>]</LI>
        </logic:iterate>
        </OL>
Usos avanzados (II)
       Anidar expresiones de lógica
         Verificar que un bean existe y su propiedad no es nula
          <logic:present name="bean"><logic:notEmpty name="bean"
              property="value">
          <bean:write name="bean" property="value"/>
          </logic:empty></logic:present>
       Utilización de <html:rewrite> para referenciar recursos
        HTML (.js, .css, etc)
         Convierte URI relativa al contexto en URI relativa a la
          aplicación (visible desde fuera)
         Se puede definir como ActionForward en struts-config.xml y
          referenciarla simbólicamente:

          <LINK rel="stylesheet" type="text/css"
          href="<html:rewrite forward='baseStyleSheet'/>">

More Related Content

What's hot

Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletjubacalo
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSPjubacalo
 
jQuery 1.3 Eghost Julio2009
jQuery 1.3 Eghost Julio2009jQuery 1.3 Eghost Julio2009
jQuery 1.3 Eghost Julio2009Irontec
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCCarlos Hernando
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLjubacalo
 
88 Php. Imagenes En Tablas
88 Php. Imagenes En Tablas88 Php. Imagenes En Tablas
88 Php. Imagenes En TablasJosé M. Padilla
 
Servicio web java php perl google
Servicio web  java php perl googleServicio web  java php perl google
Servicio web java php perl googleSeveredDRA
 
Persistencia en Java - Serialización
Persistencia en Java - SerializaciónPersistencia en Java - Serialización
Persistencia en Java - SerializaciónCarlos Hernando
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcatjubacalo
 
12.android servicios web
12.android   servicios web12.android   servicios web
12.android servicios webguidotic
 
Integración de aplicaciones Java
Integración de aplicaciones JavaIntegración de aplicaciones Java
Integración de aplicaciones JavaIker Canarias
 
Guia N5 Proyectos Web Consultas Php Y My Sql
Guia N5   Proyectos Web   Consultas Php Y My SqlGuia N5   Proyectos Web   Consultas Php Y My Sql
Guia N5 Proyectos Web Consultas Php Y My SqlJose Ponce
 
Seguridad en PDF: Adobe ¬¬
Seguridad en PDF: Adobe ¬¬Seguridad en PDF: Adobe ¬¬
Seguridad en PDF: Adobe ¬¬Alejandro Ramos
 

What's hot (20)

Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
 
02%20 ant
02%20 ant02%20 ant
02%20 ant
 
jQuery 1.3 Eghost Julio2009
jQuery 1.3 Eghost Julio2009jQuery 1.3 Eghost Julio2009
jQuery 1.3 Eghost Julio2009
 
Symfony 2 CMF
Symfony 2 CMFSymfony 2 CMF
Symfony 2 CMF
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBC
 
Jsp
JspJsp
Jsp
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
 
88 Php. Imagenes En Tablas
88 Php. Imagenes En Tablas88 Php. Imagenes En Tablas
88 Php. Imagenes En Tablas
 
Servicio web java php perl google
Servicio web  java php perl googleServicio web  java php perl google
Servicio web java php perl google
 
Persistencia en Java - Serialización
Persistencia en Java - SerializaciónPersistencia en Java - Serialización
Persistencia en Java - Serialización
 
Curso Jsp
Curso JspCurso Jsp
Curso Jsp
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Manual Basico de jQuery
Manual Basico de jQueryManual Basico de jQuery
Manual Basico de jQuery
 
Introjsp
IntrojspIntrojsp
Introjsp
 
12.android servicios web
12.android   servicios web12.android   servicios web
12.android servicios web
 
Integración de aplicaciones Java
Integración de aplicaciones JavaIntegración de aplicaciones Java
Integración de aplicaciones Java
 
Guia N5 Proyectos Web Consultas Php Y My Sql
Guia N5   Proyectos Web   Consultas Php Y My SqlGuia N5   Proyectos Web   Consultas Php Y My Sql
Guia N5 Proyectos Web Consultas Php Y My Sql
 
Seguridad en PDF: Adobe ¬¬
Seguridad en PDF: Adobe ¬¬Seguridad en PDF: Adobe ¬¬
Seguridad en PDF: Adobe ¬¬
 

Similar to 05 jsp tags

Hibernate 3.2 short manual
Hibernate 3.2 short manualHibernate 3.2 short manual
Hibernate 3.2 short manualEmmerson Miranda
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generationSergi Almar i Graupera
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a TomcatIker Canarias
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigMarcos Labad
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesDani Latorre
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSIan Monge Pérez
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Ronald Cuello
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con HibernateMauro Gomez Mejia
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DBjubacalo
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de arieslmrv
 
Persistencia de un modelo de objetos
Persistencia de un modelo de objetosPersistencia de un modelo de objetos
Persistencia de un modelo de objetosJorge Ercoli
 
Manual Java Xml Html
Manual Java Xml HtmlManual Java Xml Html
Manual Java Xml Htmllrivera2
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008guest02b440
 

Similar to 05 jsp tags (20)

Hibernate 3.2 short manual
Hibernate 3.2 short manualHibernate 3.2 short manual
Hibernate 3.2 short manual
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de aries
 
07 tiles
07 tiles07 tiles
07 tiles
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JS
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con Hibernate
 
01 introducción
01 introducción01 introducción
01 introducción
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de aries
 
08 i18 n
08 i18 n08 i18 n
08 i18 n
 
Curso Java Avanzado 6 Struts
Curso Java Avanzado   6 StrutsCurso Java Avanzado   6 Struts
Curso Java Avanzado 6 Struts
 
Persistencia de un modelo de objetos
Persistencia de un modelo de objetosPersistencia de un modelo de objetos
Persistencia de un modelo de objetos
 
Manual Java Xml Html
Manual Java Xml HtmlManual Java Xml Html
Manual Java Xml Html
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
 

More from Roberto Moreno Doñoro (20)

21 bibsw tablasyotros
21 bibsw tablasyotros21 bibsw tablasyotros
21 bibsw tablasyotros
 
20 curvaselipticas
20 curvaselipticas20 curvaselipticas
20 curvaselipticas
 
19 protocoloscripto
19 protocoloscripto19 protocoloscripto
19 protocoloscripto
 
18 correoseguro
18 correoseguro18 correoseguro
18 correoseguro
 
17 certdigitalespkcs
17 certdigitalespkcs17 certdigitalespkcs
17 certdigitalespkcs
 
16 autenticafirma
16 autenticafirma16 autenticafirma
16 autenticafirma
 
15 funcioneshash
15 funcioneshash15 funcioneshash
15 funcioneshash
 
14 cifraasimetrica
14 cifraasimetrica14 cifraasimetrica
14 cifraasimetrica
 
13 ciframochilas
13 ciframochilas13 ciframochilas
13 ciframochilas
 
12 cifrasimetrica
12 cifrasimetrica12 cifrasimetrica
12 cifrasimetrica
 
11 cifraflujo
11 cifraflujo11 cifraflujo
11 cifraflujo
 
10 ciframoderna
10 ciframoderna10 ciframoderna
10 ciframoderna
 
09 cifraclasica
09 cifraclasica09 cifraclasica
09 cifraclasica
 
08 compalgoritmos
08 compalgoritmos08 compalgoritmos
08 compalgoritmos
 
07 teorianumeros
07 teorianumeros07 teorianumeros
07 teorianumeros
 
06 teoriainfo
06 teoriainfo06 teoriainfo
06 teoriainfo
 
05 gestionseg
05 gestionseg05 gestionseg
05 gestionseg
 
04 calidadinfo
04 calidadinfo04 calidadinfo
04 calidadinfo
 
02 breveintrocripto
02 breveintrocripto02 breveintrocripto
02 breveintrocripto
 
01 presentalibro
01 presentalibro01 presentalibro
01 presentalibro
 

Recently uploaded

describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...DavidBautistaFlores1
 
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FEl PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FJulio Lozano
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfmiriamguevara21
 
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxEJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxFabianValenciaJabo
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxNataliaGonzalez619348
 
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalPPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalRosarioChoque3
 
libro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajelibro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajeKattyMoran3
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfssuser50d1252
 
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJODIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJOLeninCariMogrovejo
 
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)jlorentemartos
 
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOPLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOMARIBEL DIAZ
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...GIANCARLOORDINOLAORD
 
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfJosé Hecht
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Rosabel UA
 
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...MagalyDacostaPea
 
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2Eliseo Delgado
 

Recently uploaded (20)

describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...
 
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FEl PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdf
 
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxEJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
 
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalPPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
 
libro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajelibro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguaje
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
 
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJODIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
 
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
 
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOPLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
 
Unidad 2 | Teorías de la Comunicación | MCDIU
Unidad 2 | Teorías de la Comunicación | MCDIUUnidad 2 | Teorías de la Comunicación | MCDIU
Unidad 2 | Teorías de la Comunicación | MCDIU
 
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024
 
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
 
¿Amor o egoísmo? Esa es la cuestión.pptx
¿Amor o egoísmo? Esa es la cuestión.pptx¿Amor o egoísmo? Esa es la cuestión.pptx
¿Amor o egoísmo? Esa es la cuestión.pptx
 
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
 

05 jsp tags

  • 1. Páginas dinámicas con tags JSP mayo de 2005
  • 2. ¿Qué son?  JSP incorpora tags <jsp:xxx …>  Generalmente manejo de propiedades de beans, incluir otros JSPs …  Funcionalidad limitada  Extensiones:  Definición de nuevos Tags <mi-tag:mi-funcion>  Llamada a función Java a través de sintáxis XML  Hacen uso de Java Tag Extension API
  • 3. ¿Para qué sirven?  JSPs resolvían problema de servlets  Más elegancia al escribir HTML  Ventajas de JSPs  Más fáciles de mantener por no programadores  HTML estático  Limitación presentación. Necesaria cierta lógica en presentación. Solución JSP:  Scriptlets (<% %>)  Rápidos  Menos familiar para diseñador  Páginas pierden estilo y claridad  Extensiones  Más costosas de programar en un principio  Más sencillas de utilizar  Mejor mantenimiento  Separación más clara Lógica – Presentación  Utilización más sencilla por diseñador (son tags XML)  Mejor integración con HTML
  • 4. ¿Qué aporta Struts?  Struts ha escrito sus propias extensiones para tareas comunes  Manejo de beans  Internacionalización  Lógica (iteracción, chequeo de propiedades, etc.)  Simplificación controles HTML <html:xxx>  Alternativas  Especificación JSTL (Java Standard Tag Library)  Definición oficial Sun  Estándar oficial. Requiere JSP 2.0 (p.e. Tomcat 5).  Primera implementación Jakarta Apache Taglibs  Puede usarse con Struts  Funcionalidad complementaria o alternativa a tags Struts
  • 5. ¿Cómo se escribe una Tag Extension?  Definición formato de tag  Fichero tld con sintaxis XML.  Debe verificar DTD de acuerdo a versión JSP utilizada <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">  Codificación lógica de tag: public class BaseTag extends TagSupport { // ... public int doStartTag() throws JspException { HttpServletRequest request = (HttpServletRequest)pageContext.getRequest(); StringBuffer buf = new StringBuffer("<base href=""); buf.append(request.getScheme()); buf.append("://"); buf.append(request.getServerName()); buf.append(request.getRequestURI()); buf.append("""); if (target != null) { buf.append(" target=""); buf.append(target); buf.append("""); } buf.append(">"); JspWriter out = pageContext.getOut(); try { out.write(buf.toString()); } catch (IOException e) { pageContext.setAttribute(Action.EXCEPTION_KEY, e, PageContext.REQUEST_SCOPE); throw new JspException(messages.getMessage("common.io", e.toString())); } return EVAL_BODY_INCLUDE; } }
  • 6. ¿Cómo se utilizan Tag Extensions?  Instalar ficheros TLD y JAR WEB-INFlibstruts.jar WEB-INFstruts-bean.tld WEB-INFstruts-html.tld WEB-INFstruts-logic.tld  Configurar web.xml <web-app> <!-- ... Otros elementos ... --> <taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> </web-app>
  • 7. ¿Cómo se utilizan Tag Extensions? (II)  Referenciar definiciones taglib en JSP <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-html" prefix="html" %>  Atributo URI especificado en web.xml  Utiliza los tags dentro del JSP <bean:write name="userForm" property="firstName"/>
  • 8. Tipos taglibs de Struts  Librerías incluidas  Bean  Acceso a propiedades de JavaBeans  Html  Relaciona campos formularios HTML con framework Struts  Logic  Generación condicional de salida (HTML) en base a recorrido de colecciones, control de flujo, etc  Nested  Proporcionan capacidades de anidamiento a otras tags  Tiles  Permiten crear páginas en base a piezas (tiles). (Vistas más adelante)
  • 9. Características comunes  Ámbito automático  Los objetos se almacenan en uno de estos ámbitos (menor a mayor persistencia): page, request, session o application  Todos los tags buscan el objeto referido en todos los ámbitos: Se quedan con primera estancia  Puede fijarse el ámbito de búsqueda: argumento scope  Nombres de propiedades comunes  Propiedades típicas de cada tag:  Id: nombre de variable creada por un tag  Name: nombre simbólico del bean (nombre del atributo)  Property: propiedad del bean  Scope: ámbito donde buscar el bean
  • 10. Características comunes (II)  Sintaxis extendida  Referencia anidada property=“a.b.c”  getA().getB().getC() / getA().getB()setC(valor)  Referencia indexada (desde 1.1) property=“a[2]”  getA(2) / setA(2, valor)  Scriptlets dentro de tags  Uso como último recurso, pero posible <html:link href=‘<%= "/" + name + "/index.jsp" %>’>  Gestión de errores común  Atributo “org.apache.struts.action.EXCEPTION” del request  Nombre de JSP de tratamiento
  • 11. Taglib <bean>  Lista de tags Nombre Tag Descripción cookie Define variable scripting basado en el valor de una cookie define Define variable scripting basado en el valor de una propiedad de bean header Define variable scripting basado en el valor de una cabecera del request include Carga el objeto response y lo hace disponible como bean message Muestra mensaje internacionalizado desde etiqueta page Hace disponible un objeto del contexto page como bean parameter Hace disponible un parámetro del contexto request como variable resource Carga recurso web y lo hace disponible como bean size Define un bean que contiene el número de elementos de una colección struts Expone la configuración de struts como un objeto write Imprime valor de una propiedad de un bean
  • 12. Taglib <bean> (II)  Tags más importantes:  Tag <bean:write>  Acceso de lectura a propiedades de beans <bean:write name="shoppingCart" property="itemSum"/>  Tag <bean:message>  Imprime mensaje internacionalizado  Se fija en el locale solicitado por el cliente en el request  Extrae literal de fichero properties especificado en struts- config.xml.(Puede haber varios  bundle) <bean:message key=“inquiry” />  es_ES  ¿Cómo está usted?  de_DE  Wie geht es Ihnen?
  • 13. Taglib <html> (I)  Diseñados para rellenar formularios con datos dinámicos <input type="text" name="firstName“ value="< %=formBean.getFirstName()%>"/> equivale <html:text property="firstName"/>  El bean no necesita ser referenciado. Por defecto el mismo para toda el formulario  Hay tantos tags como controles HTML. P.e.: <html:file>  <input type=“file”/> <html:img>  <img> <html:radio>  <input type=“radio”>
  • 14. Taglib <html> (II)  Todos los tags tienen los mismos atributos  name: Nombre del ActionForm o JavaBean  on*: Tags de eventos Javascript  accesskey: Tecla de acceso rápido de acceso a este elemento  tabindex: Orden para focus con tabulador  style: Estilo CSS  StyleClass: Hoja de estilos CSS
  • 15. Taglib <logic> (I)  Tres tipos:  Evaluación: Valor ==, >, <, o presente  Control de flujo: Redirección/Forward del request  Repetición: Iteración sobre colección  Tags de evaluación  Generalmente para diferentes vistas dentro de una misma página <logic:notPresent name="logonForm"> <html:link forward="logon">Sign in here</html:link> </logic:notPresent> <logic:present name="logonForm"> <html:link forward="logoff">Sign out</html:link> </logic:present>  Pueden comparar valor con cookie, cabecera HTTP, paramero del request, bean o propiedad de un bean
  • 16. Taglib <logic> (II)  Tags de control de flujo  Uso típico redirección index.jsp a un action <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <logic:forward name="welcome"/>  Tags de repetición <UL> <logic:iterate id="item" name="list"> <LI><bean:write name="item"/></LI> </logic:iterate> </UL>
  • 17. Usos habituales  Ejemplo. Login: <%@ taglib uri="/tags/struts-html" prefix="html" %> <html:html> <HEAD><TITLE>Sign in, Please!</title></head> <BODY> <html:errors/> <html:form action="/logonSubmit" name="logonForm" type="app.LogonForm" scope="request"> <TABLE border="0" width="100%"> <TR><TH>Username: </TH> <TD><html:text property="username"/></TD> </TR> <TR><TH>Password: </TH> <TD><html:password property="password"/></TD> </TR> <TR> <TD><html:submit/></TD> <TD><html:reset/></TD> </TR> </TABLE> </html:form> </BODY> </html:html>
  • 18. Usos habituales (II)  Declaración de un formulario  <html:form></html:form> <html:form action="/logonSubmit" name="logonForm" type="app.LogonForm" scope="request">  Todo elemento dentro del formulario referenciará por defecto al Bean (o ActionForm) logonForm que es una instancia de LogonForm en el contexto del objeto request  <html:errors/> Imprime errores anteriores al rellenar formulario
  • 19. Usos habituales (III)  Rellenar control HTML <html:text property="username"/>  Equivale a (ejemplo anterior): <input type="text“ name=“username” value="<%= logonForm.getUsername() %>"">  logonForm es un bean obtenido del request  Selección de radio button <html:radio property="expectedVia" value="UPS"/>UPS <html:radio property="expectedVia" value="FEDX"/>Federal Express <html:radio property="expectedVia" value="AIRB"/>Airborne  Habilita como checked la opción cuyo valor coincida con el valor de la propiedad
  • 20. Usos habituales (IV)  Utilizar una colección para control options  Colección propiedad de un ActionForm <TR> <TD>Item Image Source:</TD> <TD><html:select property="hasImage"> <html:options property="imageOptions" /> </html:select> </TD> </TR>  Colección propiedad de un Bean aparte (de request, session o application) <TR> <TD>Item Image Source:</TD> <TD><html:select property="hasImage"> <html:options collection="imageOptions" /> </html:select> </TD> </TR>
  • 21. Usos avanzados (I)  Iterar sólo sobre una parte de una colección  P.e. avanzar de 5 en 5 elementos empezando del 5º: <logic:iterate id="element" name="list" offset="5" length="5">  Hacer disponible variable de iteración <OL> <logic:iterate id="element" name="list" indexId="index"> <LI><EM><bean:write name="element"/></EM> [<bean:write name="index"/>]</LI> </logic:iterate> </OL>
  • 22. Usos avanzados (II)  Anidar expresiones de lógica  Verificar que un bean existe y su propiedad no es nula <logic:present name="bean"><logic:notEmpty name="bean" property="value"> <bean:write name="bean" property="value"/> </logic:empty></logic:present>  Utilización de <html:rewrite> para referenciar recursos HTML (.js, .css, etc)  Convierte URI relativa al contexto en URI relativa a la aplicación (visible desde fuera)  Se puede definir como ActionForward en struts-config.xml y referenciarla simbólicamente: <LINK rel="stylesheet" type="text/css" href="<html:rewrite forward='baseStyleSheet'/>">