La Technologie JSP et Environnements de Développement

Institut Supérieur des Études Technologiques de Bizerte
1/14
100%

| | | | |

| --- | --- | --- | --- |

| Institut Supérieur des Etudes Technologiques de Bizerte Département Technologies de l’informatique | | | |

| Parcours : | Développement des Systèmes d’Information | | |

| Unité d’Enseignement : | Environnement de Développement | | |

| Matière | | | |

| Atelier Environnement de Développement | | | |

| Enseignant Responsable : Khaoula Jridi | | Année Universitaire : 2015-2016 | Semestre : 5 |

Atelier N°5 : La Technologie JSP

  • Objectifs
  • Savoir la syntaxe des balises, directives et actions JSP.
  • Ecrire en Expression language
  • Contenu

1. Les Balises

2. Les directives

3. La portée des objets

4. Les actions standrads

5. Expressions Language

6. Les Balises

Balise de commentaire

  • Pour écrire des commentaires dans une page JSP. On utilise les balises <%-- et --%>.

Balise de déclaration

  • Pour déclarer une variable ou une méthode, on utilise les balises <% ! %>

Exemple :

<%! String chaine = "c’est une déclaration"; %>

Balises de scriptlet

  • Pour inclure du code JAVA dans une JSP, on utilise les balises <%  %>

Balises d'expression

  • C’est un raccourci de la balise scriptlet avec une utilisation comme suit :

<% out.println("Bonjour "); %> Ou aussi la syntaxe la plus courte :

<%= "Bonjour"  %>

1. Les Directives

Les directives JSP permettent de :

  • importer un package
  • inclure d'autres pages JSP
  • d'inclure des bibliothèques de balises
  • définir des propriétés et informations relatives à une page JSP

Les directives se placent en début de la JSP.

Il existe trois directives :taglibpage et include.

1. La directive taglib

Exemple : <%@ taglib uri="maTagLib.tld" prefix="tagExemple" %>

Directive permettant d’inclure une bibliothèque personnalisée nommée maTagLib

1. La directive page

Exemple : <%@ page import="java.util.List, java.util.Date" %>

La directive page définit des informations relatives à la page JSP

1. La directive include

Exemple : <%@ include file="uneAutreJSP.jsp" %>

Directive permettant d’inclure des fichiers dans la JSP.

1. La portée des objets

La portée ou la visibilté d’un objet définit sa durée de vie. Il existe quatre portées différentes dans une application :

  • page (JSP seulement) : les objets dans cette portée sont uniquement accessibles dans la page JSP en question.
  • requête : les objets dans cette portée sont uniquement accessibles durant l'existence de la requête en cours.
  • session : les objets dans cette portée sont accessibles durant l'existence de la session en cours.
  • application : les objets dans cette portée sont accessibles durant toute l'existence de l'application.

1. Les actions standards

Les actions standards permettent généralement de manipuler les beans au sein d’une JSP

  • 1. L’action standard useBean

Cette action standard permet d'utiliser un bean, ou de le créer s'il n'existe pas, depuis une page JSP :

<%-- L'action suivante récupère un bean de type Etudiant et nommé "etd" dans la portée requête s'il existe, ou en crée un sinon. --%>

<jsp:useBean id="etd" class="com.dsi.models.Etudiant" scope="request" />

<%-- Elle a le même effet que le code Java suivant : --%>

<%

com.dsi.models.Etudiant etd = (com.dsi.models.Etudiant) request.getAttribute( "etd" );

if ( etd == null ){

etd = new com.dsi.models.Etudiant ();

request.setAttribute( "etd", etd );

}

%>

  • 1. L’action standard getProperty

Lorsque l'on utilise un bean au sein d'une page, il est possible par le biais de cette action d'obtenir la valeur d'une de ses propriétés :

<jsp:useBean id="etd" class="com.dsi.models.Etudiant" />

<%-- L'action suivante affiche le contenu de la propriété 'prenom' du bean 'etd' : --%>

<jsp:getProperty name="etd" property="prenom" />

<%-- Elle a le même effet que le code Java suivant : --%>

<%=etd.getPrenom() %>

  • 1. L’action standard setProperty

L’action standard <jsp :setProperty> est utilisée pour modifier une propriété d’un bean.

Publicité

<%-- L'action suivante associe une valeur à la propriété 'prenom' du bean 'etd' : --%>

<jsp:setProperty name="etd" property="prenom" value="Ali" />

<%-- Elle a le même effet que le code Java suivant : --%>

<% etd.setPrenom("Ali"); %>

Ou

<%-- L'action suivante associe directement la valeur récupérée depuis le paramètre de la requête nommé ici 'prenomEtudiant' à la propriété 'prenom' : --%>

<jsp:setProperty name="etd" property="prenom" param=" prenomEtudiant "/>

<%-- le code Java équivalent : --%>

<% etd.setPrenom( request.getParameter("prenomEtudiant") ); %>

Ou

<%-- L'action suivante associe directement la valeur récupérée depuis le paramètre de la requête nommé ici 'prenom' à la propriété de même nom : --%>

<jsp:setProperty name="etd" property="prenom" />

<%-- le code Java équivalent : --%>

<% etd.setPrenom( request.getParameter("prenom") ); %>

Ou

<%-- L'action suivante associe automatiquement la valeur récupérée depuis chaque paramètre de la requête à la propriété de même nom : --%>

<jsp:setProperty name="etd" property="\*" />

<%-- le code Java équivalent : --%>

<% etd.setNom( request.getParameter("nom") ); %>

<% etd.setPrenom( request.getParameter("prenom") ); %>

<% etd.setGenius( Boolean.valueOf( request.getParameter("genius") ) ); %>

  • 1. L’action standard forward

L’action <jsp :forward> permet d'effectuer une redirection vers une autre page.

<%-- Le forwarding vers une page de l'application fonctionne par URL relative : --%>

<jsp:forward page="/page.jsp" />

<%-- Son équivalent en code Java est : --%>

<% request.getRequestDispatcher( "/page.jsp" ).forward( request, response ); %>

<%-- Et il est impossible de rediriger vers un site externe comme ci-dessous : --%>

<jsp:forward page="http://www.google.com" />

T.A.F

1) créez les 2 jsp index.jsp et display.jsp sur la racine Web de votre application

index.jsp

<body>

<p align="center">My main JSP page</p>

<jsp:forward page="display.jsp" />

</body>

display.jsp

<body>

Hello this is a display.jsp Page

</body>

2) exécutez la page index.jsp.

3) faire passer des paramètres lors du forwarding de la jsp index vers la jsp display comme suit :

index.jsp

<body>

<jsp:forward page="display.jsp">

<jsp:param name="name" value="Chaitanya" />

<jsp:param name="site" value="BeginnersBook.com" />

<jsp:param name="tutorialname" value="jsp forward action" />

<jsp:param name="reqcamefrom" value="index.jsp" />

</jsp:forward> </body>

4) Récupérer les paramètres envoyés dans display.jsp comme suit :

<body>

<h2>Hello this is a display.jsp Page</h2>

My name is: <%=request.getParameter("name") %><br>

Website: <%=request.getParameter("site") %><br>

Topic: <%=request.getParameter("tutorialname") %><br>

Forward Request came from the page: <%=request.getParameter("reqcamefrom") %>

</body>

5) Exécutez display.jsp.

  • 1. L’action standard include

<jsp :include> permet d’inclure un contenu statique dans la JSP en cours.

<jsp:include page="test.jsp" />

Exemple :

index.jsp

<body>

<b>index.jsp Page</b><br>

<jsp:include page="Page2.jsp" />

</body>

Publicité

Page2.jsp

<b>Page2.jsp</b><br>

<i> This is the content of Page2.jsp page</i>

  • Le contenu de page2.jsp est ajouté à index.jsp.

1. Expressions Language

Introduction

Les EL sont indispensables à une utilisation optimale des JSP (ils sont introduits avec les JSP 2.0). A travers les EL on évite l’écriture de code JAVA dans les JSP.

L’objectif principal de l’utilisation des EL est la simplification de l’accès aux données que ce soit d’un bean java ou d’un objet implicite.

La syntaxe d'une telle expression : ${ expression }

1. La réalisation de tests par les EL

À l'intérieur d'une expression, on peut effectuer diverses sortes de tests. Pour réaliser ces tests, il faut inclure des opérateurs tel que :

1. opérateurs arithmétiques, applicables à des nombres : +, -, \*, /, %

2. opérateurs logiques, applicables à des booléens : &&, ||, !

| | | |

| --- | --- | --- |

| Nom de l’opérateur | EL | Évaluation de la condition |

| négation NOT | not | Exemple (1) : ${not x} Exemple (2) : ${! x} la condition est vraie si x est false la condition est fausse si x est true |

| ! |

| opérateur AND | and | Exemple (1) : ${x and y} Exemple (2) : ${x && y} la condition est vraie si x et y sont true la condition est fausse si x ou/et y sont false |

| && |

| opérateur OR | or | Exemple (1) : ${x or y} Exemple (2) : ${x || y} la condition est vraie si x ou/et y sont true la condition est fausse si x et y sont false |

| || |

1. opérateurs relationnels

| | | |

| --- | --- | --- |

| Nom de l’opérateur | EL | EL (syntaxe java) |

| égale à | eq (exemple : ${5 eq 2}) | == (exemple : ${5 == 2}) |

| différent de | ne (exemple : ${5 ne 2}) | != (exemple : ${5 != 2}) |

| plus grand que | gt (exemple : ${5 gt 2}) | > (exemple : ${5 > 2}) |

| plus grand ou égale à | ge (exemple : ${5 ge 2}) | >= (exemple : ${5 >= 2}) |

| plus petit que | lt (exemple : ${5 lt 2}) | < (exemple : ${5 < 2}) |

| plus petit ou égale à | le (exemple : ${5 le 2}) | <= (exemple : ${5 <= 2}) |

1. L’opérateur ternaire "? :" (COND ? STMT1 : STMT2)

L'opérateur ternaire utilise une expression conditionnelle, qui retourne true ou false, pour déterminer l’expression à exécuter.

L’opérateur est équivalemment à une instruction :

if...else : if(COND) STMT1; else STMT2

Exemple:

| | |

| --- | --- |

| | <%request.setAttribute("attr0", 4);%> ${( attr0 mod 2 eq 0) ? "EVEN NUMBER" : "ODD NUMBER"} |

1. L’opérateur empty

L’application de l’opérateur empty est évaluée à vraie si l’opérande est null, l’opérande est une chaîne de caractères vide, l’opérande est une variable non définie, ou l’opérande est une variable dont la valeur est null.

L’évaluation est aussi vraie si l’opérande est un tableau vide ou une collection vide.

Autrement l’évaluation est fausse.

<!-- Vérifications si vide ou null -->

${ empty 'test' } <!-- La chaîne testée n'est pas vide, le résultat est false -->

${ empty '' } <!-- La chaîne testée est vide, le résultat est true -->

${ !empty '' } <!-- La chaîne testée est vide, le résultat est false -->

T.A.F : Créez une page nommée test\_el.jsp à la racine de votre application, et placez-y ces quelques lignes :

<body>

<p>

<!-- Logiques sur des booléens -->

${ true && true } <br />

${ true && false } <br />

${ !true || false } <br />

<!-- Calculs arithmétiques -->

${ 10 / 4 } <br />

${ 10 mod 4 } <br />

${ 10 % 4 } <br />

${ 6 \* 7 } <br />

${ 63 - 8 } <br />

${ 12 / -8 } <br />

${ 7 / 0 } <br />

<!-- Compare les caractères 'a' et 'b'. Le caractère 'a' étant bien situé avant le

caractère 'b' dans l'alphabet ASCII, cette EL affiche true. -->

${ 'a' < 'b' } <br />

<!-- Compare les chaînes 'hip' et 'hit'. Puisque 'p' < 't', cette EL affiche false. -->

${ 'hip' gt 'hit' } <br />

Publicité

${ 6 \* 7 == 48 } <br />

</p>

</body>

</html>

1. L’accès aux données

2. A partir des beans

La technologie EL est basée sur les spécifications des JavaBeans : il est possible via une expression EL d'accéder directement à une propriété d'un bean. Pour illustrer cette fonctionnalité, nous allons utiliser les actions standard déjà vues.

T.A.F :

En utilisant les actions standards dans la jsp test\_el.jsp faire le suivant :

1. Créer un objet nommé etd à partir de la classe Etudiant du package "com.dsi.models".

2. Initialiser son prénom à Ali.

3. Afficher le prénom de l’objet etd.

b. Exécutez la JSP.

c. utiliser la EL suivante pour afficher le nom de l’objet : ${ etd.prenom }

conclusion

${ etd.prenom } : Cette expression retourne le contenu de la propriété prenom du bean nommé etd. La syntaxe et la convention employées :

Ainsi de manière générale, il suffit d'écrire ${ bean.propriete } pour accéder à une propriété d'un bean.

T.A.F

A l’aide des EL :

1. comparez le prénom de l’objet etd avec le prénom "Ahmed"

2. vérifiez que le prénom de l’objet etd n’est pas null

3. affichez le prénom de l’objet etd si existe sinon affichez le message suivant "Veuillez préciser un prénom"

1. A partir des collections

Les EL peuvent manipuler aussi les collections.

T.A.F

1. Créez une liste de matières comme suit :

<%

/\ Création d'une liste de légumes et insertion de quatre éléments \/

java.util.List<String> matieres = new java.util.ArrayList<String>();

matieres.add ( "Génie Logiciel" );

matieres.add ( "Programmation orientée objet" );

matieres.add ( "Algorithmique");

matieres.add ( "Conception" );

request.setAttribute ( "matieres" , matieres ); %>

1. Retourner l’IIème élément de la liste de matières.

${ matieres.get(1) }<br />

${ matieres [1] }<br />

${ matieres ['1'] }<br />

${ matieres ["1"] }<br />

1. A partir des tableaux

2. Créez un tableau comme suit :

String[] animaux = {"chien", "chat", "souris", "cheval"};

request.setAttribute("animaux" , animaux);

%>

1. Retourner l’IIème élément du tableau d’animaux.

2. A partir des Map

3. Créez une Map comme suit:

<%

/\ Création d'une Map \/

java.util.Map<String,Integer> desserts = new java.util.HashMap<String, Integer>();

desserts.put("cookies", 8);

desserts.put("glaces", 3);

desserts.put("muffins", 6);

desserts.put("tartes aux pommes", 2);

request.setAttribute("desserts" , desserts);

%>

<!-- Les quatre syntaxes suivantes retournent la valeur associée à la clé "cookies" de la Map de desserts -->

${ desserts.cookies }<br />

${ desserts.get("cookies") }<br />

${ desserts['cookies'] }<br />

${ desserts["cookies"] }<br />

Une pratique efficace :

  • Avec l'opérateur point on accède aux propriétés d'un bean,
  • Avec les crochets on accède aux contenus d'une Map.

Remarque : l'opérateur point n'est pas la seule manière d'accéder à une propriété d'un bean, il est également possible d'utiliser la notation avec les crochets : ${bean["propriété"]}.

1. Les objets implicites de la technologie EL

| Catégorie | Identifiant | Description |

| --- | --- | --- |

| JSP | pageContext | Objet contenant des informations sur  l'environnement du serveur. |

Publicité

| Portées | pageScope | Une Map qui associe les noms et valeurs des attributs  ayant pour portée la page. |

| Portées | requestScope | Une Map  qui associe les noms et valeurs des attributs ayant pour portée la requête. |

| Portées | sessionScope | Une Map  qui associe les noms et valeurs des attributs ayant pour portée la session. |

| Portées | applicationScope | Une Map  qui associe les noms et valeurs des attributs ayant pour portée l'application. |

| Paramètres de requête | param | Une Map qui associe les noms et valeurs des paramètres  de la requête. |

| Paramètres de requête | paramValues | Une Map  qui associe les noms et multiples valeurs \\ des paramètres de la requête sous forme de tableaux de String. |

| En-têtes de requête | header | Une Map qui associe les noms et valeurs des paramètres  des en-têtes HTTP. |

| En-têtes de requête | headerValues | Une Map  qui associe les noms et multiples valeurs \\ des paramètres des en-têtes HTTP sous forme de tableaux de String. |

| Cookies | cookie | Une Map qui associe les noms et instances des cookies. |

| Paramètres d’initialisation | initParam | Une Map qui associe les données contenues dans les  champs <param-name> et <param-value> de  la section <init-param> du fichier web.xml. |

1. La manipulation des objets de type Map avec les EL

Considérant la Map<String, String> représentant une liste d'aliments et leurs types :

| Aliments (Clés) | Types (Valeurs) |

| --- | --- |

| pomme | fruit |

| carotte | légume |

| boeuf | viande |

| aubergine | légume |

| poulet | viande |

Les EL sont capables d'accéder au contenu d'une Map, de la même manière qu'elles sont capables d'accéder aux propriétés d'un bean.

T.A.F :

1. créez une page test\_map.jsp, pour implémenter cette Map d'aliments.

2. affichez le type de chaque aliment comme suit :

${ aliments.pomme } <br /> <!-- affiche fruit -->

${ aliments.carotte } <br /> <!-- affiche légume -->

${ aliments.boeuf } <br /> <!-- affiche viande -->

${ aliments.aubergine } <br /><!-- affiche légume -->

T.A.F :

1. créez une page nommée test\_obj\_impl.jsp, à la racine de votre projet, et y placer le code suivant :

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>Test des objets implicites EL</title>

</head>

<body>

<p>

<%

String paramLangue = request.getParameter("langue");

out.println( "Langue : " + paramLangue );

%>

<br />

<%

String paramArticle = request.getParameter("article");

out.println( "Article : " + paramArticle );

%>

</p>

</body>

</html>

2. Éditez votre fichier test\_obj\_impl.jsp et remplacez le code précédent par le suivant :

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>Test des objets implicites EL</title>

</head>

<body>

<p>

Langue : ${ param.langue }

<br />

Article : ${ param.article }

</p>

</body>

</html>

1. Actualisez la page dans votre navigateur, et observez le même affichage que dans l'exemple précédent.

La Technologie JSP et Environnements de Développement

Institut Supérieur des Études Technologiques de Bizerte · Web Development Technologies · notes

Voir tous les documents en développement web

| | | | |

| --- | --- | --- | --- |

| Institut Supérieur des Etudes Technologiques de Bizerte Département Technologies de l’informatique | | | |

| Parcours : | Développement des Systèmes d’Information | | |

| Unité d’Enseignement : | Environnement de Développement | | |

| Matière | | | |

| Atelier Environnement de Développement | | | |

| Enseignant Responsable : Khaoula Jridi | | Année Universitaire : 2015-2016 | Semestre : 5 |

Atelier N°5 : La Technologie JSP

  • Objectifs
  • Savoir la syntaxe des balises, directives et actions JSP.
  • Ecrire en Expression language
  • Contenu

1. Les Balises

2. Les directives

3. La portée des objets

4. Les actions standrads

5. Expressions Language

6. Les Balises

Balise de commentaire

  • Pour écrire des commentaires dans une page JSP. On utilise les balises <%-- et --%>.

Balise de déclaration

  • Pour déclarer une variable ou une méthode, on utilise les balises <% ! %>

Exemple :

<%! String chaine = "c’est une déclaration"; %>

Balises de scriptlet

  • Pour inclure du code JAVA dans une JSP, on utilise les balises <%  %>

Balises d'expression

  • C’est un raccourci de la balise scriptlet avec une utilisation comme suit :

<% out.println("Bonjour "); %> Ou aussi la syntaxe la plus courte :

<%= "Bonjour"  %>

1. Les Directives

Les directives JSP permettent de :

  • importer un package
  • inclure d'autres pages JSP
  • d'inclure des bibliothèques de balises
  • définir des propriétés et informations relatives à une page JSP

Les directives se placent en début de la JSP.

Il existe trois directives :taglibpage et include.

1. La directive taglib

Exemple : <%@ taglib uri="maTagLib.tld" prefix="tagExemple" %>

Directive permettant d’inclure une bibliothèque personnalisée nommée maTagLib

1. La directive page

Exemple : <%@ page import="java.util.List, java.util.Date" %>

La directive page définit des informations relatives à la page JSP

1. La directive include

Exemple : <%@ include file="uneAutreJSP.jsp" %>

Directive permettant d’inclure des fichiers dans la JSP.

1. La portée des objets

La portée ou la visibilté d’un objet définit sa durée de vie. Il existe quatre portées différentes dans une application :

  • page (JSP seulement) : les objets dans cette portée sont uniquement accessibles dans la page JSP en question.
  • requête : les objets dans cette portée sont uniquement accessibles durant l'existence de la requête en cours.
  • session : les objets dans cette portée sont accessibles durant l'existence de la session en cours.
  • application : les objets dans cette portée sont accessibles durant toute l'existence de l'application.

1. Les actions standards

Les actions standards permettent généralement de manipuler les beans au sein d’une JSP

  • 1. L’action standard useBean

Cette action standard permet d'utiliser un bean, ou de le créer s'il n'existe pas, depuis une page JSP :

<%-- L'action suivante récupère un bean de type Etudiant et nommé "etd" dans la portée requête s'il existe, ou en crée un sinon. --%>

<jsp:useBean id="etd" class="com.dsi.models.Etudiant" scope="request" />

<%-- Elle a le même effet que le code Java suivant : --%>

<%

com.dsi.models.Etudiant etd = (com.dsi.models.Etudiant) request.getAttribute( "etd" );

if ( etd == null ){

etd = new com.dsi.models.Etudiant ();

request.setAttribute( "etd", etd );

}

%>

  • 1. L’action standard getProperty

Lorsque l'on utilise un bean au sein d'une page, il est possible par le biais de cette action d'obtenir la valeur d'une de ses propriétés :

<jsp:useBean id="etd" class="com.dsi.models.Etudiant" />

<%-- L'action suivante affiche le contenu de la propriété 'prenom' du bean 'etd' : --%>

<jsp:getProperty name="etd" property="prenom" />

<%-- Elle a le même effet que le code Java suivant : --%>

<%=etd.getPrenom() %>

  • 1. L’action standard setProperty

L’action standard <jsp :setProperty> est utilisée pour modifier une propriété d’un bean.

Publicité

<%-- L'action suivante associe une valeur à la propriété 'prenom' du bean 'etd' : --%>

<jsp:setProperty name="etd" property="prenom" value="Ali" />

<%-- Elle a le même effet que le code Java suivant : --%>

<% etd.setPrenom("Ali"); %>

Ou

<%-- L'action suivante associe directement la valeur récupérée depuis le paramètre de la requête nommé ici 'prenomEtudiant' à la propriété 'prenom' : --%>

<jsp:setProperty name="etd" property="prenom" param=" prenomEtudiant "/>

<%-- le code Java équivalent : --%>

<% etd.setPrenom( request.getParameter("prenomEtudiant") ); %>

Ou

<%-- L'action suivante associe directement la valeur récupérée depuis le paramètre de la requête nommé ici 'prenom' à la propriété de même nom : --%>

<jsp:setProperty name="etd" property="prenom" />

<%-- le code Java équivalent : --%>

<% etd.setPrenom( request.getParameter("prenom") ); %>

Ou

<%-- L'action suivante associe automatiquement la valeur récupérée depuis chaque paramètre de la requête à la propriété de même nom : --%>

<jsp:setProperty name="etd" property="\*" />

<%-- le code Java équivalent : --%>

<% etd.setNom( request.getParameter("nom") ); %>

<% etd.setPrenom( request.getParameter("prenom") ); %>

<% etd.setGenius( Boolean.valueOf( request.getParameter("genius") ) ); %>

  • 1. L’action standard forward

L’action <jsp :forward> permet d'effectuer une redirection vers une autre page.

<%-- Le forwarding vers une page de l'application fonctionne par URL relative : --%>

<jsp:forward page="/page.jsp" />

<%-- Son équivalent en code Java est : --%>

<% request.getRequestDispatcher( "/page.jsp" ).forward( request, response ); %>

<%-- Et il est impossible de rediriger vers un site externe comme ci-dessous : --%>

<jsp:forward page="http://www.google.com" />

T.A.F

1) créez les 2 jsp index.jsp et display.jsp sur la racine Web de votre application

index.jsp

<body>

<p align="center">My main JSP page</p>

<jsp:forward page="display.jsp" />

</body>

display.jsp

<body>

Hello this is a display.jsp Page

</body>

2) exécutez la page index.jsp.

3) faire passer des paramètres lors du forwarding de la jsp index vers la jsp display comme suit :

index.jsp

<body>

<jsp:forward page="display.jsp">

<jsp:param name="name" value="Chaitanya" />

<jsp:param name="site" value="BeginnersBook.com" />

<jsp:param name="tutorialname" value="jsp forward action" />

<jsp:param name="reqcamefrom" value="index.jsp" />

</jsp:forward> </body>

4) Récupérer les paramètres envoyés dans display.jsp comme suit :

<body>

<h2>Hello this is a display.jsp Page</h2>

My name is: <%=request.getParameter("name") %><br>

Website: <%=request.getParameter("site") %><br>

Topic: <%=request.getParameter("tutorialname") %><br>

Forward Request came from the page: <%=request.getParameter("reqcamefrom") %>

</body>

5) Exécutez display.jsp.

  • 1. L’action standard include

<jsp :include> permet d’inclure un contenu statique dans la JSP en cours.

<jsp:include page="test.jsp" />

Exemple :

index.jsp

<body>

<b>index.jsp Page</b><br>

<jsp:include page="Page2.jsp" />

</body>

Publicité

Page2.jsp

<b>Page2.jsp</b><br>

<i> This is the content of Page2.jsp page</i>

  • Le contenu de page2.jsp est ajouté à index.jsp.

1. Expressions Language

Introduction

Les EL sont indispensables à une utilisation optimale des JSP (ils sont introduits avec les JSP 2.0). A travers les EL on évite l’écriture de code JAVA dans les JSP.

L’objectif principal de l’utilisation des EL est la simplification de l’accès aux données que ce soit d’un bean java ou d’un objet implicite.

La syntaxe d'une telle expression : ${ expression }

1. La réalisation de tests par les EL

À l'intérieur d'une expression, on peut effectuer diverses sortes de tests. Pour réaliser ces tests, il faut inclure des opérateurs tel que :

1. opérateurs arithmétiques, applicables à des nombres : +, -, \*, /, %

2. opérateurs logiques, applicables à des booléens : &&, ||, !

| | | |

| --- | --- | --- |

| Nom de l’opérateur | EL | Évaluation de la condition |

| négation NOT | not | Exemple (1) : ${not x} Exemple (2) : ${! x} la condition est vraie si x est false la condition est fausse si x est true |

| ! |

| opérateur AND | and | Exemple (1) : ${x and y} Exemple (2) : ${x && y} la condition est vraie si x et y sont true la condition est fausse si x ou/et y sont false |

| && |

| opérateur OR | or | Exemple (1) : ${x or y} Exemple (2) : ${x || y} la condition est vraie si x ou/et y sont true la condition est fausse si x et y sont false |

| || |

1. opérateurs relationnels

| | | |

| --- | --- | --- |

| Nom de l’opérateur | EL | EL (syntaxe java) |

| égale à | eq (exemple : ${5 eq 2}) | == (exemple : ${5 == 2}) |

| différent de | ne (exemple : ${5 ne 2}) | != (exemple : ${5 != 2}) |

| plus grand que | gt (exemple : ${5 gt 2}) | > (exemple : ${5 > 2}) |

| plus grand ou égale à | ge (exemple : ${5 ge 2}) | >= (exemple : ${5 >= 2}) |

| plus petit que | lt (exemple : ${5 lt 2}) | < (exemple : ${5 < 2}) |

| plus petit ou égale à | le (exemple : ${5 le 2}) | <= (exemple : ${5 <= 2}) |

1. L’opérateur ternaire "? :" (COND ? STMT1 : STMT2)

L'opérateur ternaire utilise une expression conditionnelle, qui retourne true ou false, pour déterminer l’expression à exécuter.

L’opérateur est équivalemment à une instruction :

if...else : if(COND) STMT1; else STMT2

Exemple:

| | |

| --- | --- |

| | <%request.setAttribute("attr0", 4);%> ${( attr0 mod 2 eq 0) ? "EVEN NUMBER" : "ODD NUMBER"} |

1. L’opérateur empty

L’application de l’opérateur empty est évaluée à vraie si l’opérande est null, l’opérande est une chaîne de caractères vide, l’opérande est une variable non définie, ou l’opérande est une variable dont la valeur est null.

L’évaluation est aussi vraie si l’opérande est un tableau vide ou une collection vide.

Autrement l’évaluation est fausse.

<!-- Vérifications si vide ou null -->

${ empty 'test' } <!-- La chaîne testée n'est pas vide, le résultat est false -->

${ empty '' } <!-- La chaîne testée est vide, le résultat est true -->

${ !empty '' } <!-- La chaîne testée est vide, le résultat est false -->

T.A.F : Créez une page nommée test\_el.jsp à la racine de votre application, et placez-y ces quelques lignes :

<body>

<p>

<!-- Logiques sur des booléens -->

${ true && true } <br />

${ true && false } <br />

${ !true || false } <br />

<!-- Calculs arithmétiques -->

${ 10 / 4 } <br />

${ 10 mod 4 } <br />

${ 10 % 4 } <br />

${ 6 \* 7 } <br />

${ 63 - 8 } <br />

${ 12 / -8 } <br />

${ 7 / 0 } <br />

<!-- Compare les caractères 'a' et 'b'. Le caractère 'a' étant bien situé avant le

caractère 'b' dans l'alphabet ASCII, cette EL affiche true. -->

${ 'a' < 'b' } <br />

<!-- Compare les chaînes 'hip' et 'hit'. Puisque 'p' < 't', cette EL affiche false. -->

${ 'hip' gt 'hit' } <br />

Publicité

${ 6 \* 7 == 48 } <br />

</p>

</body>

</html>

1. L’accès aux données

2. A partir des beans

La technologie EL est basée sur les spécifications des JavaBeans : il est possible via une expression EL d'accéder directement à une propriété d'un bean. Pour illustrer cette fonctionnalité, nous allons utiliser les actions standard déjà vues.

T.A.F :

En utilisant les actions standards dans la jsp test\_el.jsp faire le suivant :

1. Créer un objet nommé etd à partir de la classe Etudiant du package "com.dsi.models".

2. Initialiser son prénom à Ali.

3. Afficher le prénom de l’objet etd.

b. Exécutez la JSP.

c. utiliser la EL suivante pour afficher le nom de l’objet : ${ etd.prenom }

conclusion

${ etd.prenom } : Cette expression retourne le contenu de la propriété prenom du bean nommé etd. La syntaxe et la convention employées :

Ainsi de manière générale, il suffit d'écrire ${ bean.propriete } pour accéder à une propriété d'un bean.

T.A.F

A l’aide des EL :

1. comparez le prénom de l’objet etd avec le prénom "Ahmed"

2. vérifiez que le prénom de l’objet etd n’est pas null

3. affichez le prénom de l’objet etd si existe sinon affichez le message suivant "Veuillez préciser un prénom"

1. A partir des collections

Les EL peuvent manipuler aussi les collections.

T.A.F

1. Créez une liste de matières comme suit :

<%

/\ Création d'une liste de légumes et insertion de quatre éléments \/

java.util.List<String> matieres = new java.util.ArrayList<String>();

matieres.add ( "Génie Logiciel" );

matieres.add ( "Programmation orientée objet" );

matieres.add ( "Algorithmique");

matieres.add ( "Conception" );

request.setAttribute ( "matieres" , matieres ); %>

1. Retourner l’IIème élément de la liste de matières.

${ matieres.get(1) }<br />

${ matieres [1] }<br />

${ matieres ['1'] }<br />

${ matieres ["1"] }<br />

1. A partir des tableaux

2. Créez un tableau comme suit :

String[] animaux = {"chien", "chat", "souris", "cheval"};

request.setAttribute("animaux" , animaux);

%>

1. Retourner l’IIème élément du tableau d’animaux.

2. A partir des Map

3. Créez une Map comme suit:

<%

/\ Création d'une Map \/

java.util.Map<String,Integer> desserts = new java.util.HashMap<String, Integer>();

desserts.put("cookies", 8);

desserts.put("glaces", 3);

desserts.put("muffins", 6);

desserts.put("tartes aux pommes", 2);

request.setAttribute("desserts" , desserts);

%>

<!-- Les quatre syntaxes suivantes retournent la valeur associée à la clé "cookies" de la Map de desserts -->

${ desserts.cookies }<br />

${ desserts.get("cookies") }<br />

${ desserts['cookies'] }<br />

${ desserts["cookies"] }<br />

Une pratique efficace :

  • Avec l'opérateur point on accède aux propriétés d'un bean,
  • Avec les crochets on accède aux contenus d'une Map.

Remarque : l'opérateur point n'est pas la seule manière d'accéder à une propriété d'un bean, il est également possible d'utiliser la notation avec les crochets : ${bean["propriété"]}.

1. Les objets implicites de la technologie EL

| Catégorie | Identifiant | Description |

| --- | --- | --- |

| JSP | pageContext | Objet contenant des informations sur  l'environnement du serveur. |

Publicité

| Portées | pageScope | Une Map qui associe les noms et valeurs des attributs  ayant pour portée la page. |

| Portées | requestScope | Une Map  qui associe les noms et valeurs des attributs ayant pour portée la requête. |

| Portées | sessionScope | Une Map  qui associe les noms et valeurs des attributs ayant pour portée la session. |

| Portées | applicationScope | Une Map  qui associe les noms et valeurs des attributs ayant pour portée l'application. |

| Paramètres de requête | param | Une Map qui associe les noms et valeurs des paramètres  de la requête. |

| Paramètres de requête | paramValues | Une Map  qui associe les noms et multiples valeurs \\ des paramètres de la requête sous forme de tableaux de String. |

| En-têtes de requête | header | Une Map qui associe les noms et valeurs des paramètres  des en-têtes HTTP. |

| En-têtes de requête | headerValues | Une Map  qui associe les noms et multiples valeurs \\ des paramètres des en-têtes HTTP sous forme de tableaux de String. |

| Cookies | cookie | Une Map qui associe les noms et instances des cookies. |

| Paramètres d’initialisation | initParam | Une Map qui associe les données contenues dans les  champs <param-name> et <param-value> de  la section <init-param> du fichier web.xml. |

1. La manipulation des objets de type Map avec les EL

Considérant la Map<String, String> représentant une liste d'aliments et leurs types :

| Aliments (Clés) | Types (Valeurs) |

| --- | --- |

| pomme | fruit |

| carotte | légume |

| boeuf | viande |

| aubergine | légume |

| poulet | viande |

Les EL sont capables d'accéder au contenu d'une Map, de la même manière qu'elles sont capables d'accéder aux propriétés d'un bean.

T.A.F :

1. créez une page test\_map.jsp, pour implémenter cette Map d'aliments.

2. affichez le type de chaque aliment comme suit :

${ aliments.pomme } <br /> <!-- affiche fruit -->

${ aliments.carotte } <br /> <!-- affiche légume -->

${ aliments.boeuf } <br /> <!-- affiche viande -->

${ aliments.aubergine } <br /><!-- affiche légume -->

T.A.F :

1. créez une page nommée test\_obj\_impl.jsp, à la racine de votre projet, et y placer le code suivant :

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>Test des objets implicites EL</title>

</head>

<body>

<p>

<%

String paramLangue = request.getParameter("langue");

out.println( "Langue : " + paramLangue );

%>

<br />

<%

String paramArticle = request.getParameter("article");

out.println( "Article : " + paramArticle );

%>

</p>

</body>

</html>

2. Éditez votre fichier test\_obj\_impl.jsp et remplacez le code précédent par le suivant :

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>Test des objets implicites EL</title>

</head>

<body>

<p>

Langue : ${ param.langue }

<br />

Article : ${ param.article }

</p>

</body>

</html>

1. Actualisez la page dans votre navigateur, et observez le même affichage que dans l'exemple précédent.