Introduction à Java Server Faces

 

Qu’est-ce que JSF ? 

 

Java Server Faces est une technologie basée sur un ensemble de bibliothèques Java qui vise à simplifier, standardiser et rendre robustes les applications Web basées sur Java.

 

JSF peut être considérée comme la technologie à utiliser pour construire la couche de présentation des applications d’entreprises Java (JEE).

 

Une application JSF s’exécute donc dans le contexte d’un serveur, accessible typiquement par le protocole HTTP. Autrement dit, l’application JSF est une application Web.

  

Pourquoi la technologie JSF ?

 

Les applications Web sont traditionnellement basées sur du HTML, auquel on accède et que l’on retourne vers un navigateur qui saura le rendre sous la forme de textes, images, ou autres formulaires. Rapidement, il s’est avéré important d’enrichir les fonctionnalités du serveur, au-delà de la fourniture de simples pages HTML. Il est donc apparu l’exécution de programmes du côté du serveur, visant à produire du contenu HTML. Les technologies portent des noms divers et variés. L’écueil majeur est alors le mélange des genres entre le code HTML, langage de présentation de pages et le code applicatif.

 

Dans le monde Java, on parlera de Servlet, puis de Java Server Pages (JSP). Ces technologies trouvent leur accomplissement avec JSF. Grâce à cette technologie, nous pouvez séparer de façon efficace la partie présentation, basée sur HTML et la partie contrôle, c’est à dire navigation, validation des données, etc. L’objectif général est donc de séparer la description de la page (HTML) du code Java.

 

Les bibliothèques JSF contiennent des balises qui proposent différentes fonctionnalités :

 

JSF Facelets pour organiser les contenus

 

JSF Html pour générer du HTML

 

JSF Core pour gérer les interactions HTML/Code Java

 

JSTL Core pour introduire des la logique sous forme de balises

 

des fonctions pour manipuler les type standards sous forme de balises

 

...

 

 Comment se présente une application JSF ?

 

Une application JSF se présente sous la forme d’une application Web dynamique. A la base de JSF, la technologie Servlet est à l’oeuvre, fournissant le coeur du système. Mais pour le développeur, on ne se focalise pas sur le servlet, mais sur la fabrication de pages HTML (portant extension .jsp) et de code Java que l’on nommera des Beans. Les Beans contiendront les code du contrôle de l’application, et les pages JSP contiendront la description des pages. A noter que le rendu final sur le navigateur n’est pas imposé, l’architecture JSF séparant le moteur de rendu de la composition de la page.

 

Dans l’exemple de page JSF suivant, nous créons un formulaire.

 

<h:body>
<ui:composition template="./template.xhtml">
<ui:define name="centre">
<h:form>
<h:dataTable
value="#{personnel.lesPersonnes}"
var="lapersonne">
<h:column >
<f:facet name="nom">
<h:outputText value="Nom de la personne"/>
</f:facet>
<h:inputText value="#{lapersonne.nom}"/>
</h:column>
<h:column >
<f:facet name="prenom">
<h:outputText value="Prénom de la personne"/>
</f:facet>
<h:inputText value="#{lapersonne.prenom}"/>
</h:column>

 

 Dans l’exemple de code Java suivant, nous gérons codons une personne.

 

 /**

*

* @author fabien

*/

@Named("personne")

@SessionScoped

 public class Personne implements Serializable{

private String nom;

private String prenom;

private String email;

private String tel;

 

@Override

public String toString() {

return nom+" "+prenom;

}

 public String getNom() {

return nom;

}

public void setNom(String nom) {

this.nom = nom;

}

public String getPrenom() {

return prenom;

}

public void setPrenom(String prenom) {

this.prenom = prenom;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getTel() {

return tel;

}

public void setTel(String tel) {

this.tel = tel;

}

 }

 

Vous constatez dans ces exemples que le code de la page ne contient pas de logique applicative, mais se concentre sur la description. Par ailleurs, le code Java ne contient rien qui évoque la description. Grâce à JSF, la séparation des responsabilités affichage/logique est achevée !

 

Comment le mettre en œuvre ?

 

Pour mettre en œuvre JSF, il suffit de disposer d’un serveur qui supporte la technologie. L’implémentation de référence de la technologie JEE est Glassfish, qui est téléchargeable gratuitement. Pour le développement, une IDE comme Eclipse ou Netbeans permet de disposer d’un environnement de travail et de test intégré. Créer un projet Java Web avec JSF est extrêmement simple et rapide. L’environnement permet aussi de paramétrer le serveur lorsque nécessaire, par exemple pour la définition des utilisateurs.

 

JSF est une technologie de choix pour la création d’applications robustes et fiables avec Java JEE. Cette technologie prend en charge la couche de présentation et s’interface naturellement avec l’ensemble des composants JEE.