51
Cours JSP 1 JSP Java Server Pages

Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Embed Size (px)

Citation preview

Page 1: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 1

JSP

Java Server Pages

Page 2: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 2

Introduction

Afin d’implémenter les règles métiers, coté serveur dans une application Web, l’architecture Java propose trois solutions : En pur JAVA (servlets); À l’intérieur de code HTML (pages JSP); Mixage des deux premiers solutions.

Page 3: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 3

Servlets

Page 4: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 4

Exemple Servlets

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ExempleServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse

res) throws ServletException, IOException { // positionnement du type de contenu res.setContentType("text/html"); // écriture du contenu PrintWriter out = res.getWriter(); out.println("<HTML>"); out.println("<HEAD>"); out.println("<TITLE>ExempleServlet</TITLE>"); out.println("</HEAD>"); out.println("<BODY>"); out.println("<H1 align="center">ExempleServlet</H1>"); out.println("</BODY>"); out.println("</HTML>"); out.close(); } }

Page 5: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 5

JSP

Consiste à insérer dans le code HTML des instructions qui sont exécutées sur le serveur.

Lorsque la page est sollicitée par une requête, ces instructions peuvent produire de l’HTML mais aussi accéder à une base de données et effectuer des calculs.

Page 6: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 6

Exemple JSP<%! Int compteur =0; %><HTML><BODY> Bonjour. <BR> <% compteur ++; if (compteur == 1) %> Vous etes le premier visiteur. <% else %> Vous etes le <%=compteur %> eme visiteur.</BODY></HTML>

Page 7: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 7

Solution mixte

Les solutions moderne des applications Web, permettent de mêler les deux premières solutions (Servlets et JSP)

Page 8: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 8

Eléments de JSP

Scriptlet; Déclaration de variable; Conditionnel; L’objet out; Déclaration de Tableau; Boucle for; Commentaire JSP; Traitement des formulaires; Accès aux bases de données;

Page 9: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 9

scriptlet

Afin d’indiquer au serveur que ce qui suit est du JSP, en utilise la balise <% ………. %>

Page 10: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 10

Déclaration de variable La balise <%! ……%> Permet de déclarer une variable. Exemple: <%! Int i; %> <%! Int i = 0;%> <%! Float f, g = 1.2, h; %> Remarque: l’identificateur d’une

variable doit respecter les règles des variables dans JAVA

Page 11: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 11

Conditionnel L’expression conditionnel s’effectue

par: <% if (condition) { actions } %>

Page 12: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 12

<% if (condition) { actions } else { actions } %>

Page 13: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 13

Exemple <% int i = 0; %><html><head> <title> </title></head><body><h1><% ++1;If (i==1) { out.println(‘’vous etes le premier ‘’); }Else { out.print (‘’visiteur numero ‘’); out.println(i); }%></h1></body></html>

Page 14: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 14

L’objet out

Out est un objet prédéfini dans les pages JSP qui dispose de deux méthodes : Print : pour afficher sur la page une

information syntaxe : out.print(…..); Println : pour afficher sur la page une

information avec un saut de ligne. syntaxe : out.prinln(….);

Page 15: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 15

Exemple

<%! Int i = 0;%><html><head><title>exemple objet out </title> </head><body><h1 align = center> exemple </h1><% i++;If (i==1) { out.println(‘’Vous etes le premier visiteur’’);}Else { out.println(‘’Visiteur numero ‘’ + i); }%><br> date courante : <%=new java.util.date() %></body></html>

Page 16: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 16

Déclaration de Tableau Un tableau permet de gérer plusieurs

valeur de même type. La déclaration se fait dans JAVA. Exemple:

<% double[] prix = {12.5, 14, 18}; int[] qtes = {50, 20, 30}; %>

Page 17: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 17

Boucle for La boucle for est constituée d’un en-

tête entre parenthèses et d’un corps. Syntaxe : for (variable itérative; condition

d’interaction; pas) { actions; }

Page 18: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 18

Exemple boucle for et tableau<table border> <tr> <th>Quantite</th> <th>Prix</th> </tr> <% for (int i=0; i< prix.length; i++) { out.println(‘’<tr>’’); out.print(‘’<td>’’); out.print(qtes[i]); out.print(</td>); out.print(‘’<td>’’); out.print(prix[i]); out.print(</td></tr>); %></table>

Page 19: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 19

Commentaire JSP

Un commentaire JSP s’effectue par la balise

<!-- ……… --> Remarque : si le commentaire est

dans le scriptlet c’est un commentaire JAVA.

Page 20: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 20

Traitement des formulaires

Introduction; Méthodes GET et POST; Récupération de la valeur d’un

paramètre;

Page 21: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 21

Introduction L’intérêt des formulaires est de pouvoir

introduire des données en vue d’être traitées par une logique métier.

L’utilisation de formulaire et fait en deux temps: L’utilisateur remplit un formulaire et le

soumet au serveur. Le serveur extrait les informations fournies

par l’utilisateur et les utilise pour construire la réponse.

Page 22: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 22

Method GET Si l’attribut method de la balise form

est get, le navigateur met les valeurs des paramètres dans l’en-tête de la requête elle-même.

De plus, la requête contient en clair les valeurs des paramètres et est stockée telle quelle dans l’historique, ce qui est judicieux si l’un de ces paramètres est un mot de passe.

Page 23: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 23

Method POST

Si l’attribut method de la balise form est post, le navigateur met les valeurs des paramètres dans l’en-tête de la requête elle-même.

Avec post, les valeurs des paramètres ne sont pas affichées dans l’URL.

Page 24: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 24

Récupération de la valeur d’un paramètre.

La récupération de la valeur d’un paramètre s’effectue à travers l’objet request.

Cet objet dispose d’une méthode getParameter qui cherche la valeur d’un paramètre d’un formulaire.

Page 25: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 25

Exemple de getParamater

<%String nomUtilisateur =

request.getParameter(‘’nom’’);String MotDePasse =

request.getParameter(‘’motDePasse’’);%>

Page 26: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 26

Paramètres à valeurs multiples Un paramètre peut avoir une valeur

multiple. Dans ce cas, il faut utiliser la méthode getParameterValues().

Cette méthode renvoie un tableau de chaînes de caractères.

Page 27: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 27

Exemple de paramètres à valeurs multiples

<%String[] sportsFavoris =

request.getParameterValues(‘’sp’’);Out.println(‘’<ul>’’);For (int i=0; i < sprortsFavoris.length ; i+

+) { out.println(‘’<li>’’ + sportsFavoris[i] +

‘’</li>’’);}Out.println(‘’</ul>’’);%>

Page 28: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 28

Noms des paramètres La méthode getParameterNames

permet d’obtenir un tableau contenant les noms de tous les paramètres présents dans la requête.

Page 29: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 29

Conversion d’une chaîne La méthode getParameter renvoie une chaîne

de caractères. Si le paramètre est une valeur numérique, il faut convertir la chaîne de caractères en nombre pour pouvoir l’utiliser.

Cela se fait par la méthode JAVA appropriée : Byte.parseByte; Short.parseShort; Integer.parseInt; Long.parseLong; Float.parseFloat; Double.parseDouble.

Page 30: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 30

Exemple

<%String nbLignesCh =

request.getParameter(‘’nblignes’’);Int nbLignes =

Integer.parseInt(nbLignesCh);%>

Page 31: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 31

Accès aux bases de données

Java fournit une architecture standard pour dialoguer avec les bases de données.

Affin d’assurer la compatibilité de Java avec un maximum de base de données, ses concepts ont adopté l’architecture classique de pilotes.

L’application Java (ou page JSP) utilise les mêmes instructions JDBC pour s’adresser au pilote.

Page 32: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 32

Quand un programme (une page JSP) souhaite accéder à une base, il commence par demander le chargement du pilote en mémoire.

Pour cela, il faut que la page JSP trouve ce pilote.

Page 33: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 33

Conditions d’accès à une base de données.

Installer le pilote pour que la page JSP puisse le trouver;

Dans la page JSP, demander le chargement en mémoire du pilote;

Dans la page JSP, utiliser le pilote pour établir la connexion, effectuer les requêtes souhaitées.

Page 34: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 34

Installation d’un pilote. Cette action n’est faite qu’une seul

fois, au moment du déploiement. Retrouver le pilote dans le dossier

shared de Tomcat; Copier le pilote sous forme archive jar

sans le décompacter, dans l’un des dossiers suivants:

Page 35: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 35

Option 1 d’installation du pilote

Le pilote peut être placer dans le dossier lib;

$TOMCAT_HOME/shared/lib

Redémarrer Tomcat, pour la prise en charge du pilote.

Page 36: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 36

Option 2 d’installation du pilote Le pilote peut être placer dans le

dossier

$TOMCAT_HOME/common/lib

Redémarrer Tomcat

Ceci rend le pilote accessible par toutes les applications web ainsi que Tomcat lui-même.

Page 37: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 37

Option 3 d’installation du pilote

Le pilote peut aussi être placer dans le dossier

$TOMCAT_HOME/webapps/nom_application/WEB-INFO/lib

Redémarrer l’application web «nom_application »

Page 38: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 38

Accès à partir d’une page JSPL’utilisation d’une base de données à partir de

d’une page JSP comporte les étapes suivantes:1. Avoir le droit d’accès à un serveur de base de

données;2. Disposer d’un pilote correspondant à la base;3. Charger le pilote en mémoire;4. Ouvrir une connexion vers la base;5. Effectuer des requêtes et exploiter les

résultats;6. Libérer les ressources, en particulier fermer la

connexion.Les deux premiers étapes ont déjà été réalisées.

Page 39: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 39

Chargement du pilote en mémoire Il exit plusieurs manier de charger un

pilote à partir d’une page JSP dont voici une;

Class.forName(nom de la classe);

Exemple de chargement d’un pilote «mysql» par une page JSP:

Class.forName(‘’com.mysql.jdbc.Driver’’)

Page 40: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 40

Etablissement de la connexion La connexion vers une base de donnée

se fait par:

Java.sql.Connection cnx =Java.sql.DriverManager.getConnection(urlDelaBase, login, motDePasse);

Page 41: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 41

Préparation de la requête Une fois la connexion établie, on peut

l’utiliser autant de fois qu’on le souhaite;

Pour cela, on lui demande d’instancier une requête par :

Java.sql.Statement req = cnx.createStatement();

Page 42: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 42

Exécution d’un SELECT L’exécution d’une requête SQL

SELECT se décompose on deux partie à savoir:

1. L’envoi de la requête;2. L’exploitation du résultat.

Page 43: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 43

Envoi de la requête

Pour effectuer une reqête de consultation (select), on invoque la méthode executeQuery du Statement en lui passant la requête SQL à effectuer.

Le résultat de cette requête est un ensemble de ligne représenté en JAVA par une instance de java.sql.ResultSet.

Exemple: Java.sql.ResultSet rs =

req.executeQuery(‘’SELECT * FROM Client’’);

Page 44: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 44

Exploitation des résultats

Un java.sql.Result est un moyen de parcourir le résultat d’une requête SELECT.

Un tel objet possède la méthode next.Cette méthode ne prend pas d’argument et

revoie vrai (s’il y a au moins une ligne) ou faux.

Page 45: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 45

Exploitation des résultats

Cet objet possède aussi des méthodes qui permettent de consulter le contenu de la ligne courante dans le résultat: getString(nom de la colonne); getInt(nom de la colonne); getDate(nom de la colonne); getDouble(nom de la colone);

Page 46: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 46

Exemple d’utilisation du résultat<%Out.println(‘’<table border=‘1’>’’;Out.println(‘’<tr>’’);Out.println(‘’<th>Nom</th><th>Ville</th>’’);Out.println(‘’</tr>’’);While (rs.next()) { out.println(‘’<tr>’’); out.print(‘’<td>rs.getString(‘’nom’’)</td>’’); out.print(‘’<td>rs.getString(‘’Ville’’)</td>’’); out.println(‘’</tr>’’);}Out.println(‘’</table>’’;%>

Page 47: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 47

Fermeture des différents élements

À la fin de l’utilisation d’une base de donnée il est impératif d’effectuer une fermeture de cette dernière.

Cette opération de fermeture s’effectue par le message close qui doit être envoyer respectivement à ResultSet, puis à Statement et enfin à la Connection.

Page 48: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 48

Exemple de fermeture

rs.close; req.close; cnx.close;

Page 49: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 49

Exécution d’un INSERT ou d’un UPDATE

Pour effectuer une requête de modification (insert, update), on demande au Statement la méthode executeUpdate en lui passant la requête SQL à effectuer.

On obtient en résultat le nombre de lignes qui ont été affectées par la requête.

Page 50: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 50

Exemple d’INSERT

Int nbLignes = req.executeUpdate (‘’INSERT INTO client VALUES (3,’Ali’, ‘Mohamed’, ‘Constantine’);

Page 51: Cours JSP1 JSP Java Server Pages. Cours JSP2 Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java

Cours JSP 51

Exemple d’UPDATE

Int nbLignes = req.executeUpdate (‘’UPDATE client SET ville = ‘Annaba’ WHERE nom = ‘Ali’);