stringtranslate.com

Páginas del servidor de Yakarta

Jakarta Server Pages ( JSP ; anteriormente JavaServer Pages ) 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 , [1] 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 JSP Modelo 2.

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

Jakarta Server Pages se puede 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 Modelo 2 . [3]

JSP permite intercalar código Java y ciertas acciones predefinidas con contenido de marcado web estático, como HTML. La página resultante se compila y ejecuta en el servidor para entregar un documento. Las páginas compiladas, así como cualquier biblioteca Java dependiente, contienen código de bytes de Java en lugar de código de máquina . Como 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 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. [4]

El contenedor web crea objetos JSP implícitos como solicitud, respuesta, sesión, aplicación, configuración, página, contexto de página, 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 funciones de secuencias de comandos . El más básico es <% ... %>, que incluye un scriptlet JSP. Un scriptlet es un fragmento de código Java [5] que se ejecuta cuando el usuario solicita la página.

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

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 como resultado prácticas de programación deficientes.

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. Del mismo modo, el contenido dentro de una construcción de bucle puede aparecer varias veces en la salida, dependiendo de cuántas veces se ejecute el cuerpo del bucle.

Ejemplo

Lo 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> Bien. </p>               

El resultado mostrado 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. [7] Aunque el uso de la useBeanetiqueta parece similar a una etiqueta HTML, todas las etiquetas JSP para JavaBeans usan sintaxis XML. Por lo tanto, el código que contiene la useBeanetiqueta distingue entre mayúsculas y minúsculas. [8]

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 del bean. Declara scopeel objeto responsable de almacenar el bean. El valor del alcance define la duración durante la cual el bean está disponible para que lo utilice el resto de la aplicación Java. El alcance puede ser uno de los siguientes cuatro valores: [8]

Las etiquetas getProperty y setProperty

Una vez creado un bean usando la useBeanetiqueta, las etiquetas getPropertyy setPropertyse pueden usar 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 establecer las propiedades de un bean. Para las etiquetas getProperty y setProperty, el atributo de nombre se utiliza para especificar el nombre del bean. Por lo tanto, el atributo de nombre debe coincidir con el atributo de identificación proporcionado por la useBeanetiqueta. [9]

Lenguaje de expresión

La versión 2.0 de la especificación JSP agregó soporte para 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 . [10]

El lenguaje de expresión JSP utiliza una sintaxis compacta que permite al desarrollador obtener atributos y propiedades de JavaBean de un objeto de solicitud determinado. Cuando se utiliza EL, se debe agregar un signo de dólar ("$") al principio del código. El símbolo del 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. [11]

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, denominadas acciones JSP, para invocar la funcionalidad integrada. [6] 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. [12] Una de esas bibliotecas es JSTL . [13]

Biblioteca de etiquetas estándar de Yakarta

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

De todas las bibliotecas de JSTL, la biblioteca principal JSTL es la más utilizada. Se debe utilizar una directiva taglib para especificar el URI de la biblioteca principal JSTL mediante un prefijo. Aunque hay muchas opciones diferentes para el prefijo, el prefijo "c" se usa comúnmente para esta biblioteca. [15]

JSP compatible con XML

Las páginas JSP también se pueden escribir en una sintaxis XML totalmente válida. [16] Estos 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, el 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 generalmente está 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 probar si hay errores. [17]

Algunos contenedores JSP admiten la configuración de la frecuencia con la que el contenedor comprueba las marcas de tiempo del archivo 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 de software y en un intervalo más largo (quizás minutos o incluso nunca) para una aplicación web implementada . [18]

Crítica

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

En 2000, Jason Hunter, autor de "Java Servlet Programming" describió una serie de "problemas" con JavaServer Pages. [20] 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 que no es Java", con lo que se refería a las páginas Active Server de Microsoft . Más tarde, añadió 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 plantilla). [20] 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.

Ver también

Contenedores de servlets

Alternativas de plantillas basadas en Java

Referencias

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

Trabajos citados

Otras lecturas

enlaces externos