Java Server Faces (JSF) est un framework Web destiné à faciliter toutes les tâches courantes liées au développement d’un site, telles que la validation de données, la gestion de la navigation, l’internationalisation, la gestion des erreurs, la réutilisation de code…
JSF s’appuie sur le modèle MVC pour l’architecture du site et apporte une notion de composants similaire à ce qu’on peut trouver dans Swing. Ce principe de composants va permettre de mettre en place des écouteurs (clic sur bouton, un lien, ...), validation des données (test de la longueur d’un champ, du type de contenu, …) et de conversion de données (transforme une date en texte, une chaîne en objet métier, ...) du côté serveur. JSF offre un mapping HTML/Objet, c’est-à-dire qu’un composant HTML correspond à un composant JSF. Tous les composants existent sous forme de classe Java, mais dans la pratique on les manipule à l’aide de balise JSF, le composant est invisible.
Lorsqu’un utilisateur va visiter une page, les composants JSF vont être transformés en HTML en fonction de son navigateur et inversement, lorsqu’un serveur reçoit une requête utilisateur. Tout cela toujours grâce au mapping HTML/Objet. Par rapport au modèle MVC, les composants JSF font partie de la vue et la partie modèle est représentée par des JavaBeans. Le rôle du contrôleur est joué par la Servlet de JSF. Dernier concept intéressant de JSF, c’est que toute la navigation d’un site est définie dans un unique fichier, appelé fichier de navigation. Ceci permet de centraliser les règles de navigation et d’avoir une vue directe du plan du site.