Utilisation de beans

Afin de simplifier l'utilisation des scriptlets, l'API JSP introduit la notion de bean attaché à une page. Un bean attaché à une page se comporte comme une variable que l'on peut utiliser en tout endroit de cette page. Ce bean est attaché à un contexte, qui peut être la page, la requête, la session ou l'application. Enfin ce bean peut être un bean existant, ou créé dans le cadre même de la page.

Rappelons qu'un bean est un objet Java simple, qui doit posséder les propriétés suivantes :

Un bean est déclaré en utilisant le tag <jsp:userBean>. Cette déclaration permet d'associer un nom à un bean. Ce nom peut être ensuite utilisé dans la page, comme s'il s'agissait d'un champ normal.

La déclaration précédente comporte plusieurs éléments, sous forme d'attributs XML :

Une fois ce bean déclaré, il peut être utilisé le corps de la page JSP, comme indiqué sur l'exemple.

La création d'un nouveau bean suit un processus légèrement différent. Tout d'abord, on ne déclare pas l'attribut beanName, qui indique que le bean doit exister dans un contexte donné par l'attribut scope. Ensuite, plutôt que d'indiquer la classe de ce bean dans l'attribut type, on le déclare dans l'attribut class.

Dans ce cas, le moteur de JSP crée ce bean, et le range en tant qu'attribut du contexte indiqué dans l'attribut scope.

On peut enfin préciser les valeurs des propriétés de ce bean de ceux façons :

Voyons tout ceci sur un exemple.

Dans ce deuxième exemple, on crée un bean de type Marin, et on l'associe au nom de champ marin. Le contexte de ce bean est la page, il ne sera donc pas disponible ailleurs que dans cette page. En particulier, si cette page fait appel à d'autres pages, ou à d'autres servlets, ces autres éléments n'auront pas accès à ce bean.

Les trois propriétés nom, prenom et age de ce bean sont fixées par les sous-éléments setProperty. Ces sous-élements prennent en attribut :

Jusqu'à présent nous avons utilisé des éléments de scripts entre les tags JSP particuliers <%= et >. On peut utiliser une syntaxe plus légère, comme dans l'exemple suivant.

Cette syntaxe consiste à référencer un bean par son nom dans la page (valeur de l'attribut id de l'élément useBean qui a servi à le déclarer), et à indiquer la propriété que l'on veut exploiter en utilisant le séparateur .. Le tout doit être mis entre accolades, et précédé par le caractère $.

Dans ce cas, la propriété sera affichée dans la page. Si elle est non nulle, alors le moteur de JSP utilisera sa méthode toString().