Il semble qu'il existe deux méthodes pour créer des modèles avec JSP. Y compris les fichiers avec l'une de ces déclarations
<%@ include file="foo.html" %>
<jsp:include page="foo.html" />
ou en utilisant des fichiers de balise JSP
// Save this as mytag.tag
<%@ tag description="Description" pageEncoding="UTF-8"%>
<html>
<head>
</head>
<body>
<jsp:doBody/>
</body>
</html>
Et dans une autre page JSP, appelez-le avec
<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>
<t:mytag>
<h1>Hello World</h1>
</t:mytag>
Alors, quelle méthode dois-je utiliser? Est-ce que l'un d'entre eux est maintenant considéré comme obsolète ou est-il valide et couvre-t-il différents cas d'utilisation?
Éditer
Est-ce que l’utilisation de ce fichier de balises n’est pas identique à l’utilisation d’un inclus?
// Save this as product.tag
<%@ tag description="Product templage" pageEncoding="UTF-8"%>
<%@ tag import="com.myapp.Product" %>
<%@ attribute name="product" required="true" type="com.myapp.Product"%>
Product name: ${product.name} <br/>
Quantity: ${product.quantity} <br/>
Et appelez-le sur un autre JSP avec
<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>
<t:product>
<c:forEach items="${cart.products}" var="product">
<t:product product="${product}"/>
</c:forEach>
</t:product>
Cela me semble être la même chose que d’utiliser un paramètre d’inclusion et de lui transmettre des paramètres. Les fichiers de balises sont-ils les mêmes que ceux inclus?
Il existe plusieurs mécanismes de réutilisation du contenu dans un fichier JSP.
Les 4 mécanismes suivants pour inclure du contenu dans JSP peuvent être classés en deux catégories: , réutilisation directe :
(pour les 3 premiers mécanismes citant "Head First Servlets and JSP" )
1) La directive include:
<%@ include file="header.html" %>
Static : ajoute le contenu de la valeur de l'attribut de fichier à la page actuelle au moment de la traduction . La directive était à l'origine destinée aux modèles de présentation statiques, tels que les en-têtes HTML.
2) L'action standard
<jsp:include>
:<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 . A été destiné plus pour le contenu dynamique provenant de JSP.
3) La balise
<c:import>
JSTL:<c:import url=”http://www.example.com/foo/bar.html” />
Dynamique : ajoute le contenu de la valeur de l'attribut d'URL à la page en cours, au moment de la demande . Cela fonctionne beaucoup comme
<jsp:include>
, mais il est plus puissant et flexible: contrairement aux deux autres inclus, l'URL<c:import>
peut être de l'extérieur du Web. Container !4) Préludes et codas:
Static : les préludes et les codas peuvent être appliqués uniquement 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 bas de page) pour un groupe de Pour ajouter des pages JSP en ajoutant les éléments<include-prelude>
et<include-coda>
, respectivement dans un élément<jsp-property-group>
de l'application Web web.xml . Lire la suite ici:
• Configuration des inclusions implicites au début et à la fin des JSP
• Définition des inclus implicites
Le fichier de balise est une méthode indirecte de réutilisation de contenu, la manière de encapsulant un 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 de includes et Tag Files est différent.
Le fichier de balise (un concept introduit avec JSP 2.0) est l’une des options pour créer des tags personnalisés . C'est un moyen plus rapide et plus simple de construire des balises personnalisées . Les balises personnalisées , également appelées extensions de balises, sont des éléments JSP qui permettent une logique et une sortie personnalisées fournies par d'autres Java composants à insérer dans les pages JSP. La logique fournie via une balise personnalisée est implémentée par un objet Java connu sous le nom de gestionnaire de balise .
Parmi les exemples de tâches pouvant être exécutées par des balises personnalisées, citons les opérations sur des objets implicites, les formulaires de traitement, l'accès aux bases de données et d'autres services d'entreprise tels que la messagerie et les annuaires, et la mise en œuvre du contrôle de flux.
Peut-être que dans votre exemple (dans votre Edit ), il n'y a aucune différence entre utiliser l'inclusion directe et un fichier de balise. Mais les balises personnalisées ont un riche ensemble de fonctionnalités . Ils peuvent
Être personnalisé au moyen d'attributs transmis de la page d'appel.
Renvoyer les variables à la page appelante.
Accédez à tous les objets disponibles pour les pages JSP.
Communiquer entre vous. 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.
Être imbriqués les uns dans les autres et communiquer au moyen de variables privées.
Lisez également ceci dans "Pro JSP 2": Comprendre les balises personnalisées JSP .
Différence entre la directive include et l'action include dans JSP
Tutoriel très informatif et facile à comprendre de coreservlet.com avec de belles explications incluant <jsp:include> VS. <%@ include %>
tableau de comparaison:
Y compris les fichiers et les applets dans les pages JSP
Un autre tutoriel de Nice de coreservlets.com concernant les bibliothèques de balises et les fichiers de balises:
Création de bibliothèques de balises JSP personnalisées: notions de base
Le Java _ EE 5 officiel Tutorial avec des exemples:
Encapsulation de contenu réutilisable à l'aide de fichiers de balises .
Cette page du tutoriel officiel Java EE 5 devrait vous donner encore plus de compréhension:
Réutilisation de contenu dans des pages JSP .
Cet extrait du livre "Pro JSP 2" explique également pourquoi avez-vous besoin d'un fichier de balise au lieu d'utiliser une inclusion statique :
Réutilisation de contenu avec des fichiers de balises
Utilisez les bons outils pour chaque tâche.
Utilisez les fichiers de balises comme moyen rapide et facile de créer balises personnalisées pouvant vous aider à encapsuler du contenu réutilisable .
En ce qui concerne le contenu inclus dans JSP (citation de 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 les forcer à 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 pas être décidée. jusqu'à ce que la page principale soit demandée.
<@include>
- La balise de directive demande au compilateur JSP de fusionner le contenu du fichier inclus dans le JSP avant de créer le code de servlet généré. Cela équivaut à couper et coller le texte de votre page d'inclusion directement dans votre JSP.
<jsp:include>
- La balise d'action JSP, quant à elle, indique au conteneur de suspendre l'exécution de cette page, d'aller exécuter la page incluse et de fusionner la sortie de cette page dans la sortie de cette page.
Selon vos besoins, vous pouvez utiliser
<@include>
ou<jsp:include>
Le principal avantage de <jsp:include />
par rapport à <%@ include >
est:
<jsp:include />
permet de passer des paramètres
<jsp:include page="inclusion.jsp">
<jsp:param name="menu" value="objectValue"/>
</jsp:include>
ce qui n'est pas possible dans <%@include file="somefile.jsp" %>
Les trois options de modèle - <%@include>
, <jsp:include>
et <%@tag>
sont valides et les trois couvrent des cas d'utilisation différents.
Avec <@include>
, l’analyseur JSP insère le contenu du fichier inclus dans le JSP avant la compilation (semblable à 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 fait partie du fichier JSP compilé et ne génère aucun coût supplémentaire au moment de l'exécution.
<jsp:include>
(et <c:import>
de JSTL, qui est similaire et encore plus puissant) sont les mieux adaptés au contenu dynamique. Utilisez-les lorsque vous devez inclure du contenu provenant 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 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. Ces deux opérations entraînent un coût d’exécution supplémentaire pour l’envoi: il est minime, mais vous devez savoir 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. Par exemple, si vous avez une liste de widgets et que vous souhaitez parcourir les widgets et afficher les propriétés de chacun (dans un tableau ou dans un formulaire), vous devez créer une balise. Les balises peuvent prendre des arguments, en utilisant <%@tag attribute>
et ces arguments peuvent être obligatoires ou facultatifs - un peu comme les paramètres de méthode.
Les fichiers de balises constituent un mécanisme plus simple d’écriture de bibliothèques de balises, basé sur JSP, que vous deviez écrire (avant JSP 2.0) à l’aide de code Java. Il est beaucoup plus simple d'écrire des fichiers de balises JSP lorsqu'il y a beaucoup de rendu à effectuer dans la balise: vous n'avez pas besoin de mélanger Java et du code HTML comme vous le feriez si vous écriviez vos balises. en Java.