Elementos de escritura de guiones JSP

Tras la explicación hecha en esta entrada, sigamos con las JSP.

Una vez que se han usado las directivas para establecer el entorno de la escritura de guiones, se pueden usar los elementos del lenguaje de escritura de guiones. JSP 1.1 tiene tres elementos de lenguaje de escritura de guiones (declaraciones, scriptlets y expresiones). Una declaración declara elementos, un scriplet es un fragmento de sentencia y una expresión es una expresión completa del lenguaje. En JSP cada elemento de escritura empieza por “<%”. La sintaxis de cada una es:

<%!declaración %>

<% scriptlet %>

<%= expresión %>

El espacio en blanco tras “<%!”, “<%”, “<%=” y antes de % es opcional.

Todas estas etiquetas se basan en XML; se podría decir incluso que una página JSP puede corresponderse con un documento XML. La sintaxis equivalente en XML para los elementos de escritura de guiones de arriba sería:

<jsp:declaracion>declaración </jsp:declaracion>

<jsp:scriplet> scriptlet </jsp:scriptlet>

<jsp:expresion> expresión </jsp:expresion>

Además, hay dos tipos de comentarios:

<% — comentario jsp — %>

<!– comentario html –>

La primera forma permite añadir comentarios a las páginas JSP que no aparecerán en ninguna forma en el HTML que se envía al cliente. Por supuesto, la segunda forma de comentario no es específica de los JSP (es simplemente un comentario HTML ordinario). Lo interesante es que se puede insertar código JSP dentro de un comentario HTML, y el comentario se producirá en la página resultante, incluyendo el resultado del código JSP.

Las declaraciones se usan para declarar variables y métodos del lenguaje de escritura de guiones usado en una página JSP. La declaración debe ser una sentencia Java completa y no puede producir ninguna salida en el flujo salida. En el siguiente ejemplo, las declaraciones de las variables cargaHora, cargaFecha y conteoAccesos son sentencias Java completas que declaran e inicializan nuevas variables.

<%– 
    Document   : Hola
    Created on : 16-jun-2019, 12:20:19
    Author     : GORKA ELORDUY
–%>
<%@page contentType=”text/html” pageEncoding=”UTF-8″%>
<!DOCTYPE html>
<%– Este comentario no aparecera en el HTML generado –%>
<%– Esto es una directiva de JSP –%>
<%@ page import=”java.util.*” %>
<%– Estas son las declaraciones –%>
<%!
    long cargaHora = System.currentTimeMillis();
    Date cargaFecha = new Date();
    int conteoAccesos = 0;
    %>
<html>
    <head>
        <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
        <title>Hola</title>
    </head>
    <body>
        <%–Las siguientes líneas son el resultado de una expresión
        JSP insertada en el HTML generado –%>
        <h1>Esta página fue cargada el <%= cargaFecha %></h1>
        <h1>¡Hola Mundo! Hoy es <%= new Date() %></h1>
        <h2>Tenemos aquí un objeto: <%=new Object()%></h2>
        <h2>Esta página ha estado activa
            <%=(System.currentTimeMillis() – cargaHora)/1000 %> segundos
        </h2>
        <h3>Esta página ha sido accedida <%= ++conteoAccesos %>
        veces desde <%=cargaFecha %>
        </h3>
        <%– Un scriplet que escribe a la consola servidora y a la 
        página cliente –%>
        <%
            System.out.println(“Adios”);
           %> 
    </body>
</html>

Cuando se ejecute este programa se verá que las variables cargaHora, cargaFecha y conteoAccesos guardan sus valores entre accesos a la página, por lo que son claramente campos y no variables locales.

Al final del ejemplo, hay un scriplet que escribe “Adios” a la consola servidora de web. Los scripltes pueden contener cualquier fragmento de código que sean sentencias de Java válidas. Los scriplets se ejecutan bajo demanda en tiempo de procesamiento. Cuando todos los fragmentos de scriplet en un JSP dado se combinan en el orden en el que aparecen en la página JSP, deberían conformar una sentencia válida según la definición del lenguaje de programación Java. Si producen o no una salida al flujo out depende del código del scriplet. Los programadores y programadoras Java deberíamos ser conscientes de que los scriplets pueden producir efectos laterales al modificar objetos que son visibles para ellos.

Las expresiones JSP pueden entremezclarse con el HTML. Las expresiones deben ser sentencias Java completas, que son evaluadas, convertidas a un String y enviadas a out. Si el resultado no puede convertirse a String, se lanza una ClassCastException.
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.