Vendredi 19 décembre 2008
P51

====== Cours ======

===== Couches MVC =====

==== MVC ====

Cf. cours sur le site internet.

==== MV II ====

Dynamique de l'application : ce sont des classes, appelées classes d'action

Dans dynamique de l'application, il n'y a plus de gestion des servlets, etc. Cela peut être plus simple.

Un seul servlet contrôleur, générique, pourra tout contrôler.

Sous traiter vers des contrôleurs secondaire qui seront de petites actions.

Les actions vont faire des JavaBeans utiles pour la page, le contrôleur principal choisi quelle page JSP utiliser, puis l'action envoie les JavaBeans à la page JSP choisie.

===== Servlets =====

Les servlets génèrent principalement des données binaires. Dans le cas du projet donné, c'est du XML que l'ont doit générer.

Une servlet utilise deux méthodes :
  * forward
  * include

OuputStream => binaire
Writer => chaînes de caractère

Il faut toujours faire un *setHeader* quand on envoie du contenu binaire !! => exemple pour une image JPG ou encore pour notre XML du projet.

===== JSP =====

Les JSP sont similaires à des templates. Exemple : pour l'affichage de produits d'une base de données, on va toujours utiliser la même JSP !

Dans notre cas il est plus compliqué d'utiliser des JSP pour générer du XML.

Si ça varie de trop, on peut pas utiliser du JSP, car si plus de code Java que de balises HTML, ce n'est pas bon.

JSP = affichage !!! Donc différent du contrôle fait par les servlets par exemple.

===== Règles de bonne utilisation =====

  * Éviter l'utilisation des balises logiques
  * Mettre en commun le code qui se répète
  * Ne pas confondre @include et jsp:include
    * @include : intègre le code de la JSP dans notre JSP
    * jsp:include : à chaque appel, la JSP est appelé et incluse dans la réponse

===== Taglib JSP =====

Permet d'utiliser nos propres tags pour les inclures dans la page JSP.

Les tags ont accès aux objets de la JSP, peuvent utiliser les paramètres de la page, et permettent de faire des choses complexes (par exemple inclure un tag dans un tag).

==== Bibliothèque de tags ====

  * classe java pour chaque tag de la bibliothèque
  * fichier de description de la bibliothèque


