w3schools tutorial form ejemplos ejemplo caracteristicas java jsp

java - form - jsp tutorial



¿Cuál es la diferencia entre<jsp: include page=...> y<% @ include file=...>? (6)

1) ¿Cuándo usar la directiva include ?

Para evitar la duplicación de la misma lógica de salida en múltiples jsp''s de la aplicación web, se incluye el mecanismo para incluir, por ejemplo, para promover la reutilización de la lógica de presentación, incluida la directiva.

<%@ include file="abc.jsp" %>

cuando el motor jsp recibe la instrucción anterior, recupera el código fuente de abc.jsp y copia el mismo en línea en el jsp actual. Después de copiar se realiza la traducción para la página actual

Simplemente diciendo que es una instrucción estática para el motor jsp, es decir, el código fuente completo de "abc.jsp" se copia en la página actual.

2) ¿Cuándo usar incluir acción ?

La etiqueta de inclusión no incluye el código fuente de la página incluida en la página actual, en cambio la salida generada en tiempo de ejecución por la página incluida se incluye en la respuesta de la página actual.

La función de inclusión de etiquetas es similar a la de incluir el mecanismo del despachador de solicitudes de programación de servlets

La etiqueta include es una instrucción en tiempo de ejecución para el motor jsp, es decir, en lugar de copiar el código completo en la página actual, se realiza una llamada de método a "abc.jsp" desde la página actual.

Ambas etiquetas incluyen el contenido de una página en otra.

Entonces, ¿cuál es la diferencia exacta entre estas dos etiquetas?


Hay una gran diferencia Como se ha mencionado, <%@ include es una inclusión estática, <jsp:include es una inclusión dinámica. Piense en ello como una diferencia entre una macro y una llamada a función (si está familiarizado con esos términos). Otra forma de decirlo, una inclusión estática es exactamente lo mismo que copiar y pegar el contenido exacto del archivo incluido (el "código") en la ubicación de la declaración de <%@ include (que es exactamente lo que hará el compilador JSP hacer.

Una inclusión dinámica hará una solicitud (utilizando el despachador de solicitudes) que ejecutará la página indicada y luego incluirá el resultado de la página en el resultado de la página de llamada, en lugar de la declaración <jsp:include .

La gran diferencia aquí es que con una inclusión dinámica, la página incluida se ejecutará en su propio pageContext. Y dado que es una solicitud, puede enviar parámetros a la página de la misma forma que puede enviar parámetros junto con cualquier otra solicitud. Una inclusión estática, por otro lado, es solo una pieza de código que se ejecutará dentro del contexto de la página de llamada. Si incluye estáticamente el mismo archivo más de una vez, el código en ese archivo existirá en varias ubicaciones en la página de llamada, por lo que algo así como

<% int i = 0; %>

generaría un error de compilación (ya que la misma variable no puede declararse más de una vez).


Una es una importación estática (<% = @ include ...> "), la otra es dinámica (jsp: include). Afectará, por ejemplo, la ruta que va a tener que especificar para su archivo incluido. en Google le dirá más.


Java revisitado

  1. El recurso incluido por la directiva include se carga durante el tiempo de traducción jsp, mientras que el recurso incluido por la acción include se carga durante el tiempo de solicitud.
  2. Cualquier cambio en el recurso incluido no será visible en caso de directiva de inclusión hasta que el archivo jsp vuelva a compilarse. Mientras que en caso de incluir acción, cualquier cambio en el recurso incluido será visible en la siguiente solicitud.
  3. Incluir directiva es importación estática, mientras que incluir acción es importación dinámica
  4. La directiva include usa el atributo de archivo para especificar el recurso que se incluirá, mientras que incluye el atributo de página de uso de acción para el mismo propósito.

jGuru :

La directiva <%@include file="abc.jsp"%> actúa como C "#include" , insertando el texto del archivo incluido y compilándolo como si fuera parte del archivo incluido. El archivo incluido puede ser de cualquier tipo (incluido HTML o texto).

La etiqueta <jsp: include page = "abc.jsp"> compila el archivo como un archivo JSP independiente, y le incrusta una llamada en el JSP compilado.

Algunos motores JSP admiten las etiquetas no estándar <!--#include file="data.inc"--> (NCSA-, o .shtml-style) y <%@ vinclude="data.inc" %> (JRun -style), pero estos no están definidos en la especificación JSP y, por lo tanto, no se puede confiar en ellos.

Ver también esta pregunta en las preguntas frecuentes de JSP.


En una pieza de código reutilizable utilizo la directiva <%@include file="reuse.html"%> y en el segundo uso la etiqueta <jsp:include page="reuse.html" /> .

Deje que el código en el archivo reutilizable sea:

<html> <head> <title>reusable</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <img src="candle.gif" height="100" width="50"/> <br /> <p><b>As the candle burns,so do I</b></p> </body>

Después de ejecutar ambos archivos JSP, verá el mismo resultado y pensará si hubo alguna diferencia entre la directiva y la etiqueta . Pero si observas el servlet generado de los dos archivos JSP, verás la diferencia. Esto es lo que verás cuando uses la directive :

out.write("<html>/r/n"); out.write(" <head>/r/n"); out.write(" <title>reusable</title>/r/n"); out.write(" <meta http-equiv=/"Content-Type/" content=/"text/html; charset=UTF-8/">/r/n"); out.write(" </head>/r/n"); out.write(" <body>/r/n"); out.write(" <img src=/"candle.gif/" height=/"100/" width=/"50/"/> <br />/r/n"); out.write(" <p><b>As the candle burns,so do I</b></p>/r/n"); out.write(" </body>/r/n"); out.write("</html>/r/n");

y esto es lo que verá para la etiqueta usada en el segundo archivo JSP:

org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "reusable.html", out, false);

Entonces, ahora sabe que la directiva include inserta la fuente de reuse.html en el momento de la traducción, pero la etiqueta de acción inserta la respuesta de reuse.html en el tiempo de ejecución.

Si lo piensas, hay un golpe de rendimiento extra con cada etiqueta de acción ( jsp:include file ). Significa que puede garantizar que siempre tendrá el último contenido, pero aumenta el costo de rendimiento.