====== D3-C03 : JAKARTA EE (3) : la communication d'informations ====== ===== Expression Language (EL) ===== ==== Prérequis : ==== * Connaître les principes du modèle MVC appliqué à Jakarta EE * Connaître le fonctionnement des servlets, des vues * Savoir gérer les paramètres et les attributs d'une requête * Avoir terminé la première activité et le premier TP Les expressions EL vont permettre d'éviter, voire de limiter, l'utilisation de code JAVA dans Jakarta EE (scriptlet). Ceci est particulièrement intéressant pour les dernières versions du JDK qui ne permettent plus de facilement importer des classes (beans) dans les jsp. ==== Utilisation d'Expression Language ==== Syntaxe générale : ${ expression } * Ce qui est situé entre {} sera interprété. === Une expression peut-être un calcul ou un test, exemples : === * ${ 10 / 4 } // Affichera 2.5 * $ { true && false } // Affichera false Tous les opérateurs sont possibles : + - * / % && || > < == etc === Une expression peut être un paramètre de la requête, exemple === * ${param.ztPseudo} // Affichera le contenu du paramètre ztPseudo Il est possible de tester si un paramètre est renseigné : * ${empty param.ztPseudo ? "Veuillez-vous authentifier" : "Authentification réussie"} === Une expression peut être un attribut de la requête, exemple === * ${isAdmin} // Affichera le contenu de l'attribut isAdmin La servlet peut avoir mis un objet en attribut, dans ce cas, au niveau de la jsp, on peut le récupérer pour l'afficher : * ${empty controlForm.getResultat() ? "" : controlForm.getResultat()} Il n'y a pas besoin de faire d'importation spécifique, ni de transtypage. Pour plus d'informations sur Expression Langage : https://docs.oracle.com/javaee/6/tutorial/doc/gjddd.html ==== Les avantages des EL ==== * Les EL sont pratiques pour afficher le contenu de variables (issues de paramètres ou d'attributs de requête). * Avant (scriptlets <% %>) : mélange HTML + Java → lourd, illisible, obsolète. ===== Les fragments JSPF ===== * Bonne pratique pour éviter la duplication (menu, en-tête, pied de page). * Cela introduit la modularité, essentielle avant de voir des frameworks plus évolués. ===== Tâches structurelles courantes avec JSTL (Java Server page Standard Tag Library) ===== JSTL va nous permettre, grâce à des balises, de réaliser les principales actions nécessaires dans la couche de présentation. JSTL prend en charge les tâches structurelles courantes telles que l’itération et les conditions, les balises pour la manipulation de documents XML, ainsi que les balises SQL. JSTL nécessite l’import de la librairie : <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ==== Condition(exemple avec un pseudo) ==== |^avec scriptlet, sans JSTL ^avec JSTL| |
<% if(request.getParameter("pseudo") != null) { %>
Bonjour <%= request.getParameter("pseudo") %>
<% } %>
|

Bonjour ${param.pseudo}

| ==== Boucles (exemple avec une liste d’objets) ==== |^avec scriptlet, sans JSTL ^avec JSTL| |
<% for(String nom : (List) request.getAttribute("liste")) { %>
  • <%= nom %>

  • <% } %>
    |

  • ${nom}


  • | Combiner EL, JSPF et JSTL permet d'avoir de bonnes pratiques : * pas de Java "brut" dans la JSP (mélange HTML + Java → lourd, illisible, obsolète), * JSP reste du HTML enrichi → plus clair, plus proche des frameworks modernes, * limiter au maximum la logique dans la JSP → la servlet (ou le contrôleur) fait le traitement, la JSP ne fait que l’affichage.