project:omega - o'reillynet-fr - jsp-servlets - les librairies jsp de balises personnalisées
project:omega - o'reillynet-fr - jsp-servlets - les librairies jsp de balises personnalisées
livres et documentations
outils
téléchargements d'outils unix
programmation cocoa
serveurs web
le terminal de mac os x
le langage java
carbon
nouvelles mac dev
objective-c
iapplications
le langage jsp et les servlets java
technologie sans-fil
le scripting
système unix
mozilla
développer sur mac os x
perl-ruby-python
intégration mac os x - windows
développement web
maîtrise de mac os x
guides techniques
développement
développement web
le langage ruby
portage d'applications vers mac os x
webobjects
meilleures astuces
sélections logiciel de la semaine
conchyo
firestarter - gravure et copie de cd
reveil
documentation
o'reillynet-fr
tutoriels
macosxhints-fr
produits
forums
liens
qui sommes-nous ?
contribuer et participer
soutenir l'association
recevoir la news letter
les statuts de l'association
note : 2.000
expert
(436 ko)
7144
1 - 2
dans la même série
sommaire
conseils pratiques pour servlet, partie 3
conseils pratiques pour servlet, partie 2
conseils pratiques pour servlet, partie 1
apprentissage de struts jakarta - partie 3
apprentissage de struts jakarta - partie 2
introduction à struts jakarta
tour d’horizon des jsp - partie 1
les librairies jsp de balises personnalisées
fonctions avancées des librairies jsp de balises personnalisées
les derniers articles parus
o'reillynet-fr-système unix
ssh en détails, partie 2
o'reillynet-fr-maîtrise de mac os x
qu'est ce que le firewire ? (et comment en tirer profit)
tutoriels-développement
vue d'ensemble de l'accessibilité
o'reillynet-fr-maîtrise de mac os x
mac os x pour le voyageur, partie 5
o'reillynet-fr-maîtrise de mac os x
mac os x pour le voyageur, partie 4
tous les articles parus
les dernières astuces osxfaq
semaine 106 - nouveautés de tiger
06/01/2006 - vendredi - bien propre avec tidy
05/01/2006 - jeudi - encore plus de commandes
04/01/2006 - mercredi - syntaxe colorée dans nano
03/01/2006 - mardi - pico devient nano
02/01/2006 - lundi - de zcat à gzcat
toutes les astuces parues
nos articles « coup de coeur »
portage d'applications vers mac os x-portage d'applications basées sur l'api win32 vers mac os x
portage d'applications vers mac os x-guide de portage unix
webobjects-qu'est-ce que webobjects ?
développement-les outils de développement de mac os x
développement-apprendre l'objective-c
livres recommandés
servlets et jsp
java in a nutshell - o'reilly
introduction à java - o'reilly
exemples en java in a nutshell, 2e édition - o'reilly
thinking in java
total java
mac os x à 200%
project:omega soutient mozilla !
project:omega soutient openoffice !
1 - 2
project:omega >>> o'reillynet-fr >> le langage jsp et les servlets java > les librairies jsp de balises personnalisées
concevoir des librairies jsp de balises personnalisées
par sue
spielman, 19/04/2001
traduit par thierry, 20/08/2002
dans cet article vous allez découvrir :
ce qu'est une librairie de balises personnalisées,
les raisons qui pourraient vous pousser à utiliser de telles librairies,
la composition d'une librairie de balises et,
comment construire et utiliser une librairie complète.
ce qu'est une librairie de balises personnalisées
si vous avez déjà eu l'opportunité de
bâtir une application web reposant sur une technologie java, il y a de
fortes chances que vous ayez utiliser des java server pages (jsp) pour
l'affichage du contenu. jsp est la technologie qui permet de séparer
la présentation de type front-end (ndt : gestion
de l'interface utilisateur) de celle de type middle ou back-end (ndt
: gestion des données). la librairie de balises personnalisées
est une fonctionnalité puissante de jsp v1.1 qui aide à effectuer
cette séparation. cette technologie est valable pour quiconque développe
des applications web de qualité professionnelle et elle très applicable
au marché actuel.
les librairies de balises personnalisées permettent
au programmeur java d'écrire du code qui permet l'accès aux données
et à d'autres services et, elles rendent ces fonctionnalités utilisables
par l'auteur jsp de manière simple et semblable au xml. une action dans
une application web -- par exemple, gagner l'accès aux données
-- peut être customisée (personnalisée) en utilisant une
balise personnelle dans une page jsp. l'auteur jsp n'a pas à comprendre
le détail sousjacent pour accomplir cette action. en résumé,
une librairie de balises est une collection d'actions personnelles, chacune
étant représentée par une balise.
les balises personnalisées ont beaucoup de fonctionnalités
qui les rendent attractives à utiliser à partir de n'importe quelle
jsp. elles peuvent :
être customisées par des attributs passés à partir
de la page appelante, que ce soit de manière statique ou déterminée
lors de l'exécution;
avoir accès à tous les objets disponibles de la page, y compris
les requêtes, les réponses, les entrées et les sorties;
modifier la réponse générée par la page appelante;
communiquer entre elles; vous pouvez créer et initialiser un composant
javabeans, créer une variable qui fait référence à
ce "bean" dans une balise, et utiliser le "bean" dans
une autre balise;
être emboîtées les unes dans les autres, permettant des
interactions complexes au sein d'une page jsp; et
contenir à la fois des comportements simples et complexes grace à
une syntaxe simple à utiliser et qui simplifie grandement la lisibilité
des pages jsp.
chacun de ces points est une raison suffisante qui justifie
l'usage de librairies de balises.
voyons ce qui constitue une librairie de balises et construisons
en une étape par étape.
la composition d'une librairie de balises
il y a deux types de composants dans une librairie de balises
: le fichier descriptif et les gestionnaires de balise. avec ces composants,
une page jsp est capable de se servir, en son sein, de balises contenues dans
la librairie.
le fichier tld
un fichier descriptif de librairie de balises (tag library
descriptor) est un document xml qui décrit la librairie. un tld contient
des informations relatives à la librairie elle-même et à
chaque balise contenu dans la libraire. les tld sont utilisés par un
container jsp pour valider les balises.
typiquement, il y a des informations d'en-tête suivies
par des éléments dont le but est de définir la librairie.
les éléments sont :
<taglib>
la librairie de balise elle-même.
<tlibversion>
la version de la librairie de balise.
<jspversion>
la version des spécifications jsp dont dépent la
librairie de balise.
<shortname>
un nom simple par défaut avec une valeur mnemonic. par
exemple, <shortname> peut être utilisé en tant que
préfixe préféré dans les directives taglib
et/ou pour créer des préfixes aux ids.
<uri>
une uri optionnelle qui identifie
de manière unique la librairie.
<info>
informations descriptives.
puis, chaque balise contenue dans la librairie est décrite.
il peut y avoir une ou plusieurs balises par librairie. il n'y a qu'un seul
élément de tld requis pour toutes les balises, et c'est celui
utilisé pour spécifier une classe de gestionnaire de balise :
<tagclass>classname</tagclass>
il y a de nombreux autres éléments utilisés
pour décrire les balises. une balise se servira de tel ou tel élément
en fonction de son implémentation dans le gestionnaire.
si une balise est associée à des attributs, alors
chaque attribut doit être décrit à l'intérieur de
l'élément <tag>. si un attribut
est requis par une balise, <required> est positionné
à "true" ou"yes". pour permettre l'utilisation de la résultante
d'une expression évaluée lors de l'exécution, le <rtexpvalue>
est positionné à "true" ou "yes". pour chaque attribut d'une balise,
une méthode getter/setter dans le style "bean" doit être
définie dans la classe du gestionnaire. il est aussi possible de définir
des variables, utilisables dans une balise, pouvant répondre à
des scripts. cela s'accomplit en se servant d'une classe tagextrainfo
et sera discuté dans la section relative au gestionnaire de balise. si
une tagextrainfo doit être utilisée,
la classe doit être définie en se servant de <teiclass>classname<teiclass>
au sein même de la définition de la balise.
un extrait de tld nommé oreillysample.tld
ressemble à ceci :
<?xml version="1.0" encoding="iso-8859-1" ?>
<!doctype taglib public "-//sun microsystems, inc.//dtd jsp tag library 1.1//en"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>oreillysamples</shortname>
<info>oreilly sample tag library</info>
<!-a simple tag -->
<tag>
<name>hello</name>
<tagclass>oreilly.examples.hello </tagclass>
<!--le contenu du corps peut avoir une valeur vide : pas de corps
jsp: corps évalué par le container, puis traité éventuellement par la balise
tagdependent: le corps n'est traité que par la balise; le jsp n'est pas évalué.
-->
<bodycontent>empty</bodycontent>
<info>
this is a simple hello tag.
</info>
<!-- optional attributes -->
<!- personalized name -->
<attribute>
<name>name</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
le gestionnaire de balises
la balise est définie dans la classe gestionnaire. tagsupport
est la classe de base utilisée pour les balises simples. elle peut être
localisée dans le package javax.servlet.tagext.
ce que votre balise implémente dépendra des méthodes qui
pourront potentiellement être appelées et de celles qui nécessitent
d'être implémentées. tagsupport
et tagbodysupport fournissent les implémentations
par défaut des méthodes listées ci-dessous.
si votre gestionnaire
de balise :
vous devez implémenter
les méthodes suivantes :
n'a pas d'attribut et
de corps
dostarttag, doendtag, release
a des attributs
dostarttag, doendtag, set/getattribute1...n
a un corps sans interaction
dostarttag, doendtag, release
a un corps avec interaction
dostarttag, doendtag, release, doinitbody, doafterbody
une fonctionnalité plus avancée consiste à
utiliser des variables programmables. typiquement, un attribut contenant l'identifiant
(id) de l'objet à utiliser est passé à la balise. l'opération
habituelle consiste en la récupération, par le gestionnaire de
balises, de l'objet valeur d'une variable programmable en utilisant pagecontext.getattribute(name),
suivie de quelques traitements effectués sur l'objet puis du positionnement
de la valeur de la variable programmable par l'utilisation de pagecontext.setattribute(name,
object). en plus de positionner la valeur de la variable à l'intérieur
du gestionnaire de balises, vous devez définir une classe dérivée
de tagextrainfo dont le but sera de fournir des informations
au container jsp relatives à la nature de la variable. cette classe est
alors listée dans l'attribut <teiclass>
de la balise.
le code java défini dans le fichier tld oreillysample.tld
ressemblerait à :
package oreilly.examples
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
/**
* ceci est l'exemple d'une simple balise dont le but est de montrer
* comment est ajouté le flux de sortie quand une balise est rencontrée
* dans une page jsp
*/
public class hello extends tagsupport {
private string name=null;
/**
* getter/setter pour l'attribut "name" tel que défini dans le fichier tld
* pour cette balise
*/
public void setname(string value){
name = value;
}
public string getname(){
return(name);
}
/**
* dostarttag est appelé par le container jsp quand la balise est rencontrée
*/
public int dostarttag() {
try {
jspwriter out = pagecontext.getout();
out.println("<table border=\"1\">");
if (name != null)
out.println("<tr><td> hello " + name + " </td></tr>");
else
out.println("<tr><td> hello world </td></tr>");
} catch (exception ex) {
throw new error("tout n'est pas génial dans ce monde.");
}
// doit retourner skip_body car nous ne supportons pas de de corps pour cette balise.
return skip_body;
}
/**
* doendtag est appelé par le container jsp quand la balise est fermée
*/
public int doendtag(){
try {
jspwriter out = pagecontext.getout();
out.println("</table>");
} catch (exception ex){
throw new error("tout n'est pas génial dans ce monde.");
}
}
}
page suivante : le jsp.
project:omega : la référence pour les développeurs mac os x et plus encore !
documentation
|
o'reillynet-fr
|
tutoriels
|
macosxhints-fr
|
produits
|
forums
|
liens
copyright © 2001-2004 projectomega.org, association à but non lucratif. tous droits réservés.
toutes les marques déposées et tous les logos apparaissant sur projectomega.org sont la propriété de leurs sociétés respectives.
pour tout problème ou assistance à propos de ce site, contactez : webmaster@projectomega.org
pour tout autre propos : contact@projectomega.org
hosting : netsample.net | macgeneration.com | projectomega.com - design : projectomega.com
project:omega - o'reillynet-fr - jsp-servlets - les librairies jsp de balises personnalisées Précédent 514 Précédent 513 Précédent 512 Précédent 511 Précédent 510 Précédent 509 Précédent 508 Précédent 507 Précédent 506 Précédent 505 Précédent 504 Précédent 503 Précédent 502 Précédent 501 Précédent 500 Précédent 499 Précédent 498 Précédent 497 Précédent 496 Précédent 495 Précédent 494 Précédent 493 Précédent 492 Précédent 491 Précédent 490 Précédent 489 Précédent 488 Précédent 487 Précédent 486 Précédent 485 Suivant 516 Suivant 517 Suivant 518 Suivant 519 Suivant 520 Suivant 521 Suivant 522 Suivant 523 Suivant 524 Suivant 525 Suivant 526 Suivant 527 Suivant 528 Suivant 529 Suivant 530 Suivant 531 Suivant 532 Suivant 533 Suivant 534 Suivant 535 Suivant 536 Suivant 537 Suivant 538 Suivant 539 Suivant 540 Suivant 541 Suivant 542 Suivant 543 Suivant 544 Suivant 545