Je programme avec JSP et ASP depuis longtemps. Parmi ces deux solutions de programmation côté serveur, j'ai de plus en plus l'impression que JSP est bien plus puissant qu'ASP. Pourquoi devrais-je choisir JSP comme outil préféré de développement d’applications Web côté serveur ? Bien sûr, JSP possède de nombreuses caractéristiques et fonctions fascinantes, mais la bibliothèque de balises de JSP a été l'une des raisons les plus importantes pour moi de prendre cette décision.
Pourquoi dis-tu cela ? Les raisons sont doubles : la maintenance et la rapidité de développement. Les langages de script côté serveur sont en fait le creuset du développement Internet. Sur une page de serveur, vous pouvez facilement mélanger diverses méthodes et objets de script. Ce genre de page est tout simplement le béton pour construire le Web. C'est ce mélange de « trucs » qui donne aux scripts côté serveur de puissantes capacités de traitement de l'information. Il permet aux programmeurs côté serveur de développer des pages Web dynamiques et flexibles. Mais, d'un autre côté, le mélange libre de scripts a aussi ses inconvénients, à savoir qu'il est très difficile à maintenir, d'autant plus que la taille du projet continue de croître. Pour aggraver les choses, à mesure que la complexité du code augmente, la vitesse de développement ralentira, ce qui n'est pas propice au développement d'applications Web de moyenne et grande taille côté serveur. sont lancés très tard et le coût est élevé et incontrôlable. De plus, une fois développé, le site doit encore trouver des programmeurs qualifiés pour maintenir ces codes plutôt complexes. En conséquence, ces programmeurs deviennent des concepteurs Web généralistes, et l'application côté serveur joue un rôle clé à la fois dans la conception graphique finale et dans la mise en œuvre. . C'est affaibli.
Afin de surmonter ce problème, ASP a introduit la technologie objet COM, tandis que JSP a fourni J2EE comme contre-mesure. Ces solutions reposent sur des mécanismes de bases de codes centralisés et réutilisables. Cependant, ils sont trop difficiles à utiliser et prennent beaucoup de temps à apprendre. De plus, ces solutions ne réduisent pas la tentation de créer du code compliqué et, par conséquent, nous devons organiser de grandes équipes de développement bien structurées pour utiliser ces technologies. Pour les projets de taille moyenne, ces méthodes sont généralement moins utilisées, mais en fait, les projets d'applications Web de taille moyenne sont les plus courants. En conséquence, de nombreux projets sont contraints d’utiliser un environnement de développement et de maintenance qui ne répond pas à leurs besoins.
Heureusement, JSP offre une meilleure façon de résoudre ce problème. Les bibliothèques de balises offrent un moyen simple de créer des blocs de code réutilisables. Une fois qu’une bibliothèque de balises est conçue, elle peut être réutilisée dans de nombreux projets. Ce qui est encore plus pratique, c'est que, contrairement à COM et J2EE, tant que vous savez écrire du JSP, vous n'avez pas besoin d'acquérir d'autres compétences pour créer une bibliothèque de balises ! Enfin, les bibliothèques de balises améliorent également la maintenabilité des applications Web. Cette amélioration de la maintenabilité se reflète dans la mise en œuvre facile d'interfaces personnalisables basées sur XML sur les pages JSP. En conséquence, les concepteurs Web peuvent créer des applications Web JSP sans savoir ce qu'est JSP. De cette manière, le développement Web devient une tâche de développement d’équipe très efficace. Les programmeurs JSP peuvent créer des balises personnalisées et des modules de code back-end, tandis que les concepteurs Web peuvent utiliser des balises personnalisées et se concentrer entièrement sur la conception Web elle-même. La bibliothèque de balises résout le problème de la confusion du code et le fait proprement et magnifiquement (en fait, XML est l'essence même de la résolution de ces problèmes, mais la bibliothèque de balises joue toujours un rôle clé).
Qu'est-ce qu'une bibliothèque de balises ?
La bibliothèque de balises JSP (également appelée bibliothèque de balises personnalisées) peut être considérée comme une méthode de génération de scripts XML via JavaBeans. Conceptuellement, les balises sont des structures de code simples et réutilisables. Par exemple, dans notre dernière version de JSPKit (dans JSP Insider), les documents XML sont facilement accessibles à l'aide de balises XML. Veuillez consulter la liste A ci-dessous.
Listing A : Exemples de balises qui effectuent des transformations XML/XSL et les pages HTML qu'elles contiennent
<%@ taglib uri=" http://www.jspinsider.com/jspkit/JAXP " prefix="JAXP"%>
<JAXP:TransformerTag>
<JAXP:XMLFile>c:/xml/example.xml</JAXP:XMLFile>
<JAXP:XSLFile>c:/xml/example.xsl</JAXP:XSLFile>
</JAXP:TransformerTag>
L'exemple ci-dessus utilise des balises simples pour accéder au code le plus puissant en arrière-plan. La partie balise de l'instruction charge d'abord un fichier XML, puis applique un fichier XSL pour transformer le contenu du fichier XML en un certain. format de représentation et envoyé au client, tout cela se fait simplement à l'aide d'une balise très simple. Les balises personnalisées facilitent la création de modules open source réutilisables dans les projets JSP, et tout ce dont vous avez besoin est une bibliothèque de balises et sa documentation.
Fonctionnalités importantes de la bibliothèque de balises
1. Facile à installer sur plusieurs projets Les balises peuvent être facilement migrées d'un projet JSP vers d'autres projets. Une fois que vous avez créé une bibliothèque de balises, regroupez simplement le tout dans un fichier JAR que vous pouvez réutiliser dans n'importe quel projet JSP. Les bibliothèques de balises deviennent de plus en plus populaires car les balises peuvent être réutilisées et facilement utilisées dans vos propres projets. Actuellement, la meilleure ressource de balises se trouve sur JSPTags.com.
2. La bibliothèque de balises JSP étendue peut avoir toutes les fonctionnalités et fonctions de la spécification JSP (JSP 1.2). Vous pouvez étendre et augmenter les fonctions de JSP sans limite sans attendre l'apparition de la prochaine version de JSP. Par exemple, vous n'êtes pas satisfait de l'appel d'inclusion JSP. Vous pouvez créer vos propres balises d'inclusion qui appliquent vos propres spécifications.
3. Facile à maintenir
La bibliothèque de balises rend les applications Web JSP très faciles à maintenir pour les raisons suivantes :
(1) L’application des étiquettes est simple et facile à utiliser et à comprendre pour tous.
(2) Tous les codes logiques du programme sont concentrés dans le processeur de balises et les JavaBeans. Cela signifie que lorsque vous mettez à niveau le code, vous n'avez pas besoin de modifier chaque page qui utilise le code. Il vous suffit de modifier les fichiers de code centralisés.
(3) Si vous devez ajouter de nouvelles fonctions, vous n'avez pas besoin de modifier les pages existantes. Vous pouvez ajouter des attributs supplémentaires aux balises pour introduire de nouveaux comportements, tandis que les autres anciens attributs restent inchangés, de sorte que toutes les anciennes pages puissent toujours être utilisées. . Fonctionne normalement. Par exemple, vous avez une étiquette qui rend tout le texte en bleu :
<BlueText>Mon texte</BlueText>
Mais plus tard dans le projet, vous souhaitez que le bleu soit plus foncé. Vous pouvez conserver l'étiquette d'origine et y ajouter simplement un nouvel attribut : shade, comme indiqué ci-dessous :
<BlueText shade="teal">Mon texte</BlueText>
Toutes les anciennes balises peuvent toujours produire du texte bleu, mais vous pouvez désormais utiliser la même balise pour produire du texte bleu foncé.
(4) Les étiquettes améliorent la réutilisabilité du code. Un code qui a été testé et utilisé plusieurs fois comportera certainement moins de bugs. Par conséquent, les pages JSP utilisant des balises personnalisées présentent également moins de défauts et sont naturellement beaucoup plus pratiques à maintenir.
4. La bibliothèque d'étiquettes temporelles de développement rapide offre un moyen simple de réutiliser le code. L'un des moyens standard de réutiliser le code dans les langages côté serveur consiste à utiliser des modèles. Par rapport à l’utilisation de bibliothèques de modèles, les bibliothèques de balises constituent une meilleure solution. Avec une bibliothèque de modèles, vous devez modifier les modèles ou créer une interface stricte pour chaque projet, tandis que la bibliothèque de balises n'a pas ces restrictions et présente tous les avantages de l'orientation objet, peut être flexible et plus extensible et, en réutilisant code , vous pouvez passer moins de temps à développer et plus de temps à concevoir votre application Web. L'interface de la bibliothèque de balises est également très simple, ce qui la rend très facile à insérer, à utiliser et à déboguer.
Structure des balises
Bien que la bibliothèque de balises soit très simple à utiliser, le mécanisme d'implémentation interne permettant d'établir une bibliothèque de balises reste assez compliqué, du moins plus compliqué que l'établissement d'un simple JavaBean. La complexité vient du fait que la bibliothèque de balises est composée de plusieurs parties. Cependant, il vous suffit de maîtriser les connaissances de Java et JSP.
Une balise simple se compose des éléments suivants :
1. JavaBean : pour bénéficier des avantages de Java et de sa nature inhérente orientée objet, le code réutilisable doit être placé dans un conteneur de code distinct, qui est un JavaBean. Ces JavaBeans ne constituent pas une partie essentielle de la bibliothèque de balises, mais ce sont les modules de code de base utilisés par la bibliothèque de balises pour effectuer les tâches assignées.
2. Processeur de balises : Le processeur de balises est le véritable cœur de la bibliothèque de balises. Un gestionnaire de balises référence toutes les ressources externes dont il a besoin (JavaBeans) et est responsable de l'accès aux informations de la page JSP (objets PageContext). La page JSP transmet les attributs de balise définis sur la page et le contenu du corps de la balise au processeur de balises lorsque le processeur de balises termine son traitement, il renvoie les résultats de sortie traités à la page JSP pour un traitement ultérieur.
3. Descripteur de bibliothèque de balises (fichier TLD) : il s'agit d'un simple fichier XML qui enregistre les attributs, les informations et l'emplacement du processeur de balises. Le conteneur JSP utilise ce fichier pour savoir où et comment appeler une bibliothèque de balises.
4. Le fichier web.xml du site : Il s'agit du fichier d'initialisation du site. Dans ce fichier, il faut définir les balises personnalisées utilisées dans le site, ainsi que le fichier tld utilisé pour décrire chaque balise personnalisée.
5. Fichiers de publication (fichiers WAR ou JAR) : si vous souhaitez réutiliser des balises personnalisées, vous avez besoin d'un moyen de les déplacer d'un projet à un autre. L'empaquetage de la bibliothèque de balises dans un fichier JAR est un moyen simple et efficace.
6. Déclaration de la bibliothèque de balises sur la page JSP : Si vous souhaitez utiliser une balise personnalisée dans la page JSP, vous devez utiliser l'identifiant de la bibliothèque de balises pour la déclarer sur la page.
Il semble qu'il y ait beaucoup de travail à faire, et bien sûr, ce sera un peu délicat lorsque vous commencerez à l'utiliser, mais ce n'est pas très difficile. Il ne s’agit pas de coder, mais d’organiser correctement les pièces. Cette structure hiérarchique est importante car elle rend l'utilisation des balises flexible et plus facile à transférer. Plus important encore, ces niveaux permettent d'automatiser l'ensemble du processus de création d'une bibliothèque de balises via l'IDE JSP (environnement de développement intégré JSP). L'IDE JSP peut effectuer automatiquement la plupart du travail de création de balises personnalisées, et vous n'avez qu'à être responsable de la configuration vous-même du code et des processeurs de balises.
(Remarque : un processeur de balises ne définit qu'une seule balise personnalisée ; une bibliothèque de balises est une collection de plusieurs processeurs de balises qui gèrent la même tâche)
Créez votre première balise
Ce qui suit vous apprendra étape par étape comment créer une balise personnalisée, un exemple spécifique étend JSP afin qu'il dispose de sa propre fonction d'encodage HTML. Cette fonctionnalité remplace tous les caractères < et > par du code HTML. Il peut être facilement étendu pour effectuer d’autres traitements d’encodage. Pour simplifier, cet exemple explique uniquement les éléments de base de la création d'une balise personnalisée.
Toute partie réutilisable du code
qui crée un JavaBean
doit être placée dans un JavaBean.C'est très important. De cette façon, vous pouvez réutiliser le code dans d'autres projets. Étant donné que tout code placé dans un gestionnaire de balises n'est pas réutilisable en dehors de la balise, il est important d'isoler les portions de code réutilisables. Dans cet exemple, la logique codée pour HTML est commune et donc placée dans un JavaBean, voir Listing B
Listing B : JavaBeans codés en HTML
/* HTML_Format.java */
public class HTML_Format extends Object implémente java.io.Serialised {
/** Créer un nouveau HTML_Format */
public HTML_Format() {}
/** Remplacez tous les caractères < et > d'une chaîne par l'encodage HTML de la réponse */
chaîne publique HTML_Encode (chaîne as_data)
{
int li_len = as_data.length();
/*La longueur du tampon de chaîne est plus longue que la chaîne d'origine*/
StringBuffer lsb_encode = new StringBuffer(li_len + (li_len/10));
/* Boucle pour remplacer tous les caractères < et >*/
pour(int li_count = 0; li_count < li_len; li_count++)
{ String ls_next = String.valueOf(as_data.charAt(li_count));
if (ls_next.equals("<")) ls_next = "<";
if (ls_next.equals(">")) ls_next = ">";
lsb_encode.append( ls_next );
}
return( lsb_encode.toString() );
}
}
Le code pour créer un processeur de balises est présenté dans le listing C :
Listing C : processeur de balises d'encodage HTML
importer java.io.IOException ;
importer javax.servlet.jsp.* ;
importer javax.servlet.jsp.tagext.* ;
la classe publique HTML_FormatTag étend BodyTagSupport
{
/* 1) Cette fonction sera appelée à la fin de la balise*/
public int doEndTag() lance JspTagException
{
essayer
{ /* 2) Récupère le texte dans l'étiquette */
BodyContent l_tagbody = getBodyContent();
String ls_output = ""
/* 3) Si le corps de la balise contient du texte, traitez-le */
si(l_tagbody != null)
{ HTML_Format l_format = new HTML_Format();
/* 3a) Convertir le contenu du corps de la balise en chaîne */
Chaîne ls_html_text = l_tagbody.getString();
ls_output = l_format.HTML_Encode(ls_html_text);
}
/* 4) Écrivez les résultats dans le flux de données */
pageContext.getOut().write(ls_output.trim());
}
attraper (IOException e)
{ throw new JspTagException("Tag Error:" + e.toString());
}
/* Laisser JSP continuer à traiter le contenu des pages suivantes*/
renvoyer EVAL_PAGE ;
}
}
Ce traitement est très simple, il comprend :
1. Lire le texte entre les balises d'ouverture et de fermeture
2. Appeler la fonction d'encodage HTML
3. Renvoyez les résultats à la page JSP.
Créer un descripteur de balise
Nous devons décrire la balise personnalisée afin que le système sache quoi en faire. Le suffixe de ce fichier de description est .tld. Le fichier TLD porte généralement le nom du processeur de balises et est stocké dans le répertoire "/WEB-INF/". Voir liste D.
Listing D : descripteur de balise d'encodage HTML <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//Bibliothèque de balises DTD JSP 1.1//EN"
" http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd ">
<TAGLIB>
<VERSIONTLIB>1.0</VERSIONTLIB>
<VERSIONJSP>1.1</VERSIONJSP>
<SHORTNAME>HTML_FormatTag</SHORTNAME>
<URI></URI>
<INFO>Balise d'encodage HTML </INFO>
<TAG>
<NOM>HTMLEncode</NOM>
<TAGCLASS>HTML_FormatTag</TAGCLASS>
<INFO>Encoder HTML</INFO>
</TAG>
</TAGLIB>
Mettez à jour le fichier Web XML
pour indiquer maintenant au conteneur JSP comment utiliser la bibliothèque de balises. Pour ce faire, vous devez modifier le fichier web.xml. Plus précisément, vous devez ajouter un projet taglib pour enregistrer la bibliothèque de balises et attribuer un URI à la balise. L'URI est le seul index du site Web qui s'applique à cette balise particulière. Étant donné que la balise pourra être utilisée sur différents sites Web à l'avenir, il est préférable d'utiliser l'URL complète et/ou le nom du package pour garantir son unicité. Cet exemple est simplifié ; voir le listing E pour un exemple de code.
Listing E : Modifier le fichier web.xml <?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//Application Web DTD 2.2//EN"
" http://java.sun.com/j2ee/dtds/web-app_2.2.dtd ">
<WEB-APP>
<TAGLIB>
<TAGLIB-URI>
HTMLEncode
</TAGLIB-URI>
<TAGLIB-LOCATION>
/WEB-INF/HTML_FormatTag.tld
</TAGLIB-LOCATION>
</TAGLIB>
</WEB-APP>
Utiliser de nouvelles balises
Une fois les balises personnalisées définies, vous pouvez les utiliser sur vos pages JSP. Pour ce faire, utilisez simplement la commande de directive taglib pour déclarer les balises que vous souhaitez utiliser sur la page. Les balises sont indexées par leur URI unique, auquel est ensuite attribué un préfixe d'espace de noms. Ce préfixe n'a pas de signification particulière, tant qu'il n'entre pas en conflit avec d'autres espaces de noms, il peut être arbitraire. Veuillez consulter les listes F et G ci-dessous.
Listing F : Utilisation de la balise d'encodage HTML<%@ taglib uri="HTMLEncode" prefix="Examples" %>
sur une page JSP
<PRÉ>
<?XML:NAMESPACE PREFIX = Exemples /><Exemples:HTMLEncode>
<Bonjour, échantillon simple>
</Exemples :HTMLEncode>
</PRE>
Listing G : Sortie de l'exemple de code<Bonjour, échantillon simple>
qui s'affiche comme suit :
<Bonjour, Exemple simple>
Avec cette balise, j'ai encodé tout le code de la page. Toutes les balises personnalisées sont traitées sur le serveur. Cela signifie que vous ne verrez pas de balises personnalisées sur la page de sortie.
Comme vous pouvez le constater, créer des balises n’est pas difficile. La partie la plus difficile est d’apprendre tous les tenants et aboutissants des processeurs de balises. Il s’agit d’une fonctionnalité puissante, et nous n’avons fait qu’effleurer la surface. En raison des nombreuses étapes impliquées dans ce processus, les nouveaux programmeurs JSP peuvent trouver cela déroutant lors de la création de balises.
Conclusion
La bibliothèque de balises est l'une des fonctionnalités les plus importantes de JSP et elle est toujours en développement constant. Il s'agit en effet d'une nouveauté, elle n'a donc pas encore été largement adoptée, mais la bibliothèque de balises personnalisées a levé son mystère et de plus en plus de développeurs commencent à y prêter attention et à l'utiliser. Fin 2001, on peut s'attendre à ce que les bibliothèques de balises deviennent une fonctionnalité très courante dans de nombreux projets JSP.
Les avantages des bibliothèques de balises ne sont que brièvement abordés dans cet article. Les bibliothèques de balises possèdent en fait de nombreuses autres fonctionnalités puissantes. Les bibliothèques de balises poussent le développement JSP dans un nouveau monde sans précédent. Il s'agit en effet d'une nouvelle technologie passionnante pour les développeurs JSP, car ils disposent d'un outil capable de convertir les JSP en diverses applications et de créer tout type d'application Web. La bibliothèque de balises transforme JSP en la capacité de développement la plus riche et la plus dynamique et en un environnement de programmation Web puissant. Ses capacités ne sont limitées que par notre imagination et notre créativité.