Les deux balises incluent le contenu d’une page dans un autre.
Alors, quel est la différence exacte entre ces deux balises ?
Les deux balises incluent le contenu d’une page dans un autre.
Alors, quel est la différence exacte entre ces deux balises ?
Dans une réutilisables morceau de code que j'utilise <jsp:include page="reuse.html" />
et dans la seconde, je utiliser <%@include file="reuse.html"%>
.
Laissez-le code de la réutilisables fichier :
<html>
<head>
<title>reusable</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<img src="candle.gif" height="100" width="50"/> <br />
<p><b>As the candle burns,so do I</b></p>
</body>
Après l'exécution de deux les fichiers JSP que vous voyez la même sortie et pense que si il n'y avait aucune différence entre la directive et la balise. Mais si vous regardez le générés servlet
des deux fichiers JSP, vous verrez la différence.Voici ce que vous verrez lorsque vous utilisez l' directive
:
out.write("<html>\r\n");
out.write(" <head>\r\n");
out.write(" <title>reusable</title>\r\n");
out.write(" <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
out.write(" </head>\r\n");
out.write(" <body>\r\n");
out.write(" <img src=\"candle.gif\" height=\"100\" width=\"50\"/> <br />\r\n");
out.write(" <p><b>As the candle burns,so do I</b></p>\r\n");
out.write(" </body>\r\n");
out.write("</html>\r\n");
et c'est ce que vous allez voir pour l'étiquette utilisée dans le deuxième fichier JSP :
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "reusable.html", out, false);
Alors maintenant, vous savez que la directive include insère la source d' reuse.html
à la durée de traduction, mais l'action de la balise insère la réponse de reuse.html au moment de l'exécution.
Si vous pensez à ce sujet il ya un supplément de gain de performance à chaque action de la balise (@include file
), mais cela signifie que vous pouvez garantir que vous aurez toujours le contenu le plus récent!
Il y a une énorme différence. Comme il a été mentionné, <%@ include
est statique inclure, <jsp:include
est une dynamique inclure. Pensez-y comme une différence entre un macro et un appel de fonction (si vous êtes familier avec ces termes). Une autre façon de le mettre, statique est exactement la même chose que de copier-coller le contenu exact du fichier inclus (le "code") à l'emplacement de l' <%@ include
déclaration (ce qui est exactement ce que le compilateur JSP va faire.
Une dynamique inclure fera la demande (à l'aide de la demande répartiteur) qui va exécuter la page indiquée, puis inclure la sortie de la page, à la sortie de l'appel de la page, à la place de l' <jsp:include
déclaration.
La grande différence ici est que, avec une dynamique inclure, inclus la page s'exécute dans son propre pageContext. Et puisque c'est une demande, vous pouvez envoyer des paramètres à la page de la même façon, vous pouvez envoyer des paramètres, ainsi que toute autre demande. Statique inclure, sur l'autre main, c'est juste un morceau de code qui s'exécute dans le contexte de l'appel de la page. Si vous statiquement inclure le même fichier plusieurs fois, le code dans ce fichier existe dans plusieurs emplacements sur la page appelant donc quelque chose comme
<%
int i = 0;
%>
génère une erreur de compilation (depuis la même variable ne peut pas être déclaré plus d'une fois).
Le <%@include file="abc.jsp"%> directive, agit comme C "#include", en tirant dans le texte inclus dans le fichier et de le compiler comme si c' étaient également de la partie, y compris de fichier. Le fichier inclus peut être n'importe quel type de (HTML ou texte).
L' <jsp:include page="abc.jsp"> balise compile le fichier distinct Fichier JSP, et incorpore un appel à elle dans la compilation des JSP.
Certains JSP les moteurs prennent en charge les tags non-standard (NCSA-ou .shtml-style) et <%@ vinclude="data.inc" %> (JRun-style), mais ce ne sont pas définis dans le JSP spec et ne peut donc pas être invoqué.
Voir également cette question dans la page JSP FAQ.
1) Quand utiliser la directive include ?
Pour éviter la duplication de la même logique de sortie à travers de multiples jsp de l'application web ,inclure mécanisme est utilisé, c'est à dire.,afin de promouvoir la réutilisation de la présentation de la logique d'inclure la directive est utilisée
<%@ include file="abc.jsp" %>
lorsque l'instruction ci-dessus est reçue par le moteur de jsp,il récupère le code source de l'abc.jsp et de la copie de la même inline dans la jsp en cours. Après la copie de la traduction est effectuée pour la page en cours
Disons simplement qu'il est statique instruction aux jsp moteur de ie., tout le code source de "abc.jsp" est copié dans la page en cours
2) Lors de l'utilisation de comprendre l'action ?
tag ne comprend pas le code source de la page dans la page en cours, au lieu de la sortie générée au moment de l'exécution par le inclus page est incluse dans la page en cours de réponse
tag fonctionnalité est similaire à celle d'inclure un mécanisme de demande répartiteur de servlet de programmation
tag est au moment de l'exécution de l'instruction de jsp moteur de ie., plutôt de copier tout le code dans la page en cours d'un appel de méthode "abc.jsp" de la page en cours
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.