Programmazione
Asp
Asp.NET
Java
Javascript
Php
Oracle

Svaghi
Ascolta Radio
Faccine
Libri
Links

Varie
Cerca nel sito...
Segnalazioni
Scrivimi


JSP inclusione file esterni


Per includere un file HTML o JSP in un file JSP si utilizza la direttiva include.L'effetto che si ottiene è quello di rimpiazzare la direttiva con il codice contenuto nel file indicato da includere, cosa che può rilevarsi utile in alcuni casi come ad esempio x includere blocchi di codici uguali in più pagine.
La direttiva include fa sempre riferimento ad un file in modo relativo al file da cui è richiamato: ad esempio prendiamo un file A.jsp in cui la direttiva include richiama un file dir/B.jsp che a sua volta richiama un file C.jsp, in questo caso il file C.jsp deve essere anch'esso nella cartella dir.
Se si vuole richiamare un file con la posizione assoluta rispetto alla root del server occore anteporre all'indirizzo di tale file il simobolo "/":

<%@ include file="fileRelativo.jsp" %> //con direttiva include richiamo file in forma relativa (stessa directory del mio file)
<%@ include file="/fileAssoluto.jsp" %> //con direttiva include richiamo file in forma assoluta (nel directory principale del server)

Una volta che sia avvenuto un accesso alla pagina JSP principale il contento del file di include che verrà richiamato sarà sempre lo stesso, anche se quest'ultimo viene modificato; se si desidera far sì che ad ogni richiesta venga "ricatturato / riletto" il contenuto del file da includere bisogna utilizzare una cosidetta "action include" anzichè una "direttiva action" come nell'esempio precedente:

<jsp:include page="fileRelativo.jsp" /> //con action include richiamo file in forma relativa (stessa directory del mio file)
<jsp:include page="/fileAssoluto.jsp" /> //con action include richiamo file in forma assoluta (nel directory principale del server)

E' altresì possibile determinare dinamicamente il file di include, ad esemipo da un parametro di request (o da una variabile):

<jsp:include page='<%= request.getParameter("incFile") %>' />

Una action include esegue la pagina inclusa e genera l'output in base ad esso. L'accesso ai parametri di request passati dall'URL come query string sono così disponibili non solo per la pagina princiapale ma pure alle pagine che vengono inlcuse. E' altresì possibile temporaneamente sovrascrivere dei parametri, o introdurne di nuovi, quando viene richiamata una pagina utilizzando jsp:param action.
Nell'esempio seguente
- param1 è specificato nella querystring e quindi disponibile immediatamente alla pagina richiamata.
- param2 è anch'esso passato tramite querystring ma è sovrascritto quando viene richiamata la pagina esterna, salvo poi ritornare al valore principale al di fuori di quest'ultima
- param3 è un nuovo parametro creato dalla chiamata del file esterno. Questo parametro risulterà disponibile solo all'interno del file incluso, nella pagina richiamante sarà un valore nullo.

ed ecco qui l'esempio della pagina principale che richiama il file esterno:

<html>
<head></head>
<body>
<jsp:include page="callee.jsp" />
<jsp:param name="param2" value="value2" />
<jsp:param name="param3" value="value3" />
</jsp:include>

Caller:
param1: <%= request.getParameter("param1") %>
param2: <%= request.getParameter("param2") %>
param3: <%= request.getParameter("param3") %>

</body>
</html>

ed adesso il file che viene richiamato (fileEsterno.jsp)

Callee:
param1: <%= request.getParameter("param1") %>
param2: <%= request.getParameter("param2") %>
param3: <%= request.getParameter("param3") %>

Se questo esempio viene richiamato in questo modo:

http://hostname.com?param1=a&param2=b

il risultato sarà il seguente:

Callee:
param1: a
param2: value2
param3: value3


Caller:
param1: a
param2: b
param3: null