El mejor método de programación JSP: Utilizar un mecanismo de inclusión correcto

JSP da soporte a dos mecanismos de inclusión: Inclusión estática e inclusión dinámica.

Inclusión estática
La directiva de inclusión estática hace que el contenido del archivo especificado se inserte textualmente en el archivo de inclusión durante la compilación, esto es, cuando la página JSP se convierte en un servlet Java. Los elementos JSP del archivo incluido se pueden ver prácticamente en cualquier lugar de la página JSP resultante y deben tener nombres exclusivos para evitar colisiones de nombres. Los contenedores web típicos no pueden detectar los cambios realizados en el archivo incluido durante la ejecución, de aquí que el archivo de inclusión se tenga que actualizar para que los cambios surtan efecto. La sintaxis de la directiva de inclusión estática es la siguiente:

<%@ include file="
filename.jspf" %> 
Inclusión dinámica
Las acciones de inclusión dinámica son la respuesta que genera la ejecución de la página especificada durante la fase de proceso de la petición, esto es, cuando el usuario solicita la página de inclusión. Dado que lo que se incluye es la response que genera la página y no el content de la página, las variables de script declaradas en el archivo incluido no se pueden ver en otro lugar de la página JSP resultante. Por otro lado, los cambios realizados en el archivo incluido son transparentes para el archivo de inclusión. Hay dos alternativas para la inclusión dinámica:
  • <c:import url=" filename.jsp"> ... </c:import>
  • <jsp:include page=" filename.jsp" flush=" true|false"> ... </jsp:include>

A diferencia de jsp:include, la acción c:import proporciona un mecanismo para acceder a los recursos que se pueden especificar mediante un URL, de este modo, los autores de las páginas pueden acceder a los recursos que residen fuera de la aplicación web. Por otro lado, le falta la posibilidad de desechar la respuesta. Finalmente, c:import es comparativamente una operación de mayor envergadura y, por lo tanto, no resulta adecuada cuando se busca una solución ligera.

Importante: Si el sitio de HCL Commerce utiliza Almacenamiento en memoria caché dinámico, debe desechar la respuesta. Para ello, realice lo siguiente:
  • Ponga delante y detrás de cada acción c:import un scriptlet <%out.flush();%>.
  • Establezca flush="true" en las acciones jsp:include.

Mientras que la inclusión dinámica es más flexible que la inclusión estática no es tan eficaz. Como consecuencia, utilice las inclusiones estáticas siempre que sea posible para evitar problemas de rendimiento.