stringtranslate.com

Páginas del servidor de Yakarta

Jakarta Server Pages ( JSP ; anteriormente JavaServer Pages ) [1] es una colección de tecnologías que ayuda a los desarrolladores de software a crear páginas web generadas dinámicamente basadas en HTML , XML , SOAP u otros tipos de documentos. Lanzado en 1999 por Sun Microsystems , [2] JSP es similar a PHP y ASP , pero utiliza el lenguaje de programación Java .

Para implementar y ejecutar Jakarta Server Pages, se requiere un servidor web compatible con un contenedor de servlets , como Apache Tomcat o Jetty .

Descripción general

La arquitectura del modelo JSP 2.

Desde el punto de vista arquitectónico, JSP puede considerarse una abstracción de alto nivel de los servlets de Jakarta . Los JSP se traducen en servlets en tiempo de ejecución, por lo que JSP es un servlet; cada servlet de JSP se almacena en caché y se reutiliza hasta que se modifica el JSP original. [3]

Las páginas de servidor de Jakarta se pueden utilizar de forma independiente o como componente de vista de un diseño de modelo-vista-controlador del lado del servidor, normalmente con JavaBeans como modelo y servlets Java (o un marco como Apache Struts ) como controlador. Este es un tipo de arquitectura del Modelo 2. [4]

JSP permite que el código Java y ciertas acciones predefinidas se intercalen con contenido de marcado web estático, como HTML. La página resultante se compila y se ejecuta en el servidor para entregar un documento. Las páginas compiladas, así como las bibliotecas Java dependientes, contienen código de bytes de Java en lugar de código de máquina . Al igual que cualquier otro programa .jar o Java, el código debe ejecutarse dentro de una máquina virtual Java (JVM) que interactúa con el sistema operativo host del servidor para proporcionar un entorno abstracto y neutral en cuanto a la plataforma.

Los JSP se utilizan normalmente para entregar documentos HTML y XML, pero mediante el uso de OutputStream, también pueden entregar otros tipos de datos. [5]

El contenedor web crea objetos implícitos JSP como solicitud, respuesta, sesión, aplicación, configuración, página, pageContext, salida y excepción. JSP Engine crea estos objetos durante la fase de traducción.

Sintaxis

Directivas, scriptlets y expresiones, declaración

Los JSP utilizan varios delimitadores para las funciones de scripting . El más básico es <% ... %>, que encierra un scriptlet de JSP. Un scriptlet es un fragmento de código Java [6] que se ejecuta cuando el usuario solicita la página.

Otros delimitadores comunes incluyen <%= ... %>expresiones , donde el scriptlet y los delimitadores se reemplazan con el resultado de evaluar la expresión, y directivas , denotadas con <%@ ... %>. [6] [7]

No es necesario que el código Java esté completo o sea autónomo dentro de un único bloque de scriptlet. Puede abarcar contenido de marcado, siempre que la página en su conjunto sea sintácticamente correcta. Por ejemplo, cualquier bloque if/for/while de Java abierto en un scriptlet debe cerrarse correctamente en un scriptlet posterior para que la página se compile correctamente. Esto permite que el código se entremezcle y puede dar lugar a malas prácticas de programación.

El contenido que se encuentra dentro de un bloque dividido de código Java (que abarca varios scriptlets) está sujeto a ese código. El contenido dentro de un bloque if solo aparecerá en la salida cuando la condición if se evalúe como verdadera. De la misma manera, el contenido dentro de una construcción de bucle puede aparecer varias veces en la salida, según la cantidad de veces que se ejecute el cuerpo del bucle.

Ejemplo

El siguiente sería un bucle for válido en una página JSP:

<p> Contando  hasta  tres: </p> <% for ( int i = 1 ; i < 4 ; i ++ ) { %> <p> Este número es <%= i %> . </p> <% } %> <p> OK. </p>               

La salida mostrada en el navegador web del usuario sería:

Contando hasta tres:Este número es 1.Este número es 2.Este número es 3.DE ACUERDO.

Etiquetas JSP estándar

La etiqueta useBean

La etiqueta JSP useBeanpermite al desarrollador acceder y crear un Javabean. [8] Aunque el uso de la useBeanetiqueta parece similar al de una etiqueta HTML, todas las etiquetas JSP para JavaBeans utilizan sintaxis XML. Por lo tanto, el código que contiene la useBeanetiqueta distingue entre mayúsculas y minúsculas. [9]

La useBeanetiqueta contiene varios atributos. El idatributo declara el nombre que se utiliza para obtener acceso al bean. El classatributo declara el paquete y la clase para el bean. El scopedeclara el objeto responsable de almacenar el bean. El valor del ámbito define la duración durante la cual el bean está disponible para que lo utilice el resto de la aplicación Java. El ámbito puede ser uno de los cuatro valores siguientes: [9]

Las etiquetas getProperty y setProperty

Una vez que se ha creado un bean utilizando la useBeanetiqueta, las etiquetas getPropertyy setPropertyse pueden utilizar para obtener y configurar las propiedades del bean. El JSP getPropertyse utiliza para obtener la propiedad del bean creado. La setPropertyetiqueta JSP se utiliza para configurar las propiedades de un bean. Para las etiquetas getProperty y setProperty, el atributo name se utiliza para especificar el nombre del bean. Por lo tanto, el atributo name debe coincidir con el atributo id proporcionado por la useBeanetiqueta. [10]

Lenguaje de expresión

La versión 2.0 de la especificación JSP agregó compatibilidad con el lenguaje de expresión (EL), utilizado para acceder a datos y funciones en objetos Java. En JSP 2.1, se incorporó al lenguaje de expresión unificado , que también se utiliza en JavaServer Faces . [11]

El lenguaje de expresión JSP utiliza una sintaxis compacta que permite al desarrollador obtener atributos y propiedades JavaBean de un objeto de solicitud determinado. Cuando se utiliza EL, se debe agregar un signo de dólar ("$") al comienzo del código. El símbolo de dólar va seguido de una llave de apertura ("{"), así como de una llave de cierre ("}"). Luego, el código se escribe entre las llaves de apertura y cierre. [12]

Ejemplo

El siguiente es un ejemplo de sintaxis EL :

El valor de variableen el objeto javabeanes ${javabean.variable}.

Etiquetas adicionales

La sintaxis JSP agrega etiquetas adicionales, llamadas acciones JSP, para invocar la funcionalidad incorporada. [7] Además, la tecnología permite la creación de bibliotecas de etiquetas JSP personalizadas que actúan como extensiones de la sintaxis JSP estándar. [13] Una de estas bibliotecas es JSTL . [14]

Biblioteca de etiquetas estándar de Yakarta

La biblioteca de etiquetas estándar de Jakarta (JSTL) admite tareas comunes que deben realizarse en JSP. [15] Los ejemplos incluyen iteración y condicionales (el equivalente de las declaraciones "for" y "if" en Java). [14]

De todas las bibliotecas de JSTL, la biblioteca principal de JSTL es la más utilizada. Se debe utilizar una directiva taglib para especificar la URI de la biblioteca principal de JSTL mediante un prefijo. Aunque existen muchas opciones diferentes para el prefijo, el prefijo "c" es el que se utiliza habitualmente para esta biblioteca. [16]

JSP compatible con XML

Las páginas JSP también pueden escribirse en sintaxis XML totalmente válida. [17] Dichos archivos JSP suelen utilizar la .jspxextensión de archivo alternativa, que normalmente hace que el servidor de aplicaciones valide la sintaxis XML.

Dado que la sintaxis JSP habitual <% ... %>no es válida en XML, un desarrollador debe utilizar etiquetas alternativas proporcionadas por JSP. Por ejemplo, la <%@ page .. %>directiva común puede escribirse como una <jsp:directive.page .. />etiqueta y las bibliotecas de etiquetas se importan utilizando espacios de nombres XML , en lugar de la etiqueta habitual <%@ taglib .. %>.

Compilador

Un compilador de JavaServer Pages es un programa que analiza JSP y los transforma en Servlets Java ejecutables . Un programa de este tipo suele estar integrado en el servidor de aplicaciones y se ejecuta automáticamente la primera vez que se accede a un JSP, pero las páginas también pueden precompilarse para un mejor rendimiento o compilarse como parte del proceso de compilación para comprobar si hay errores. [18]

Algunos contenedores JSP permiten configurar la frecuencia con la que el contenedor comprueba las marcas de tiempo de los archivos JSP para ver si la página ha cambiado. Normalmente, esta marca de tiempo se establecería en un intervalo corto (quizás segundos) durante el desarrollo del software y en un intervalo más largo (quizás minutos o incluso nunca) para una aplicación web implementada . [19]

Crítica

Según Joel Murach y Michael Urban, autores del libro "Murach's Java Servlets and JSP", incrustar código Java en JSP es generalmente una mala práctica. [20] Un mejor enfoque sería migrar la lógica de back-end incrustada en JSP al código Java en el Servlet. [20] En este escenario, el Servletes responsable del procesamiento, y el JSP es responsable de mostrar el HTML, [20] manteniendo una clara separación de preocupaciones .

En 2000, Jason Hunter, autor de "Java Servlet Programming", describió una serie de "problemas" con JavaServer Pages. [21] Sin embargo, escribió que si bien JSP puede no ser la "mejor solución para la plataforma Java", era la "solución Java que más se parece a la solución no Java", con lo que se refería a Active Server Pages de Microsoft . Más tarde, agregó una nota a su sitio diciendo que JSP había mejorado desde 2000, pero también citó a sus competidores, Apache Velocity y Tea (lenguaje de plantillas). [21] Hoy en día, varias alternativas y una serie de páginas orientadas a JSP en aplicaciones web más grandes se consideran deuda técnica.

Véase también

Contenedores de servlets

Alternativas de plantillas basadas en Java

Referencias

  1. ^ Matthew Tyson (9 de septiembre de 2022). "¿Qué es JSP? Introducción a Jakarta Server Pages". InfoWorld . Consultado el 30 de mayo de 2024 .
  2. ^ "Archivo FoRK: Sun JSP 1.0 *no* disponible". www.xent.com .
  3. ^ El ciclo de vida de una página JSP (documentación de Sun)
  4. ^ Seshadri, Govind (29 de diciembre de 1999). "Comprensión de la arquitectura del modelo 2 de JavaServer Pages". JavaWorld . Consultado el 17 de julio de 2020 .
  5. ^ "Ya se obtuvo OutputStream (foro JSP en Coderanch)". coderanch.com .
  6. ^ ab Murach & Urban 2014, pp. 180–182, §2 Habilidades esenciales de servlets y JSP: Cómo usar etiquetas JSP.
  7. ^ Referencia de sintaxis de JSP 1.2
  8. ^ Murach y Urban 2014, págs. 198, §2 Habilidades esenciales de servlets y JSP - Resumen.
  9. ^ ab Murach & Urban 2014, pp. 186–187, §2 Habilidades esenciales de servlets y JSP: cómo codificar la etiqueta useBean.
  10. ^ Murach & Urban 2014, págs. 188, §2 Habilidades esenciales de servlets y JSP: cómo codificar las etiquetas getProperty y setProperty.
  11. ^ El lenguaje de expresión unificado (Sun Developer Network)
  12. ^ Murach y Urban 2014, págs. 176-177, §2 Habilidades esenciales de servlets y JSP: cómo usar EL para obtener atributos y propiedades JavaBean.
  13. ^ Tutorial de bibliotecas de etiquetas: ¿Qué es una biblioteca de etiquetas? (Sun) Archivado el 19 de abril de 2012 en Wayback Machine .
  14. ^ ab "Biblioteca de etiquetas estándar de JavaServer Pages - Tutorial de Java EE 5". docs.oracle.com .
  15. ^ Murach y Urban 2014, págs. 270–273, §2 Habilidades esenciales de servlets y JSP: Introducción a JSTL.
  16. ^ Murach y Urban 2014, págs. 178, §2 Habilidades esenciales de servlets y JSP: cómo habilitar la biblioteca principal JSTL.
  17. ^ "El tutorial de Java EE 5, capítulo 6, documentos de JavaServer Pages". oracle.com . Consultado el 27 de julio de 2022 .
  18. ^ "Documentación de IBM". www.ibm.com .
  19. ^ "SyBooks en línea". infocenter.sybase.com .
  20. ^ abc Murach & Urban 2014, pp. 46–47, §1 Comience bien: el JSP para la segunda página.
  21. ^ ab Los problemas con JSP (25 de enero de 2000)

Obras citadas

Lectura adicional

Enlaces externos