Présentation des éléments de syntaxe JSP
Tout d'abord, pour clarifier les choses, voici un bref aperçu des éléments de syntaxe JSP :
- Directives : elles transmettent des informations concernant la page JSP dans son ensemble.
- Éléments de script : il s'agit d'éléments de codage Java tels que les déclarations, les expressions, les scriptlets et les commentaires.
- Objets et étendues : les objets JSP peuvent être créés explicitement ou implicitement et sont accessibles dans une étendue donnée, par exemple à partir de n'importe où dans la page JSP ou la session.
- Actions : elles créent des objets ou affectent le flux de sortie dans la réponse JSP (ou les deux).
Comment le contenu est inclus dans JSP
Il existe plusieurs mécanismes pour réutiliser le contenu d'un fichier JSP.
Les 4 mécanismes suivants pour inclure du contenu dans JSP peuvent être classés comme réutilisation directe :
(pour les 3 premiers mécanismes citant "Head First Servlets and JSP" )
1) La directive include :
<%@ include file="header.html" %>
Statique : ajoute le contenu de la valeur de l'attribut de fichier à la page en cours au moment de la traduction . La directive était à l'origine destinée aux modèles de mise en page statiques, comme les en-têtes HTML.
2) L' <jsp:include>
action standard :
<jsp:include page="header.jsp" />
Dynamique : ajoute le contenu de la valeur de l'attribut de page à la page actuelle au moment de la demande . Était davantage destiné au contenu dynamique provenant de JSP.
3) La <c:import>
balise JSTL:
<c:import url=”http://www.example.com/foo/bar.html” />
Dynamique : ajoute le contenu de la valeur de l'attribut URL à la page actuelle, au moment de la demande . Cela fonctionne beaucoup
<jsp:include>
, mais c'est plus puissant et flexible: contrairement aux deux autres inclus, l' <c:import>
URL peut provenir de l'extérieur du conteneur Web !
4) Préludes et codas:
Statique : les préludes et les codas ne peuvent être appliqués qu'au début et à la fin des pages .
Vous pouvez implicitement inclure des préludes (également appelés en-têtes) et des codas
(également appelés pieds de page) pour un groupe de pages JSP en ajoutant
respectivement des éléments <include-prelude>
et <include-coda>
dans un <jsp-property-group>
élément du descripteur de déploiement de l' application Web web.xml . Pour en savoir plus:
• Configuration des inclusions implicites au début et à la fin des JSP
• Définition des inclusions implicites
Tag File est une méthode indirecte de réutilisation de contenu, la manière d' encapsuler le contenu réutilisable . Un fichier de balise est un fichier source contenant un fragment de code JSP réutilisable en tant que balise personnalisée .
Le BUT des fichiers d'inclusion et de balise est différent.
Le fichier de balise (un concept introduit avec JSP 2.0) est l'une des options de création de balises personnalisées . C'est un moyen plus rapide et plus simple de créer des balises personnalisées .
Les balises personnalisées , également appelées extensions de balises, sont des éléments JSP qui permettent à la logique personnalisée et à la sortie fournie par d'autres composants Java d'être insérées dans les pages JSP. La logique fournie via une balise personnalisée est implémentée par un objet Java appelé gestionnaire de balises .
Certains exemples de tâches pouvant être exécutées par des balises personnalisées incluent l'utilisation d'objets implicites, le traitement de formulaires, l'accès aux bases de données et à d'autres services d'entreprise tels que la messagerie électronique et les annuaires, et la mise en œuvre du contrôle de flux.
Concernant votre modification
Peut-être que dans votre exemple (dans votre édition ), il n'y a aucune différence entre l'utilisation de l'inclusion directe et un fichier de balise. Mais les balises personnalisées ont un riche ensemble de fonctionnalités . Ils peuvent
Soyez personnalisé au moyen d'attributs transmis depuis la page d'appel.
Renvoyez les variables à la page d'appel.
Accédez à tous les objets disponibles sur les pages JSP.
Communiquer entre eux. Vous pouvez créer et initialiser un composant JavaBeans, créer une variable EL publique qui fait référence à ce bean dans une balise, puis utiliser le bean dans une autre balise.
Soyez imbriqués les uns dans les autres et communiquez au moyen de variables privées.
Lisez également ceci dans «Pro JSP 2»: Comprendre les balises personnalisées JSP .
Lecture utile.
Conclusion
Utilisez les bons outils pour chaque tâche.
Utilisez les fichiers de balises comme moyen rapide et simple de créer des balises personnalisées qui peuvent vous aider à encapsuler du contenu réutilisable .
Quant au contenu inclus dans JSP (citation d' ici ):
- Utilisez la directive include si le fichier change rarement . C'est le mécanisme le plus rapide. Si votre conteneur ne détecte pas automatiquement les modifications, vous pouvez forcer les modifications à prendre effet en supprimant le fichier de classe de la page principale.
- Utilisez l'action d'inclusion uniquement pour le contenu qui change souvent , et si la page à inclure ne peut être décidée tant que la page principale n'est pas demandée.
*
) dans la directive d'inclusion.<jsp:include>
est une action d' inclusion standard ,<%@ include file="" %>
est la directive d' inclusion . Lisez la toute dernière section (dans la boîte grise) qui décrit les avantages (c'est-à-dire des recommandations pour choisir l'un ou l'autre). Consultez également cet article pour une description détaillée. J'espère que cela t'aides.Question en double possible
<@include>
- La balise directive indique au compilateur JSP de fusionner le contenu du fichier inclus dans la JSP avant de créer le code de servlet généré. C'est l'équivalent de couper et coller le texte de votre page d'inclusion directement dans votre JSP.<jsp:include>
- La balise JSP Action, quant à elle, demande au conteneur de suspendre l'exécution de cette page, d'exécuter la page incluse et de fusionner la sortie de cette page dans la sortie de cette page.la source
<t:mytag><h1>Hello World</h1></t:mytag>
:? Ce n'est pas une inclusion, c'est l'utilisation normale d'une balise (comme<jsp:useBean>
ou<c:if>
).Le principal avantage de
<jsp:include />
over<%@ include >
est:<jsp:include />
permet de passer des paramètresce qui n'est pas possible dans
<%@include file="somefile.jsp" %>
la source
<%@include file="somefile.jsp?menu=value" %>
? Est-ce aussi limité?Les trois options de modèle -
<%@include>
,<jsp:include>
et<%@tag>
sont valides, et les trois couvrent différents cas d'utilisation.Avec
<@include>
, l'analyseur JSP intègre le contenu du fichier inclus dans la JSP avant la compilation (similaire à un C#include
). Vous utiliseriez cette option avec un contenu simple et statique: par exemple, si vous souhaitez inclure des éléments d'en-tête, de pied de page ou de navigation dans chaque page de votre application Web. Le contenu inclus devient une partie de la JSP compilée et il n'y a aucun coût supplémentaire au moment de l'exécution.<jsp:include>
(et JSTL<c:import>
, qui est similaire et encore plus puissant) sont les mieux adaptés au contenu dynamique. Utilisez-les lorsque vous devez inclure du contenu d'une autre URL, locale ou distante; lorsque la ressource que vous incluez est elle-même dynamique; ou lorsque le contenu inclus utilise des variables ou des définitions de bean qui sont en conflit avec la page d'inclusion.<c:import>
vous permet également de stocker le texte inclus dans une variable, que vous pouvez manipuler ou réutiliser ultérieurement. Les deux entraînent un coût d'exécution supplémentaire pour l'envoi: c'est minime, mais vous devez être conscient que l'inclusion dynamique n'est pas "gratuite".Utilisez des fichiers de balises lorsque vous souhaitez créer des composants d'interface utilisateur réutilisables. Si vous avez une liste de widgets, par exemple, et que vous souhaitez parcourir les widgets et afficher les propriétés de chacun (dans un tableau ou dans un formulaire), vous créez une balise. Les balises peuvent prendre des arguments, en utilisant
<%@tag attribute>
et ces arguments peuvent être obligatoires ou facultatifs - un peu comme des paramètres de méthode.Les fichiers de balises sont un mécanisme plus simple, basé sur JSP, pour écrire des bibliothèques de balises, que vous deviez (avant JSP 2.0) écrire en utilisant du code Java. C'est beaucoup plus simple d'écrire des fichiers de balises JSP quand il y a beaucoup de rendu à faire dans la balise: vous n'avez pas besoin de mélanger du code Java et HTML comme vous le feriez si vous écriviez vos balises en Java.
la source
D'après: Java revisité
Les ressources incluses par la directive include sont chargées pendant le temps de traduction jsp, tandis que les ressources incluses par l'action include sont chargées pendant le temps de la demande.
Tout changement sur les ressources incluses ne sera pas visible en cas de directive include jusqu'à ce que le fichier jsp soit à nouveau compilé. En cas d'action d'inclusion, toute modification de la ressource incluse sera visible dans la prochaine demande.
La directive d'inclusion est une importation statique, tandis que l'action d'inclusion est une importation dynamique.
La directive Inclure utilise l'attribut de fichier pour spécifier les ressources à inclure tandis que l'action d'inclusion utilise l'attribut de page dans le même but.
la source