Differenza tra jsp:include e @ include file
DOMANDA:
Che differenza c'è tra:
<%@ include file="pagina.jsp" %>
e
<jsp:include page="pagina.jsp">?
RISPOSTA:
Cerchiamo di spiegare brevemente la differenza e subito dopo ne vedremo gli effetti con dei semplici esempi.
DIRETTIVA @INCLUDE
<%@ include file="pagina.jsp" %>
E' una direttiva che richiama il file indicato tra virgolette (nel nostro esempio pagina.jsp) facendolo diventare parte della pagina in cui è incluso. Detto in parole semplici è come se facessimo un copia e incolla del contenuto del file pagina.jsp in corrispondenza dell'inclusione. Questo implica che non è necessario includere un file specifico, ma viene accettata qualunque tipologia, anche un semplice .txt.
DIRETTIVA JSP:INCLUDE
<jsp:include page="pagina.jsp">
In questo caso invece non avviene una semplice sostituzione. Il file indicato come valore dell'attributo page, viene compilato separatamente come se fosse una normale JSP e l'inclusione non è altro che una chiamata implicita al codice. Infatti, con questa direttiva jsp:include è possibile specificare dei parametri che verranno gestiti da pagina.jsp.
Per passare dei parametri è sufficiente dichiararli in questo modo:
<jsp:include page="pagina.jsp"> <jsp:param name="param1" value="pippo" /> <jsp:param name="param2" value="pluto" /> <jsp:param name="param3" value="paperino" /> </jsp:include>
In pagina.jsp potremo semplicemente effettuare una request.getParameter("param1") per ottenere il valore pippo e così per gli altri due parametri.
ESEMPIO
Guardiamo insieme un esempio completo di JSP con i due tipi di inclusione:
La pagina inclusione.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Esempi di inclusione</title> </head> <body> Includo una pagina tramite la direttiva @ include file: <br / > <%@ include file="pagina1.jsp"%> <br / ><br / > Includo una pagina tramite la direttiva jsp:include: <br / > <jsp:include page="pagina2.jsp"> <jsp:param name="param1" value="http://" /> <jsp:param name="param2" value="lancill." /> <jsp:param name="param3" value="blogspot.it" /> </jsp:include> </body> </html>
La prima pagina inclusa pagina1.jsp (che potrebbe essere anche un semplice file di testo):
<a href="http://lancill.blogspot.it">Il blog di Lancill con @ include</a>
La seconda pagina inclusa pagina2.jsp (che elabora i tre parametri ricevuti):
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <a href="<%= request.getParameter("param1") %> <%= request.getParameter("param2") %> <%= request.getParameter("param3") %>"> Il blog di Lancill con jsp:include </a>
Lanciamo le pagine dal nostro Web Server (ad esempio Tomcat) e il risultato sarà banalmente:
Includo una pagina tramite la direttiva @ include file:
Il blog di Lancill con @ include
Includo una pagina tramite la direttiva jsp:include:
Il blog di Lancill con jsp:include
Il blog di Lancill con @ include
Includo una pagina tramite la direttiva jsp:include:
Il blog di Lancill con jsp:include
NOTA: per i più esperti può sembrare scontato, ma l'essere incluso in un'altra pagina JSP non implica la protezione e la regolazione dell'accesso per il file incluso. Quindi è buona norma preoccuparsi dei privilegi di accesso alle risorse incluse come se fossero risorse a se stanti.
Commenti
Posta un commento