JavaRush /Blog Java /Random-ES /¿Qué es JSP? Exploremos las posibilidades en la práctica....
Анзор Кармов
Nivel 31
Санкт-Петербург

¿Qué es JSP? Exploremos las posibilidades en la práctica.

Publicado en el grupo Random-ES
JSP o Java Server Pages es una tecnología Java que le permite crear páginas web dinámicas para aplicaciones Java. En este artículo hablaremos con más detalle sobre qué es JSP, discutiremos algunas de las capacidades de esta tecnología, veremos la estructura de las páginas JSP y también intentaremos echar un vistazo práctico a qué son estas páginas de servidor Java. ¿Qué es JSP?  Comprender las posibilidades en la práctica - 1Pero primero, hablemos de los beneficios y la importancia de JSP. JSP permite al desarrollador:
  • recibir datos de una página web en código Java;
  • enviar datos desde código Java a una página web;
  • escriba código Java directamente dentro de html (sin embargo, no debe abusar de esto).
La necesidad de conocimientos de JSP se puede evaluar con bastante precisión por varias razones:
  • JSP es una de las principales tecnologías web Java;
  • JSP se utiliza ampliamente en la mayoría de empresas y proyectos;
  • JSP se integra perfectamente con los servlets Java dentro de un contenedor de servlets.

Definición de JSP

Aquí hay una definición de Wikipedia: JSP (JavaServer Pages) es una tecnología que permite a los desarrolladores web crear contenido que tiene componentes tanto estáticos como dinámicos. Una página JSP contiene dos tipos de texto: datos de origen estáticos, que pueden estar en uno de los formatos de texto HTML, SVG, WML o XML, y elementos JSP, que construyen contenido dinámico. Además, se pueden utilizar bibliotecas de etiquetas JSP, así como lenguaje de expresión (EL) para incrustar código Java en el contenido estático de páginas JSP. El código de la página JSP se traduce al código Java de servlet utilizando el compilador de páginas JSP de Jasper y luego se compila en el código de bytes de la máquina virtual Java (JVM). Los contenedores de servlets capaces de ejecutar páginas JSP están escritos en el lenguaje Java, independiente de la plataforma. La tecnología JSP es una tecnología independiente de la plataforma, portátil y fácilmente extensible para desarrollar aplicaciones web.

estructura de la página JSP

En general, JSP se refiere a páginas web dinámicas en las que la parte dinámica se genera utilizando Java y la parte estática se genera utilizando lenguajes de marcado, normalmente HTML. Dicha página es un documento de texto con la extensión .jsp, escrito en uno de los lenguajes de marcado (como HTML, SVG, WML y XML), intercalado con elementos JSP (o etiquetas JSP). Estas etiquetas contienen llamadas al código del servidor (datos) y también realizan algunos cálculos. Estos archivos se procesan en el servidor, como resultado de lo cual todas las etiquetas JSP se convierten en etiquetas html y el resultado es una página html normal. El siguiente diagrama muestra un diagrama de la estructura de una página JSP y su interacción con el servidor. ¿Qué es JSP?  Comprender las posibilidades en la práctica - 2Un ejemplo de una página JSP sencilla:
<html>
  <body>
    <p> ${2 + 2} равно 4 </p>
  </body>
</html>
En este ejemplo, una expresión JSP escrita en un lenguaje especial, Expression Language (EL), está “incrustada” dentro del código html . Proporciona un mecanismo importante para la interacción entre la capa de presentación (páginas web) y la capa de lógica empresarial de la aplicación (código Java). Como puede ver en el ejemplo, la expresión JSP está entre llaves, con un signo de dólar inicial: ${...}. Todo lo que está dentro de las llaves se evalúa en el servidor, y el resultado de esta expresión se da en html, en el lugar donde se definió originalmente la expresión JSP. Después de procesar todas las etiquetas, la página se verá así:
<html>
  <body>
    <p> 4 равно 4 </p>
  </body>
</html>

Instalación y ejecución del contenedor de servlets

Dado que el código JSP se traduce al código de servlet Java, necesitamos conseguir algún tipo de contenedor de servlet en alguna parte para que podamos hablar sobre cómo funciona JSP. De lo contrario, sin un contenedor, JSP no funcionará. Pero primero, veamos la definición de contenedor de servlets. Un contenedor de servlets es un programa que es un servidor que proporciona soporte al sistema para servlets y garantiza su ciclo de vida de acuerdo con las reglas definidas en las especificaciones. Puede funcionar como un servidor web independiente y completo, ser un proveedor de páginas para otro servidor web o integrarse en un servidor de aplicaciones Java EE. Uno de los contenedores de servlets más populares es Apache Tomcat. ¿Qué es JSP?  Comprender las posibilidades en la práctica - 3Vale la pena mencionar que Tomcat no es un servidor de aplicaciones Java EE completo. Sin embargo, para las necesidades vitales de servlets y páginas JSP, el servidor Tomcat es más que suficiente. Comencemos la instalación. Puedes descargar Tomcat desde la página oficial . Para el sistema operativo Windows, puede instalar Tomcat de la siguiente manera:
  1. Descargue el instalador de servicios de Windows de 32 y 64 bits.

  2. Ejecutemos el archivo.

  3. A continuación, siga el procedimiento de instalación habitual:

    1. No olvide marcar la casilla de verificación Ejemplos en la ventana del instalador correspondiente:

      ¿Qué es JSP?  Comprender las posibilidades en la práctica - 4
    2. y especifique la ruta al JRE preinstalado:

      ¿Qué es JSP?  Comprender las posibilidades en la práctica - 5
  4. Después de la instalación, inicie Tomcat y abra el navegador. Vaya a http://localhost:8080/ .

Si ve la página de inicio de Tomcat, significa que la instalación se realizó correctamente y que el servidor se está ejecutando. Para iniciar y detener Tomcat manualmente, puede ejecutar uno de los dos archivos ejecutables en el directorio bin. Se encuentra dentro del directorio donde está instalado Tomcat: ¿Qué es JSP?  Comprender las posibilidades en la práctica - 6

Aplicaciones de demostración. Objetos escondidos

Veamos algunas características de JSP en acción. Uno de ellos es el acceso a los llamados objetos ocultos ( Objetos Implícitos ). Estos son objetos a los que se puede acceder mediante el lenguaje de expresión (EL). Ejemplos de tales objetos son encabezados HTTP o parámetros de URL. Revelemos (o refresquemos la memoria) qué son los parámetros de URL. El siguiente ejemplo muestra una URL con parámetros. Los parámetros están en negrita: http://example.net/foo/bar ?param1=value1¶m2=value2&a=1&name=Tom Los parámetros siempre comienzan con un signo de interrogación (?). A esto le sigue el nombre del parámetro, seguido del signo igual: se determina el valor del parámetro. Puede haber varios o un parámetro. Si hay más de uno, cada par nombre-valor está separado por un carácter comercial (&). En el ejemplo anterior, se definieron varios parámetros y sus valores:
Nombre del parámetro Valor del parámetro
parámetro1 valor1
parámetro2 valor2
a 1
nombre Tomás
Echemos un vistazo a cómo puede acceder a objetos ocultos en JSP, incluidos los parámetros de URL. Para hacer esto, inicie Tomcat y abra el navegador en la página http://localhost:8080/ Luego vaya a la página Ejemplos: ¿Qué es JSP?  Comprender las posibilidades en la práctica - 7Luego siga el enlace Ejemplos JSP: ¿Qué es JSP?  Comprender las posibilidades en la práctica - 8En la página de ejemplos siga el enlace Objetos implícitos -> Ejecutar: ¿Qué es JSP?  Comprender las posibilidades en la práctica - 9En este En la página puedes ver un ejemplo de uso de objetos ocultos. A continuación se muestra una captura de pantalla de la página con explicaciones detalladas: ¿Qué es JSP?  Comprender las posibilidades en la práctica - 10Intente cambiar el valor del parámetro foousando el campo correspondiente en la página, luego observe que el valor de este parámetro también ha cambiado en la barra de direcciones. La página presentada no tiene mucha funcionalidad, pero es una buena referencia a la que puede consultar en el futuro cuando necesite acceder a un objeto oculto en particular. Esta página contiene una lista de objetos ocultos a los que se puede acceder. Y a continuación, en la tabla, se demuestra cómo se puede acceder a un objeto en particular.

funciones JSP

Ahora volvamos a la página anterior y echemos un vistazo al código fuente de la página de "objetos ocultos": ¿Qué es JSP?  Comprender las posibilidades en la práctica - 11Aquí está:
<%@page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<html>
  <head>
    <title>JSP 2.0 Expression Language - Implicit Objects</title>
  </head>
  <body>
    <h1>JSP 2.0 Expression Language - Implicit Objects</h1>
    <hr>
    This example illustrates some of the implicit objects available
    in the Expression Language.  The following implicit objects are
    available (not all illustrated here):
    <ul>
      <li>pageContext - the PageContext object</li>
      <li>pageScope - a Map that maps page-scoped attribute names to
          their values</li>
      <li>requestScope - a Map that maps request-scoped attribute names
          to their values</li>
      <li>sessionScope - a Map that maps session-scoped attribute names
          to their values</li>
      <li>applicationScope - a Map that maps application-scoped attribute
          names to their values</li>
      <li>param - a Map that maps parameter names to a single String
          parameter value</li>
      <li>paramValues - a Map that maps parameter names to a String[] of
          all values for that parameter</li>
      <li>header - a Map that maps header names to a single String
          header value</li>
      <li>headerValues - a Map that maps header names to a String[] of
          all values for that header</li>
      <li>initParam - a Map that maps context initialization parameter
          names to their String parameter value</li>
      <li>cookie - a Map that maps cookie names to a single Cookie object.</li>
    </ul>

    <blockquote>
      <u><b>Change Parameter</b></u>
      <form action="implicit-objects.jsp" method="GET">
          foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">
          <input type="submit">
      </form>
      <br>
      <code>
        <table border="1">
          <thead>
            <td><b>EL Expression</b></td>
            <td><b>Result</b></td>
          </thead>
          <tr>
            <td>\${param.foo}</td>
            <td>${fn:escapeXml(param["foo"])} </td>
          </tr>
          <tr>
            <td>\${param["foo"]}</td>
            <td>${fn:escapeXml(param["foo"])} </td>
          </tr>
          <tr>
            <td>\${header["host"]}</td>
            <td>${fn:escapeXml(header["host"])} </td>
          </tr>
          <tr>
            <td>\${header["accept"]}</td>
            <td>${fn:escapeXml(header["accept"])} </td>
          </tr>
          <tr>
            <td>\${header["user-agent"]}</td>
            <td>${fn:escapeXml(header["user-agent"])} </td>
          </tr>
        </table>
      </code>
    </blockquote>
  </body>
</html>
Si está familiarizado con HTML, el código fuente de la página debería resultarle bastante claro. Presta atención a estas líneas:
<tr>
  <td>${param.foo}</td>
  <td>${fn:escapeXml(param["foo"])} </td>
</tr>
Aquí vemos etiquetas html <tr>y <td>. Las etiquetas van seguidas de <td>etiquetas JSP, entre llaves ${ }. Sin embargo, observe cómo se genera el valor del parámetro URL foo:
${fn:escapeXml(param["foo"])}
El valor se genera mediante el uso de una función JSP fn:escapeXml(). Las funciones JSP encapsulan algunas funciones que se pueden reutilizar. En este caso, se trata de un escape XML. La tecnología JSP proporciona una amplia gama de funciones para elegir, así como la capacidad de crear sus propias funciones. Para utilizar una función en un JSP, debe importar en el archivo JSP la biblioteca adecuada en la que se define la función.

Bibliotecas de etiquetas

Echemos un vistazo a otra línea de código fuente (segunda línea) arriba:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Así es como se importan las bibliotecas de etiquetas. La sintaxis es intuitiva. Definimos varias cosas:
  • taglib(biblioteca de etiquetas - biblioteca de etiquetas);
  • url, donde se encuentra esta biblioteca;
  • un prefijo (en este caso fn) a través del cual será posible llamar a funciones definidas en esta biblioteca.
En el ejemplo anterior, analizamos la importación de funciones. Específicamente, en nuestro ejemplo, importamos la biblioteca JSTL (Biblioteca de etiquetas estándar JSP). JSTL es una biblioteca de etiquetas estándar que contiene un conjunto de bibliotecas diferentes que vienen con cada implementación de servlet y JSP, incluido Tomcat. Otra biblioteca de etiquetas popular es la central, que se puede importar de esta manera:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
Al igual que con fn, la notación ces opcional y generalmente aceptada. Esta designación se puede encontrar en casi todos los lugares donde se utilizan estas bibliotecas. A continuación se muestra un ejemplo de una función de la biblioteca principal:
<c:out value = "${'<div>'}"/>
Esta función simplemente generará la etiqueta <div>. Esta función ya hace escape XML. Esta función es importante desde el punto de vista de la seguridad, porque al generar el valor de las variables directamente, a través de ${variable}, abrimos la puerta a la inyección de scripts.

Edición JSP

Ahora, armados con nuevos conocimientos, intentemos realizar cambios en la aplicación de demostración dentro de Tomcat. Para ello encontraremos el código fuente de esta página dentro de la carpeta en la que se instaló este contenedor de servlets. Este archivo se puede encontrar en la siguiente dirección: ...\Apache Software Foundation\Tomcat 9.0\webapps\examples\jsp\jsp2\el Luego abra el archivo implicit-objects.jsp en cualquier editor de texto. Agregue la importación de la biblioteca principal. y luego usarlo. Generemos algo de texto: ¿Qué es JSP?  Comprender las posibilidades en la práctica - 12ahora actualicemos la página de objetos ocultos y echemos un vistazo a los cambios realizados: ¿Qué es JSP?  Comprender las posibilidades en la práctica - 13

Resultados

Entonces, hemos examinado superficialmente tecnologías como JSP. Nosotros discutimos:
  • ¿Qué es JSP?
  • estructura de página JSP;
  • procedimiento para instalar y ejecutar el contenedor de servlets Tomcat;
  • aplicación de demostración para acceder a objetos ocultos, que se incluye en el paquete de distribución del servidor Tomcat;
  • Funciones JSP y bibliotecas de etiquetas.

¿Que sigue?

Para asegurar el material puedes:
  1. Repita todo lo descrito en este artículo.
  2. Considere otras aplicaciones de demostración incluidas con el servidor Tomcat.
  3. Escriba su propia aplicación e impleméntela en un contenedor de servlets. Como guía, puede utilizar el artículo Creación de un proyecto web sencillo en IntelliJ Idea Enterprise. Paso a paso, con imágenes.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION