Introduction
Jusqu'à
présent lorsqu'on présente la structure d'une application
web ecrite avec le Framework Struts, la structure du programme est
beaucoup plus détaillée que la manière d'organiser
et d'agencer l'apparence et le contenu des pages JSP pour ce type
d'application. Il existe cependant trois méthodes principales
pour organiser notre application web.
La première méthode consiste à
inclure le code
HTML dans les pages JSP programmées. Cette approche est la plus
courrante pour les
developpeurs web, mais est aussi très contraignante dans le
cadre de moyenne ou grosse application. Dans le même esprit, la
séparation inexistante du code de la page et de son apparence
rend le travail en équipe impossible.
La
seconde approche est basé sur l'instruction JSP
"include".
Cette instruction permet en effet d'inclure des pages jsp dans une
autre, permettant de réutiliser toute la partie statique de
l'application et ainsi permet de diminuer la redondance du code. En
utilisant la
méthode JSP
"include",
les pages du serveur sont divisée en fragment qui ont chacunes
leurs taches à faire. Un template de fond, qui appelle chaque
partie,
agence les fragments produisant la page montrée à
l'utilisateur. Le template agit donc comme un "switch" qui redirige
vers les bons fragments les requètes. Tout se déroule au
yeux des différents fichiers comme s'ils étaient
appelés directement.
Enfin la dernière méthode est celle
associée aux
templates qui va être introduit ensuite et qui represente la
meilleure solution pour reduire le code redondant dans une application
web et dans le même temps de séparé l'ensemble du
code de
l'application de son apparence.
Le concept de "template"
Un template (ou en francais modèle) est une page JSP qui utilise
une
bibliothèque d'étiquettes personnalisées JSP pour
décrire
l'aspect graphique de la page. Le modèle agit comme une
définition de l'apparence des différentes pages d'une
application web, sans pour autant spécifier le contenu des ces
mêmes pages. Le contenu est inséré dans le template
lors de l'exécution. Ainsi une ou plusieurs pages peuvent
utiliser le même modèle assurant
l'uniformité de la présentation.
Le template fournit
l'apparence de la page
Comparons
maintenant la fonctionnalité de JSP "include" et le
système de
"template" :
- La
fonction JSP "include" est
déjà
établie, et est vraiement adapté à des
applications plus grande.
- La plupart
des serveurs
d'applications sont optimisés
pour les JSPs.
- Les pages "inclues" par les templates
fournissent des fragments HTML partiels, ce qui peut empécher la
maintenance des pages avec un éditeur HTML classique.
- La plupart des serveurs d'applications
recompilent les pages JSP. Lorsque celles ci changent, l'ensemble
des pages sont recompilées. Les templates crées beaucoup
plus de pages qui vont être recompilées.
- Les templates actuellement réutilisent
beaucoup de codes qui normalement auraient été
dupliqués sur toutes les pages. Ce qui permet de reduire
considérablement la taille des pages et de sauvegarder
beaucoup de ressources sur le serveur.
Le
framework Tiles fournit un mécanisme de template qui permet,
comme tout système de template, de bien séparer la partie
affichage de la partie code d'une application web. Comme montré
juste avant, il est possible d'établir une disposition et d'y
insérer dynamiquement le contenu des pages au cours de
l'exécution de l'application. Ce mechanisme est aussi
très puissant dans le cadre de personnalisation de l'interface
en fonction des préférence de l'utilisateur, son pays
(internationnalisation), ou juste pour un changement de look&feel
(ce qui est le lot tôt ou tard de pratiquement toutes les
applications web). Le framework Tiles fournit les fonctionalités
suivantes :
- Système de template
- Construction et chargement de pages JSP
dynamiques
- supporte la réutilisation de "tile"
- supporte l'internationnalisation (I18N)
Dans un premier temps, le framework Struts
possédait un système de template basé sur un
ensemble de tag (ou étiquette) assez basique. Cette
bibliothèque d'étiquette permettait d'assembler les pages
JSP d'une application web d'une manière très basique.
Même si ces fonctionnalités étaient
très pratique pour séparer l'interface du code, le
framework Tiles a été beaucoup plus loin et actuellement
fournit un jeu de tag bien plus évoluer et en plus beaucoup
d'autre possibilités comme la possibilité
d'utilisé des JavaBeans.
Tiles a été conçut par un
français : Cédric Dumoulin. A l'origine appelé
"Components", il a été renommé car ce terme
était trop souvent utilisé et des confusions
étaient souvent faites. Si on relit la document technique de
Tiles on trouvera encore des référence à cet
ancienne appélation. A l'origine, Cédric Dumoulin a voulu
étenbdre le concept de template et donner au développeur
plus de flexibilité et de libertélors de la
création de leurs applications web construites à partir
d'une technologie basé sur JSP.
Lors
de la conception de n'importe quelle application graphique, une des
phases de l'établissement du cahier des charges est la
définition de la charte de l'interface graphique. Celle ci passe
par un "zoning" de l'interface. Un
tile est une région, ou
zone,
dans une page web.
Le zonning
s'effectue
généralement en suivant une politique propre au site,
à
l'entreprise, ou tout simplement pour avoir une uniformité vis a
vis d'un produit. Dans ce cas il est évident que certaines
régions, ou "Tiles", des pages web vont être identique.
Ces régions peuvent être dynamiques ou statiques. En elle
même, la page n'a rien de spéciale mis à part le
fait qu'elle est faite pour fonctionner sur le shémas du
framework Tiles. Le fait de se plier à ce framework sous entend
que les pages utilisent les mécanismes de d'affichage de Tiles
et donc la bibliothèque d'étiquettes (aussi appelé
TagLib) spécifique à Tiles.
L'aspect le plus important de l'utilisation de Tiles et des "tiles" est
la ré-utilisabilité. En effet la conception suivant le
framework de Tiles permet de produire des morceaux de codes entierement
re-utilisable sur plusieurs applications. La
réutilisabilité ne se fait pas uniquement sur les regions
(Tiles), elle se fait aussi sur le template de la page.
Enfin vis à vis de Tiles on ne peut que constater que sa
simplicité de fonctionnement et la puissance de ses
fonctionnalités. Comme il le sera expliqué dans la partie
traitant des exemples, son utilisation est accessible a n'importe quel
développeur web n'ayant aucune connaissance des JSPs.
Jusqu'à
présent, la notion de template est restée assez vague. En
fait un template va servir a assembler des Tiles entre eux pour
formé la page présentée au client. La syntaxe de
Tiles ressemble beaucoup a celle utilisée dans le systeme inclus
à Struts. Dans le langage Tiles, les templates ne sont pas
nommés : "Layouts'".
Ces "layouts" sont aussi considérés comme des "tiles".
Les pages JSP ou les applications entière peuvent
réutiliser les "layouts". Il existe même des
bibliothèques de layouts prédéfinis. Le framework
Tile fournit six layouts pré construit. Ceux ci peuvent
être reutilisé ou modifier au besoin. Ces layouts sont :
- Classic Layout : un layout classique comme celui
présenté par l'image précédente
- Columns Layout
: un layout par colonne chaques
tiles sont organisés verticalement
- Center Layout : un layout centré de la version
"classic"
- Menu Layout : template pour un menu standard avec des
liens
- Tabs Layout : un template avec un style de "tabs" entre
les tiles
- Vertical box
Layout : visualise une liste de tiles affichés
verticalement
Dans le chapitre suivant, l'installation et la configuration de "Tiles"
et son installation sera développée.