Comentarios

Los comentarios que se deseen incluir en el código JSP deben indicarse entre las etiquetas <%-- y --%>. Estos comentarios no aparecerán en el código obtenido en el navegador web, como sí ocurrre con los comentarios en HTML.

<!-- comentario HTML -->
<%-- comentario JSP --%>

Expresiones

Se puede indicar una expresión Java dentro de las etiquetas <%= y %>. El resultado aparecerá como parte del códido HTML en el lugar donde se haya escrito la expresión.

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Ejemplos JSP</title>
</head>
<body>
    <H1>Ejemplos de expresiones</H1>
    <%-- Mostrar la fecha y hora actual --%>
    <%= new java.util.Date().toString() %><br>

    <%-- Convertir a mayúsculas un String --%>
    <%= "Pasar a mayúsculas".toUpperCase() %><br>

    <%-- Resultado de una expresión aritmética --%>
    <%= (5+2)/(float)3 %><br>

    <%-- Generar un número aleatorio --%>
    <%= new java.util.Random().nextInt(100) %>
</body>
</html>

El código HTML que recibe el navegador para el ejemplo anterior puede ser como el siguiente:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Ejemplos JSP</title>
</head>
<body>
    <H1>Ejemplos de expresiones</H1>
    Wed Jan 16 19:00:52 CET 2013<br>
    PASAR A MAYÚSCULAS<br>
    2.3333333<br>
    65
</body>
</html>

Scriplets

Dentro de las etiquetas <% y %> puedes escribir cualquier conjunto de sentencias Java, que serán ejecutadas por el servidor.

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Ejemplos JSP</title>
</head>
<body>
    <H1>Ejemplo de scriplet</H1>
    <%
        int numero = 7, factorial = 1;
        for(int i=numero; i>1; i--) {
            factorial *= i;            
        }
    %>
    <%-- Se muestran en negrita el número y el resultado del factorial --%>
    <%= "El factorial de <b>"+numero+"</b> es <b>"+factorial+"</b>" %>    
</body>
</html>

Objetos request, session y out

Los siguientes objetos están predefinidos para ser usados en JSP:

  • request: permite obtener datos de la petición HTTP que se realiza. Por ejemplo, los parámetros GET y POST que son pasados a la página.
  • session: contiene los datos de la sesión, permitiendo guardar y recuperar información durante la vigencia de la sesión.
  • out: posibilita enviar información a la salida HTML que se genera.

Guarda en siguiente ejemplo en una archivo llamado factorial.jsp y te permitirá realizar el cálculo del factorial del número que indique el usuario. Además mantiene la cuenta de las veces que se ejecuta la página durante la misma sesión.

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Cálculo del factorial</title>
</head>
<body>
    <h1>Cálculo del factorial</h1>

    <!-- Formulario que solicita al usuario el número a usar en el cálculo -->
    <form action="factorial.jsp" method="get">
        <p>Número: <input type="text" name="numero">
        <input type="submit" value="Calcular"></p>        
    </form>

    <%
        // A través del objeto request se obtiene el valor pasado por el formulario
        String numeroGet = request.getParameter("numero");
        if(numeroGet!=null) {
            int numero=0;
            double factorial=1;
            boolean error = false;
            try {
                numero = Integer.valueOf(numeroGet);
                if(numero<1) {
                    error = true;
                } else {
                    for(int i=numero; i>1; i--) {
                        factorial *= i;            
                    }
                }
            } catch(NumberFormatException e) {
                error = true;
            }
            if(error) {
                out.println("<p>Debe indicar un número entero mayor que 0</p>");
            } else {
                // Mostrar el resultado en la página usando el objeto out
                out.println("<p>Resultado: "+numero + "! = " + factorial+"</p>");
            }
        }
        
        // Uso del objeto session para contar las veces que se ejecuta la aplicación
        Integer contador = (Integer)session.getAttribute("contadorVisitas");
        if(contador!=null) {
            contador = Integer.valueOf(contador);
        } else {
            contador = 0;
        }
        if(contador!=0) {
            out.println("<p>Ejecuciones de la aplicación en esta sesión: "+contador+ "</p>");
        }
        contador++;
        session.setAttribute("contadorVisitas", contador);
    %>
</body>
</html>

Declaraciones

Usando las etiquetas <%! y %> (observa el signo de admiración), puedes declarar variables y métodos que puedes utilizar en otro lugar de la página JSP.

<%! 
    // Aquí puedes declarar las variables o métodos que desees

    private double calcularFactorial(int num) {
        int res = 1;
        for(int i=num; i>1; i--) {
            res *= i;            
        }    
        return res;
    }
%>

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Cálculo del factorial</title>
</head>
<body>
    <h1>Cálculo del factorial</h1>
    <form action="factorial.jsp" method="get">
        <p>Número: <input type="text" name="numero">
        <input type="submit" value="Calcular"></p>        
    </form>

    <%
        String numeroGet = request.getParameter("numero");
        if(numeroGet!=null) {
            int numero = Integer.valueOf(numeroGet);    
            // Aquí se está haciendo la llamada al método declarado en la parte superior
            double resultado = calcularFactorial(numero);
            out.println("<p>Resultado: "+numero + "! = " + resultado +"</p>");
        }
    %>
</body>
</html>

Directiva page

Permite declarar una serie de propiedades para la página que se está desarrollando. Con esta directiva se pueden usar los siguientes atributos: language, extends, import, session, buffer, autoFlush, isThreadSafe, info, errorPage, contentType, isErrorPage, pageEncoding, isELIgnored. Donde los más usuales son language, contentType, pageEncoding e import (para importar clases externas).

Se usa con las etiquetas <%@ y %> (observa la @) al principio del código de la página.

<%@ page language="java"
    contentType="text/html; charset=UTF-8"
    pageEncoding="ISO-8859-1"
    import="java.util.*" %>

Directiva include

Permite incluir el código almacenado en otro archivo en el lugar donde se indique esta directiva, especificando la ruta relativa a dicho archivo en el atributo file.

<%@ include file="/navbar.html" %>
<%@ include file="/cabecera.jsp" %>