161 votes

Ce qui ' directive include de la différence entre y compris les fichiers avec JSP, JSP action et à l’aide de fichiers de balises JSP ?

Il semble qu'il y a deux méthodes pour la création de modèles avec JSP. Y compris les fichiers avec l'un de ces états

<%@ include file="foo.html" %>
<jsp:include page="foo.html" />

ou à l'aide de balises JSP fichiers

// 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 appeler avec

<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>

<t:mytag>
    <h1>Hello World</h1>
</t:mytag>

Alors, quelle méthode dois-je utiliser? Est maintenant considéré comme obsolète ou les deux sont-ils valides et à couvrir les différents cas d'utilisation?

Modifier

N'est-ce pas l'utilisation de ce fichier de balises au même que d'utiliser un include?

// 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 de l'appeler 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>

Qui me semble être le même que d'utiliser un include et passage de paramètres. Ainsi sont les Fichiers Tag le même que comprend?

304voto

informatik01 Points 5059

Il existe plusieurs mécanismes pour la réutilisation des JSP de contenu dans une page JSP.

La suite de 4 mécanismes d'inclure du contenu dans les JSP peuvent être classés comme la réutilisation directe:
(pour les 3 premiers mécanisme citant "la Tête la Première, les Servlets et les JSP")

1) La directive include:

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

Statique: ajoute le contenu à partir de la valeur de l'attribut de fichier de la page en cours de traduction en temps. La directive a été initialement prévu pour la statique de modèles de mise en page, comme les en-têtes HTML.

2) L' <jsp:include> action standard

<jsp:include page="header.jsp" />

Dynamique: ajoute le contenu à partir de la valeur de l'attribut de la page à la page en cours au moment de la demande. A été prévu plus dynamique des contenus provenant de pages Jsp.

3) L' <c:import> JSTL tag:

<c:import url="http://www.example.com/foo/bar.html" />

Dynamique: ajoute le contenu à partir de la valeur de l'attribut URL de la page en cours, au moment de la demande. Il fonctionne un peu comme <jsp:include>, mais il est plus puissant et flexible: à la différence de la deux autres comprend, l' <c:import> url peut être de l'extérieur de la Conteneur web!

4) les Préludes et les codas

Une autre façon de faire un statiqueinclure. Les préludes et les codas peut être appliquée que pour les débuts et fins de pages. Voir l'exemple ici: la Définition implicite comprend


Fichier de balises est une méthode indirecte de la réutilisation de contenu, la manière de l'encapsulation de contenu réutilisable. Une Balise de Fichier est un fichier source qui contient un fragment de code JSP qui est réutilisable comme une balise personnalisée.

Le BUT de comprend et Tag des Fichiers est différent.

Fichier de balise (un concept introduit avec JSP 2.0) est l'une des options pour créer des balises personnalisées. C'est plus rapide et simple de la façon de construire des balises personnalisées. Les balises personnalisées, aussi connu comme les extensions de balise, les JSP sont des éléments qui permettent à une logique personnalisée et de sortie fournis par d'autres composants Java pour être insérées dans des pages JSP. La logique fourni par l'intermédiaire d'un tag personnalisé est mis en œuvre par un objet Java, connu comme un tag handler.

Quelques exemples de tâches qui peuvent être effectuées par des balises personnalisées comprennent l'exploitation sur les objets implicites, traitement des formulaires, accès aux bases de données et d'autres services de l'entreprise telles que la messagerie électronique et des répertoires, et la mise en œuvre de contrôle de flux.


Concernant votre Modifier

Peut-être que dans votre exemple (dans votre Édition), il n'y a pas de différence entre l'utilisation directe de l'inclure et un Fichier de balises. Mais les balises personnalisées ont un riche ensemble de fonctionnalités. Ils peuvent

  • Être personnalisé au moyen d'attributs passés à partir de la page appelante.

  • Passer des variables de retour à l'appel de la page.

  • Accéder à tous les objets disponibles à des pages JSP.

  • Communiquer les uns avec les autres. Vous pouvez créer et initialiser un composant JavaBeans, créer un public EL variable qui renvoie à ce bean dans une balise, puis utilisez les haricots dans une autre balise.

  • Être imbriquées à l'intérieur l'un de l'autre et de communiquer par le biais de variables privées.

Lire aussi ce à partir de "Pro JSP 2": la Compréhension JSP Balises Personnalisées.


Lecture utile.


Conclusion

Utiliser les instruments appropriés pour la tâche concrète.

Utilisation de Fichiers de balises comme un moyen facile et rapide de créer des balises personnalisées.

Comme pour l', y compris le contenu en JSP (devis à partir d' ici):

  • L'utilisation de la directive include si le fichier ne change rarement. C'est la manière la plus rapide du mécanisme. Si votre conteneur n'a pas de détecter automatiquement changements, vous pouvez forcer les modifications prennent effet par la suppression de la principale page fichier de classe.

  • Utiliser le comprendre l'action que pour des contenus qui change souvent, et si la page à inclure ne peut être prise jusqu'à ce que la page principale est demandé.

23voto

Darth Points 163

Une Double Question

<@include> - La directive balise indique au compilateur JSP pour fusionner le contenu du fichier inclus dans le JSP avant la création de la servlet générée code. C'est l'équivalent de couper et coller du texte à partir de votre page de droite dans votre JSP.

  • Une seule servlet est exécutée au moment de l'exécution.
  • Scriptlet les variables déclarées dans la page parent peut être consulté dans la page (n'oubliez pas, ils sont la même page).
  • Inclus page ne doit pas pouvoir être compilé en mode autonome JSP. Il peut être un fragment de code ou texte brut. Inclus la page ne sera jamais compilé de façon autonome. Inclus la page peut aussi avoir n'importe quelle extension, si .jspf est devenu un conventionnellement utilisé pour l'extension.
  • Un inconvénient sur les anciens conteneurs est que les modifications de l'inclure des pages ne prendra pas effet jusqu'à ce que le parent page est mise à jour. Les dernières versions de Tomcat va vérifier l'inclure des pages pour les mises à jour et de la force d'une recompilation du parent si ils sont mis à jour.
  • Un autre inconvénient est que depuis que le code est incorporé directement dans la méthode de service de la servlet générée, la méthode peut devenir très volumineux. Si elle est supérieure à 64 KO, votre JSP compilation échouera probablement.

<jsp:include> - Les JSP d'Action de la balise de l'autre main, charge le conteneur pour interrompre l'exécution de cette page, aller courir inclus dans la page, et de fusionner la sortie de la page dans la sortie de cette page.

  • Chaque inclus page est exécutée en tant que distincte de la servlet au moment de l'exécution.
  • Les Pages peuvent conditionnellement être inclus au moment de l'exécution. C'est souvent utile pour la création de modèles de cadres construire des pages comprend. La page parent peut déterminer la page, le cas échéant, à inclure selon certains moment de l'exécution de la condition.
  • Les valeurs de scriptlet les variables doivent être explicitement transmis à la page.
  • Inclus la page doit être en mesure d'exécuter sur son propre.
  • Vous êtes de moins en moins de chances de compilation les erreurs dues au maximum méthode de taille de dépassement dans la classe de servlet générée.

Selon vos besoins, vous pouvez soit utiliser <@include>ou <jsp:include>

9voto

Saurabh Ande Points 109

Principal avantage du sur est :

``permet de passer des paramètres

qui n’est pas possible en``

6voto

Hari Points 468

Les trois options de modèle - <%@include>, <jsp:include> et <%@tag> sont valables, et tous les trois à couvrir les différents cas d'utilisation.

Avec <@include>, les JSP de l'analyseur en lignes le contenu du fichier inclus dans le JSP avant la compilation (similaire à un C #include). Vous pouvez utiliser cette option avec simple, le contenu statique: par exemple, si vous souhaitez inclure l'en-tête, pied de page, ou des éléments de navigation sur chaque page de votre site web-app. Le contenu inclus devient une partie de la compilation des JSP et il n'y a pas de coût supplémentaire au moment de l'exécution.

<jsp:include> (et JSTL de l' <c:import>, ce qui est similaire et même plus puissant) sont les mieux adaptés pour le contenu dynamique. L'utilisation de ces lorsque vous avez besoin d'inclure le contenu d'une autre URL, local ou distant; lorsque la ressource que vous êtes notamment est lui-même dynamique; ou lorsque le contenu inclus utilise des variables ou des haricots définitions qui sont en conflit avec la page. <c:import> vous permet également de stocker le texte inclus dans une variable, vous pouvez continuer à les manipuler ou de les réutiliser. Ces deux encourir un runtime coût pour l'expédition: c'est minime, mais vous devez être conscient du fait que la dynamique est pas "libre".

Utilisation de fichiers de balises lorsque vous souhaitez créer réutilisables composants de l'interface utilisateur. Si vous avez une Liste de Widgets, de dire, et vous souhaitez effectuer une itération sur les Widgets et les propriétés d'affichage de chaque (dans un tableau ou dans un formulaire), vous devez créer un tag. Les balises peuvent prendre des arguments, à l'aide de <%@tag attribute> et ces arguments peuvent être obligatoires ou facultatives - un peu comme les paramètres de la méthode.

Les fichiers de balises sont un plus simple, JSP mécanisme de base de l'écriture de bibliothèques de balises, qui (pré JSP 2.0) vous avez eu à l'écrire à l'aide de code Java. C'est beaucoup plus propre d'écrire des balises JSP fichiers lorsqu'il y a beaucoup de rendu à faire de la balise: vous n'avez pas besoin de mélanger la Java et le code HTML que vous avez à faire si vous avez écrit vos balises en Java.

1voto

Java Revisité

  1. Les ressources incluses par la directive include est chargé au cours de jsp de temps de traduction, tandis que les ressources incluses par comprendre l'action est chargé au moment de la demande.
  2. Tout changement sur les ressources ne seront pas visibles dans le cas de la directive include jusqu'fichier jsp compile de nouveau. Alors que dans le cas de comprendre l'action, tout changement dans les ressources seront visibles dans la prochaine demande.
  3. Inclure la directive est statique d'importation, tandis que comprendre l'action est dynamique à l'importation
  4. Inclure la directive utilise l'attribut de fichier pour spécifier les ressources à inclure tout comprendre des mesures d'utiliser attribut de la page pour le même but.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X