Vous êtes sur la page 1sur 11

17/11/2020

Cours
Architectures n-tiers et orientées
services
NAHLA HADDAR
MAÎTRE ASSISTANT, ISIM-
ISIM-SFAX, UNIVERSITÉ DE SFAX
MEMBRE DU LABORATOIRE MIRACL

AUDITOIRES: LFIIM3, LATMW3


© 2018
2018--2021

Chapitre 3 – Architecture Java


EE (Partie 2)
COURS ARCHITECTURES N-TIERS ET ORIENTÉES SERVICES
DR. NAHLA HADDAR OUALI
AUDITOIRES: LFIIM3, LATMW3
© 2018-2021

1
17/11/2020

2
Plan de cette partie

 Implémentation d’une page JSP

 Partage d’information entre JSP

Implémentation CHAPITRE 3 – ARCHITECTURE J2EE

des pages JSP


(JSP/SERVLET)

2
17/11/2020

4
Objets prédéfinis dans une JSP

 peuvent être utilisés immédiatement dans une page JSP :


o out : le canal de sortie
o request (HttpServletRequest) : l'objet requête
o response (HttpServletResponse) : l'objet réponse
o session (HttpSession): représente la session dans laquelle se trouve la requête
o application (ServletContext): sauvegarde les variables de contexte de
l’application (variables qui peuvent être utilisées par toutes les pages JSP de
l’application)

5
Éléments de scripts JSP

 <% - - commentaire - -%>

 scriptlets <% %>

 déclarations <%! %>

 expressions <%= %>

3
17/11/2020

6
Scriptlets <% %>

 Contient du code Java;


 Peut utiliser out, request, response
 Exemple:

<%
String[] langages = {"Java", "C++", "Python"};
out.println("<h3>Principaux langages orientés objets : </h3>");
for (int i=0; i < langages.length; i++) {
out.println("<p>" + langages[i] + "</p>");
}
%>

7
Déclarations <%! %>

 Sont des déclarations Java.


 Permet de définir des méthodes ou des variables.
 Exemples:

<%! <%!
float somme(int a, int b){ int compteur = 0;
return (a+b)/2; %>
}
%>

4
17/11/2020

8
Expressions <%= %>

 Permet de définir une expression Java qui renvoie un objet String


ou un type primitif (int, float, …).
 Un raccourci pour <% out.println(…); %>
o <% out.println(A); %> <%= A%>

o Attention: pas de ; et pas d’espaces


 Peut utiliser out, request, response
 Exemples:
<p> La somme est: <%=(195 + 9 + 273)%> </p>
<p> Je vous réponds à l'adresse :
<%=request.getParameter("email_address")%></p>

9
Scriplet de directives

 Une directive est une déclaration qui donne une valeur à un


attribut prédéfini.
 Cet attribut est ensuite utilisé pour créer la servlet associée à cette
page.
 Syntaxe: <@%directive attribut1="valeur1" attribut2="valeur2" %>

 Exemple: Utilisation d'une directive include


<%@include file="copyright.html" %>

5
17/11/2020

10
Attributs de la directive Page

 import: précise les packages ou les classes à importer

 contentType: indique quel est le type MIME de la page générée.

 session : contrôle le fait qu’un objet de type HttpSession va être


associé à cette page ou non. Les valeurs possibles
sont true et false; false est la valeur par défaut.

<%@page contentType="text/html" session="true"


import="java.util.Vector"%>

11

Partage CHAPITRE 3 – ARCHITECTURE J2EE

d’information
(JSP/SERVLET)

6
17/11/2020

12
Partager des Java beans !
 Pourquoi un Java Beans?
o En réalité, un bean est un simple objet Java qui suit certaines contraintes, et représente
généralement des données du monde réel.
o Principaux concepts mis en jeu:
 Les propriétés : un bean est conçu pour être paramétrable. Les propriétés permettent de
paramétrer le bean, en y stockant des données.
 La sérialisation : un bean est conçu pour pouvoir être persistant. La sérialisation est un processus
qui permet de sauvegarder l'état d'un bean, et donne ainsi la possibilité de le restaurer par la
suite.
 La réutilisation : un bean est un composant conçu pour être réutilisable. Ne contenant que des
données ou du code métier, un tel composant n'a en effet pas de lien direct avec la couche
de présentation, et peut également être distant de la couche d'accès aux données.
 L'introspection : un bean est conçu pour être paramétrable de manière dynamique.
L'introspection est un processus qui permet de connaître le contenu d'un composant (attributs,
méthodes et événements) de manière dynamique, sans disposer de son code source.

13
Les Java beans

 Règles de normalisation:
o Un bean :
 doit être une classe publique ;
 doit avoir au moins un constructeur par défaut, public et sans paramètres.
Java l'ajoutera de lui-même si aucun constructeur n'est explicité ;
 peut implémenter l'interface Serializable, il devient ainsi persistant et son état
peut être sauvegardé ;
 ne doit pas avoir de champs publics ;
 peut définir des propriétés (des champs non publics), qui doivent être
accessibles via des méthodes publiques getter et setter, suivant des règles de
nommage.
 doit être défini explicitement dans un package.

7
17/11/2020

14
Exemple de bean: le bean Compteur

15
Accès aux beans depuis les jsp (1/2)
 <jsp:useBean ... /> : déclarer un bean avec un nom (id), une durée de
vie (scope) et le nom de la classe utilisée pour implémenter le bean
(class) de la forme nompackage.NomClasse
<!-- déclaration du bean Compteur (création ou récupération d’un objet de
type Compteur)-->
<jsp: useBean id="cpt" scope =" application " class =" test.Compteur "/>

 La durée peut être fixée à : request, session ou application:


o request : le bean est détruit lorsque le client demande une nouvelle page.
o session : commence à la connexion, et se termine quand l'utilisateur arrête son
navigateur.
o application : signifie que le bean existe pour toute la durée de vie du serveur
d’application; le bean est alors unique pour tous les utilisateurs.

8
17/11/2020

16
Accès aux beans depuis les jsp (2/2)

Les balises spécifiques au beans sont :


 <jsp:getProperty ... /> permet de lire les valeurs des champs du bean :
o name : nom du bean (id="...")
o property : nom de la propriété, qui doit être un des champs dénis par le bean.
 <jsp:setProperty ... /> permet de modifier la valeur d'un champ du bean :
o name : nom du bean ;
o property : nom du champ ;
o param: nom d'un paramètre de requête contenant la valeur pour le champ
o value : valeur à donner au champ. Ne peux pas être combiné à l’attribut param.

17
Exemple: calcul du nombre de visiteur
d’un site
<html >
<head > <title > Accueil</ title > </head >
<body >
<!-- déclaration du bean Compteur (création ou récupération)-->
<jsp: useBean id="cpt" scope =" application " class =" test.Compteur "/>
<!– Lecture de l’attribut valeur de l’objet cpt -->
Valeur initiale: <jsp:getProperty name ="cpt" property ="valeur"/>
<%
// incrémentation du compteur du nombre de visiteurs:
cpt. incremente ();
<!– Lecture de l’attribut valeur de l’objet cpt -->
Nouvelle valeur: <jsp:getProperty name ="cpt" property ="valeur"/>
%>
</body >
</html >

9
17/11/2020

18
Envoie entre pages JSP

 La collaboration est obtenue par l'interface ServletContext


 Une Servlet retrouve le ServletContext de son application web par
un appel à getServletContext(), alors qu’une JSP le retrouve dans
l’objet application
 Exemples de méthodes:
o void setAttribute(String name, Object o) : lie un objet sous le nom indiqué
o Object getAttribute(String name) : retrouve l'objet sous le nom indiqué
o void removeAttribute(String name) : supprime l'objet lié sous le nom indiqué

19
Partage d’information entre pages JSP
(Exemple: partage d’un bean et d’un type primitif)

 Partager un objet
de type Train (un
bean) nommé
PrincipalTR entre
deux pages JSP.
 Cet objet survivra
pour toute la durée
de vie du serveur
d’application.

10
17/11/2020

20
Partage d’information entre pages JSP
(Exemple: partage d’un bean et d’un type primitif -1ère méthode)
N’oubliez pas d’importer
 Page1.jsp le bean Train dans les
deux pages

Contexte de
l’application

msg (String)

 Page2.jsp PrincipalTr
(Train)

21
Partage d’information entre pages JSP
(Exemple: partage d’un bean et d’un type primitif -2ème méthode)
N’oubliez pas d’importer
 Page1.jsp le bean Train dans les
deux pages

Contexte de
l’application

msg (String)
 Page2.jsp
PrincipalTr
(Train)

11

Vous aimerez peut-être aussi