Estas en:

Catálogo de servicios
Autentia (PDF 6,2MB)

tríptico de Autentia
En formato comic...

Acceso de usuarios registrados:

Deseo registrarme

He olvidado mis datos de acceso

Registra tu empresa:

Descubre las ventajas de registrar tu empresa en AdictosAlTrabajo...

Registrar mi empresa

Listado de empresas ya registradas

Google

Últimos tutoriales

+Noticias Destacadas

+Comentarios Cómic

  2009-08-28 - 11:17:42 AM
   rcanales escribío:
    Completamente de acuerdo contigo. Yo no se quien hace las cuentas en tu empresa [...]
  2009-08-28 - 07:01:44 AM
   Anonimo escribío:
    pues yo tengo el cuello rigido como una piedra porque el aire acondicionado esta [...]
  2009-07-23 - 10:32:12 PM
   Jaime escribío:
    definitivamente la parte mas divertida es la de programar, y la explotacion lo v [...]
  2009-05-13 - 11:26:33 PM
   williarim escribío:
    Quiero felicitar al autor de estas historietas! Gracias por compartir con todos [...]
  2009-05-13 - 04:40:59 PM
   rcanales escribío:
    Hola Brunoise: Todo tiene perspectiva. El función de tus forma de ser y ver e [...]

+Enlaces


Tutorial desarrollado por

Roberto Canales Mora

Creador y propietario de AdictosAlTrabajo.com, Director General de Autentia S.L., Ingeniero Técnico de Telecomunicaciones y Executive MBA por el Instituto de Empresa 2007. Perfíl Technorati

Experto en formación en: Dirección de proyectos informáticos, análisis y diseño UML, arquitectura Web, patrones de diseño y JEE a todos los niveles.

Puedes consultar mi CV y alguna de mis primeras aplicaciones (de los 90) aquí

Catálogo de servicios de Autentia

Descargar (6,2 MB)

Descargar en versión comic (17 MB)

AdictosAlTrabajo.com es el Web de difusión de conocimiento de Autentia.

Catálogo de cursos

Fecha de creación del tutorial: 2003-10-18

JSP y EL

JSP 2.0 y EL (Expresion Languaje) 

La especificación 2.0 de JSP ha introducido una nueva librería estandar de etiquetas, denominada JSTL.

Estas etiquetas tratan de abstraer la complejidad de introducir código Java (scriptlet) dentro de JSP, del mismo modo que trata de evitar que cada equipo de desarrollo cree un juego de etiquetas no estándar para las mismas labores.

Dentro de estas etiquetas, se utiliza un lenguaje llamado EL, lenguaje de expresiones, que pretende ser un lenguaje más sencillo que Java, para realizar operaciones.

 Uno de los primeros contenedores de JSP que soporta estas capacidades es Tomcat5 (ver tutorial que describe su instalación).

Fichero descriptor

Lo primero que vamos a hacer es cambiar el fichero descriptor, copiando el que viene en los ejemplos. Si intentáis usar uno que ya tengáis, no se entera el Tomcat que tiene que interpretar los nuevos elementos de EL.

Fijaos en algunas líneas:

Indicamos que queremos interpretar EL        <el-ignored>false</el-ignored>
Indicamos que no soportamos scriplet          <scripting-invalid>true</scripting-invalid>
Podemos poner una cabecera por defecto    <include-prelude>prelude.jspf</include-prelude>
Y tambien un pie                                           <include-coda>coda.jspf</include-coda>

 

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
version="2.4">


<description>Ejemplos de EL de rcanales@adictosaltrabajo.com</description>
<display-name>Ejemplos de JSP 2.0 </display-name>

<jsp-config>
  <jsp-property-group>
    <description>Definicion de atributos</description>
     <display-name>ConfiguracionJSP</display-name>
     <url-pattern>/*</url-pattern>
     <el-ignored>false</el-ignored>
     <page-encoding>ISO-8859-1</page-encoding>
     <scripting-invalid>true</scripting-invalid>
     <include-prelude>prelude.jspf</include-prelude>
     <include-coda>coda.jspf</include-coda>
  </jsp-property-group>
</jsp-config>

</web-app>

Si ahora nos vamos al directorio raiz y creamos un fichero que se llame el.jsp e intentamos crear un scriplet .... veremos que no nos deja ejecutar.

Es, decir, está prohibido introducir código Java <% out.println("Mostramos un Scriptlet"); %>

Y tambien podemos ver que ya introducimos la primera sentencia EL

<html>
<head>
<title>Primer JSP 2.0</title>
</head>
<body> 

<% out.println("Mostramos un Scriptlet"); %>
Mostramos el parámetro Nombre : ${param.nombre}

</body>
</html>

Si eliminamos el scriptlet ..... veremos la respuesta

Objetos Implicitos

Bueno, parece que las expresiones están dentro de ${expresion}

Para que sea útil este sistema, existen unos objetos implícitos que nos permiten acceder de un modo sencillo a los parámetros, contexto, petición, etc...

pageScope  requestScope  sessionScope  applicationScope 
param  paramValues  header  headerValues 
pageContext  initParam  cookie 

Y para acceder a ellos y sus miembres, ya hemos visto que podemos hacerlo con el (.

Operaciones

Podemos, de un modo sencillo e implicito realizar conversiones desde los parametros recibidos a otros tipos de datos

<html>
<head>
<title>Primer JSP 2.0</title>
</head>
<body> 

<%-- <% out.println("Mostramos un Scriptlet"); %> --%>
Mostramos el parámetro A : ${param.a}

<br>Operación : ${param.a / 2}
</body>
</html>

Y la salida es:

Descarga y Uso de TagLibraries

Para poder usar las librerías de tags de JSTL, debemos descargarnos los ficheros binarios y registrarlos en el fichero web.xml

http://jakarta.apache.org/downloads/binindex.html.

http://mirrors.isc.org/pub/apache/jakarta/taglibs/standard/

Descargamos y descomprimimos el fichero marcado.

Los ficheros con extensión .tld, los copiamos a nuestro directorio WEB_INF y los jar, al directorio WEB_INF/lib

Ahora modificamos el fichero web.xml para añadir la referencia a las librerías de etiquetas.

<taglib>
    <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
    <taglib-location>/WEB-INF/fmt.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
    <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
    <taglib-location>/WEB-INF/c.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
    <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
    <taglib-location>/WEB-INF/sql.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
    <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
    <taglib-location>/WEB-INF/x.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
    <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
  </taglib>

Debemos rearrancar Tomcat para que recoja los cambio (bueno, con rearrancar la Webapp es suficiente)

JSPs con TagLibs

Introducimos la directiva para usar la librería de etiquetas (he elegido el prefijo jsp2 para las etiqueras).

<%@ taglib prefix="jsp2" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
<title>Primer JSP 2.0</title>
</head>
<body> 
  <center> 
  <jsp2:set var="contador" scope="session" value="1"/>
   El valor del contador es <b> ${contador} </b> 
</center>
</body>
</html>

Ahora solo tenemos que saber las etiquetas que hay disponibles. Podeis encontrar una buena referencia en http://www.manning.com/bayern/appendixA.pdf

 

JSP y XML

Una de las preguntas que se hace mucha gente a la hora de utilizar la tecnología J2EE es ¿debería utilizar JSP o XSLT para la capa de presentación?

La misma pregunta nos puede surgir al utilizar Frameworks, como struts.

Un modo sencillo de combinar estas tecnologías puede ser utilizar etiquetas que permitan dentro de JSP introducir el procesamiento de XML.

<%@ taglib prefix="jsp2" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="jsp2x" uri="http://java.sun.com/jsp/jstl/xml" %>

<html>
<head>
<title>Primer JSP 2.0</title>
</head>
<body>
<center>

<jsp2:set var="mixsl">
  <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

      <xsl:template match="/">
        <table border="1">
            <tr>
                <td><b>Nombre</b></td>
                <td><b>Enlace</b></td>
                <td><b>Descripción</b></td>
            </tr>
           <xsl:for-each select="//tutorial">
                <tr>
                    <td><xsl:value-of select="nombre"/></td>
                    <td><xsl:value-of select="enlace"/></td>
                    <td><xsl:value-of select="descripcion"/></td>
                </tr>
            </xsl:for-each>
        </table>
    </xsl:template>
</xsl:stylesheet>

</jsp2:set>

<jsp2x:transform xslt="${mixsl}">
    <tutoriales>
        <tutorial>
            <nombre>JSP 2.0</nombre>
            <enlace>jspel</enlace>
            <descripcion>Nuevas caracteristicas de JSPs</descripcion>
        </tutorial>
        <tutorial>
            <nombre>Struts</nombre>
            <enlace>struts</enlace>
            <descripcion>Configuración del entorno Structs</descripcion>
        </tutorial>
    </tutoriales>

</jsp2x:transform>

</center>
</body>
</html>

Y la salida sería

Los ficheros no tienen porque estar dentro del documento ... pueden ser ficheros normales, externos.

Acceso a Base de datos

Es igual de sencillo realizar accesos a la base de datos... usaremos la configuración vista el el tutorial sobre configuración de Pool de conexiones en Tomcat 5

<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
<%@ taglib prefix="jsp2" uri="http://java.sun.com/jstl/core" %>
<html>
  <head>
     <title>Primer JSP 2.0</title>
   </head>
   <body> 
<center> 
<sql:setDataSource dataSource="jdbc/tutoriales" />

<sql:query var="r">
SELECT * FROM TUTORIALES where id=1
</sql:query>


<br>ID <b>${r.rows[0].id} </b>
<br>Titulo <b>${r.rows[0].titulo}</b>
<br>Descripcion <b>${r.rows[0].descripcion}</b>
<br>Autor <b>${r.rows[0].autor}</b>

</center>
</body>
</html>

Tambien podemos cambiar un poquito el ejemplo para iterar. En este caso utilizamos forEach (ver que he cambiado la librería core por core-rt, sino, no me funcionaba)

<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
<%@ taglib prefix="jsp2" uri="http://java.sun.com/jstl/core_rt" %>
<html>
<head>
<title>Primer JSP 2.0</title>
</head>
<body> 
<center> 
<sql:setDataSource dataSource="jdbc/tutoriales" />

<sql:query var="r">
SELECT * FROM TUTORIALES where id<3
</sql:query>

<table border="1">
<tr> 
    <td><b>Id</b></td>
    <td><b>Titulo</b></td>
    <td><b>Descripcion</b></td>
    <td><b>Autor</b></td>
</tr>


<jsp2:forEach items="${r.rows}" var="fila">
     <tr> 
        <td>${fila.id} </td>
        <td>${fila.titulo}</td>
        <td>${fila.descripcion}</td>
        <td>${fila.autor}</td>
    </tr>
</jsp2:forEach>


</table>

</center>
</body>
</html>

Conclusión

Básicamente, parece que se está intentando limitar las capacidades dentro de JSP (de un modo controlado y voluntario), con el objetivo de hacer mucho más accesible esta tecnología a programadores de otros entornos .... como por ejemplo programadores PHP.

Estoy seguro que esta tecnología va a tener muy buena acogida porque realmente permitirá separar roles en equipos de desarrollo en aplicaciones empresariales.

Existen muchas más librerías de etiquetas (en apache.org encontrareis un montón) que seguro que se van a ir estandarizando  .... y ya os la iremos mostrando poco a poco....

Sobre el Autor ..

¿Qué te ha parecido el tutorial? Déjanos saber tu opinión y ¡vota!

Muy malo Malo Regular Bueno Muy bueno
 


(Sólo para usuarios registrados)

» Registrate y accede a esta y otras ventajas «

Anímate y coméntanos lo que pienses sobre este tutorial

Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.


(Sólo para usuarios registrados)

» Registrate y accede a esta y otras ventajas «

Autor Mensaje de usuario registrado
Autor Mensaje de usuario anónimo
sayake Fecha de envío: 2006-12-12 - 04:48:26 PM
me parece que es un tutorial muy practico e interesante, gracias
Christian Santos Fecha de envío: 2006-11-28 - 12:06:34 AM
Muy buen tutorial. Igual los otros. Felicidades. Pero tengo una duda. Tengo una aplicacion WEB y el login lo hago por medio de un HTML que accesa un Servlet que consulta una Base de Datos y determina si es un usuario válido. Lo único que quiero saber es qué tipo de debo usar en mi archivo web.xml. Dado que no manejo ningun role y la validacion de usuarios se hace segun una base de datos. Saludos.
Luis Bonilla Fecha de envío: 2006-11-03 - 06:58:26 PM
que tutorial tan malo, se supo que se deberia de mostra la poo aplicada a los jsp, pero se le puede abonar que muestra u ejemplo para xml y es lo unico rescatable.
Alexander Jimenez Fecha de envío: 2006-05-03 - 06:06:22 PM
Hola, Te agradezco la publicación del manual. Pero para serte sincero no me ha quedado nada claro de dónde salen los valores de los param en qué momento fueron creados ni dónde. Una vez mas muchas gracias Alex


Creative Commons License Esta obra está licenciada bajo licencia Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5

Recuerda

Autentia te regala la mayoría del conocimiento aquí compartido (Ver todos los tutoriales). Somos expertos en: J2EE, Struts, JSF, C++, OOP, UML, UP, Patrones de diseño ... y muchas otras cosas.

¿Nos vas a tener en cuenta cuando necesites consultoría o formación en tu empresa?, ¿Vas a ser tan generoso con nosotros como lo tratamos de ser con vosotros?

Somos pocos, somos buenos, estamos motivados y nos gusta lo que hacemos ...

Autentia = Soporte a Desarrollo & Formación.

info@autentia.com

Tutoriales recomendados

Nombre Resumen
Fecha
Visitas Valoración Votos Pdf
Introducción a RichFaces. RichFaces es una librerí­a de componentes visuales para JSF con soporte para Ajax4JSF. 2010-02-01 461 - -
Transformación de mensajes en SOA con OpenESB En este tutorial vamos a mostrar con un ejemplo práctico una de las capacidades esenciales de todo sistema de integración, y por tanto característica del Enterprise Service Bus de SOA: la tranformación de mensajes. 2010-01-29 320 - -
Patrones de diseño de XML Schema En este tutorial vamos a analizar y mostrar con ejemplos los cuatro principales patrones de diseño de XML Schema: Russian Doll, Salami Slice, Venetian Blind y Garden of Eden. 2010-01-07 756 Muy bueno 1
JavaBean Datasource Ireport La particularidad del caso que nos ocupa, es conseguir que la fuente de datos del informe sea una lista de JavaBeans y no una consulta definida previamente en el informe. 2009-12-14 1259 Bueno 1
Contract-First web services con Visual Studio 2008 Utilizaremos Visual Studio 2008 con el addin WSCF.blue para generar contract-first web services (servicios web dirigidos por contrato) 2009-12-11 988 - -
Instalar OpenESB 2.1 e Introducción En este tutorial veremos como descargar e instalar OpenESB y explicaremos sus funcionalidades 2009-12-03 1703 - -
Tutorial basico de google wave bots En este tutorial crearemos un robot muy simple, que al invitarlo a un Wave sustituye una tag por la fecha y hora actual. 2009-11-18 2302 - -
Enlazar Bugzilla con MavenChangesPlugin En este tutorial veremos como enlazar Bugzilla con MavenChangesPlugin 2009-09-11 1156 - -
Release Bugzilla Maven Plugin En este tutorial vamos a mostrar como automatizar un conjunto de acciones que hay que hacer siempre en los sistemas de gestión de incidencias, tales como dar de alta una nueva versión del producto, cerrar las incidencias que soluciona la nueva versión, et 2009-09-11 1395 - -
Ordenación por cantidades en informe cruzado Nico nos explica en ese tutorial cómo lograr ordenar por cantidades en informes cruzados usando JasperReports e iReport 2009-08-26 2100 - -

Nota:

Los tutoriales mostrados en este Web tienen como objetivo la difusión del conocimiento. Los contenidos y comentarios de los tutoriales son responsabilidad de sus respectivos autores. En algún caso se puede hacer referencia a marcas o nombres cuya propiedad y derechos es de sus respectivos dueños. Si algún afectado desea que incorporemos alguna reseña específica, no tiene más que solicitarlo. Si alguien encuentra algún problema con la información publicada en este Web, rogamos que informe al administrador rcanales@adictosaltrabajo.com para su resolución.