Qual è la differenza tra l’inclusione di file con JSP include direttiva, JSP include l’azione e l’uso di file tag JSP?

Sembra che ci siano due metodi per il template con JSP. Compresi i file con una di queste dichiarazioni

  

o utilizzando i file di tag JSP

 // Save this as mytag.tag         

E in un’altra pagina JSP chiamalo con

   

Hello World

Quindi quale metodo dovrei usare? Uno è ora considerato deprecato o entrambi sono validi e coprono diversi casi d’uso?

modificare

Non sta usando questo file di tag come usando un include?

 // Save this as product.tag    Product name: ${product.name} 
Quantity: ${product.quantity}

E chiamalo su un altro JSP con

       

Mi sembra che sia lo stesso che usare un parametro di inclusione e passaggio ad esso. Quindi i tag file sono uguali a quelli inclusi?

Esistono diversi meccanismi per riutilizzare il contenuto in un file JSP.

I seguenti 4 meccanismi per includere il contenuto in JSP possono essere classificati come riutilizzo diretto :
(per i primi 3 meccanismi che citano da “Head First Servlets and JSP” )

1) La direttiva include:

 <%@ include file="header.html" %> 

Statico : aggiunge il contenuto dal valore dell’attributo file alla pagina corrente al momento della traduzione . La direttiva era originariamente intesa per i modelli di layout statici, come le intestazioni HTML.

2) L’azione standard :

  

Dinamico : aggiunge il contenuto dal valore dell’attributo della pagina alla pagina corrente al momento della richiesta . Era destinato più per contenuti dinamici provenienti da JSP.

3) Il JSTL:

  

Dinamico : aggiunge il contenuto dal valore dell’attributo URL alla pagina corrente, al momento della richiesta . Funziona molto come , ma è più potente e flessibile: a differenza degli altri due include, l’ url può provenire dall’esterno del contenitore web !

4) Preludi e codici:

Statico : i preludi e i codici possono essere applicati solo all’inizio e alla fine delle pagine .
È ansible includere implicitamente preludi (detti anche intestazioni) e codici (detti anche piè di pagina) per un gruppo di pagine JSP aggiungendo gli elementi e rispettivamente all’interno di un elemento nel Descrittore di distribuzione web.xml dell’applicazione Web. Leggi di più qui:
• Configurazione dei contenuti impliciti all’inizio e alla fine di JSP
• Definizione implicita include


Tag File è un metodo indiretto di riutilizzo dei contenuti, il modo di incapsulare contenuti riutilizzabili . Un file tag è un file sorgente che contiene un frammento di codice JSP che è riutilizzabile come tag personalizzato .

Lo SCOPO di include e Tag Files è diverso.

Il file di tag (un concetto introdotto con JSP 2.0) è una delle opzioni per la creazione di tag personalizzati . È un modo più semplice e veloce per creare tag personalizzati . I tag personalizzati , noti anche come estensioni di tag, sono elementi JSP che consentono di inserire la logica e l’output personalizzati forniti da altri componenti Java nelle pagine JSP. La logica fornita tramite un tag personalizzato è implementata da un object Java noto come gestore di tag .

Alcuni esempi di attività che possono essere eseguite dai tag personalizzati includono il funzionamento su oggetti impliciti, l’elaborazione di moduli, l’accesso a database e altri servizi aziendali quali e-mail e directory e l’implementazione del controllo di stream.


Per quanto riguarda la tua modifica

Forse nel tuo esempio (nel tuo Modifica ), non c’è alcuna differenza tra l’utilizzo di inclusione diretta e un file di tag. Ma i tag personalizzati hanno un ricco set di funzionalità . Loro possono

  • Essere personalizzato per mezzo di attributi passati dalla pagina chiamante.

  • Passa le variabili alla pagina chiamante.

  • Accedi a tutti gli oggetti disponibili per le pagine JSP.

  • Comunicare gli uni con gli altri. È ansible creare e inizializzare un componente JavaBeans, creare una variabile EL pubblica che fa riferimento a quel bean in un tag e quindi utilizzare il bean in un altro tag.

  • Essere annidati l’uno nell’altro e comunicare mediante variabili private.

Leggi anche questo da “Pro JSP 2”: Comprensione dei tag personalizzati JSP .


Lettura utile

  • Differenza tra direttiva include e include azione in JSP

  • Trucchi JSP per semplificare i templating

  • Tutorial molto informativo e facile da capire da coreservlet.com con bellissime spiegazioni che includono VS. <%@ include %> VS. <%@ include %> tabella di confronto:
    Inclusione di file e applet nelle pagine JSP

  • Un altro bel tutorial di coreservlets.com relativo alle librerie di tag e ai file di tag:
    Creazione di librerie di tag JSP personalizzate: Nozioni di base

  • Il tutorial Java EE 5 ufficiale con esempi:
    Incapsulamento del contenuto riutilizzabile utilizzando i file di tag .

  • Questa pagina del tutorial Java EE 5 ufficiale dovrebbe darti ancora più comprensione:
    Riutilizzo del contenuto nelle pagine JSP .

  • Questo estratto dal libro “Pro JSP 2” discute anche il motivo per cui hai bisogno di un file di tag invece di usare la static include :
    Riutilizzare il contenuto con i file di tag


Conclusione

Usa gli strumenti giusti per il compito concreto.

Utilizza i file di tag come un modo semplice e veloce per creare tag personalizzati .

Per quanto riguarda il contenuto incluso in JSP (citazione da qui ):

  • Utilizzare la direttiva include se il file cambia raramente. È il meccanismo più veloce. Se il contenitore non rileva automaticamente le modifiche, è ansible forzare l’applicazione delle modifiche eliminando il file di class della pagina principale.

  • Utilizzare l’azione di inclusione solo per i contenuti che cambiano spesso e se la pagina da includere non può essere decisa finché non viene richiesta la pagina principale.

Possibile domanda duplicata

<@include> – Il tag direttiva indica al compilatore JSP di unire il contenuto del file incluso nel JSP prima di creare il codice servlet generato. È l’equivalente di tagliare e incollare il testo dalla tua pagina di inclusione direttamente nel tuo JSP.

  • Solo un servlet viene eseguito in fase di esecuzione.
  • È ansible accedere alle variabili di script dichiarate nella pagina principale nella pagina inclusa (ricorda che sono la stessa pagina).
  • La pagina inclusa non ha bisogno di essere compilata come JSP standalone. Può essere un frammento di codice o un testo semplice. La pagina inclusa non verrà mai compilata come versione autonoma. La pagina inclusa può anche avere qualsiasi estensione, sebbene .jspf sia diventata un’estensione convenzionalmente utilizzata.
  • Uno svantaggio sui contenitori precedenti è che le modifiche alle pagine di inclusione potrebbero non avere effetto fino a quando la pagina padre non viene aggiornata. Le versioni recenti di Tomcat controllano le pagine di inclusione per gli aggiornamenti e impongono una ricompilazione del genitore se vengono aggiornate.
  • Un ulteriore svantaggio è dato dal fatto che il codice viene inserito direttamente nel metodo di servizio del servlet generato, il metodo può diventare molto grande. Se supera i 64 KB, probabilmente la compilazione JSP fallirà.

– Il tag di azione JSP d’altra parte indica al contenitore di sospendere l’esecuzione di questa pagina, di eseguire la pagina inclusa e di unire l’output di quella pagina nell’output da questa pagina.

  • Ogni pagina inclusa viene eseguita come un servlet separato in fase di esecuzione.
  • Le pagine possono essere incluse condizionatamente in fase di esecuzione. Questo è spesso utile per i framework di template che costruiscono pagine fuori include. La pagina padre può determinare quale pagina, se esistente, da includere secondo alcune condizioni di runtime.
  • I valori delle variabili dello scriptlet devono essere passati esplicitamente alla pagina di inclusione.
  • La pagina inclusa deve essere in grado di essere eseguita da sola.
  • È meno probabile che si verifichino errori di compilazione a causa del superamento della dimensione massima del metodo nella class servlet generata.

A seconda delle esigenze, è ansible utilizzare <@include> o

Il vantaggio principale di oltre <%@ include > è:

consente di passare i parametri

    

che non è ansible in <%@include file="somefile.jsp" %>

Tutte e tre le opzioni del modello – <%@include> , e <%@tag> sono valide e tutte e tre coprono diversi casi d’uso.

Con <@include> , il parser JSP allinea il contenuto del file incluso nel JSP prima della compilazione (simile a un C #include ). Utilizzerai questa opzione con contenuto semplice e statico: ad esempio, se desideri includere elementi di intestazione, piè di pagina o elementi di navigazione in ogni pagina della tua app web. Il contenuto incluso diventa parte del JSP compilato e non ci sono costi aggiuntivi in ​​fase di runtime.

(e JSTL , che è simile e persino più potente) sono più adatti al contenuto dinamico. Usali quando hai bisogno di includere contenuti da un altro URL, locale o remoto; quando la risorsa che stai includendo è essa stessa dynamic; o quando il contenuto incluso utilizza variabili o definizioni di bean in conflitto con la pagina inclusa. consente anche di memorizzare il testo incluso in una variabile, che può essere ulteriormente manipolato o riutilizzato. Entrambi questi costi comportano un costo di runtime aggiuntivo per l’invio: questo è minimo, ma è necessario essere consapevoli che l’inclusione dynamic non è “gratuita”.

Utilizzare i file di tag quando si desidera creare componenti riutilizzabili dell’interfaccia utente. Se si dispone di un elenco di widget, ad esempio, e si desidera eseguire un’iterazione sui widget e visualizzare le proprietà di ciascuno (in una tabella o in un modulo), si creerà un tag. I tag possono assumere argomenti, utilizzando l’ <%@tag attribute> e questi argomenti possono essere obbligatori o facoltativi, in qualche modo come i parametri del metodo.

I file di tag sono un meccanismo più semplice basato su JSP per scrivere librerie di tag, che (pre JSP 2.0) dovevi scrivere usando il codice Java. È molto più pulito scrivere file di tag JSP quando c’è un sacco di rendering da fare nel tag: non è necessario mescolare codice Java e HTML come si farebbe se si scrivessero i tag in Java.

Java rivisitato

  1. La risorsa inclusa dalla direttiva include viene caricata durante il tempo di conversione jsp, mentre la risorsa inclusa dall’azione include viene caricata durante il tempo richiesto.
  2. Qualsiasi modifica sulla risorsa inclusa non sarà visibile in caso di direttiva include fino a quando il file jsp non verrà compilato di nuovo. Mentre in caso di azione di inclusione, qualsiasi modifica nella risorsa inclusa sarà visibile nella prossima richiesta.
  3. La direttiva include è l’importazione statica, mentre l’azione include è l’importazione dynamic
  4. Include direttiva utilizza l’attributo file per specificare la risorsa da includere mentre l’azione include l’attributo della pagina di utilizzo per lo stesso scopo.