0% ont trouvé ce document utile (0 vote)
7 vues144 pages

Introduction à JavaServer Pages (JSP)

Le document présente JSP (JavaServer Pages) comme un générateur dynamique de pages HTML, facilitant l'écriture de code par rapport aux servlets. Il explique le fonctionnement interne de JSP, la configuration nécessaire, ainsi que les éléments de base et les objets implicites utilisés dans le développement. De plus, il aborde des concepts comme la gestion des requêtes et réponses HTTP, les JavaBeans, et des exemples d'applications pratiques.

Transféré par

NeandertalNeander
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues144 pages

Introduction à JavaServer Pages (JSP)

Le document présente JSP (JavaServer Pages) comme un générateur dynamique de pages HTML, facilitant l'écriture de code par rapport aux servlets. Il explique le fonctionnement interne de JSP, la configuration nécessaire, ainsi que les éléments de base et les objets implicites utilisés dans le développement. De plus, il aborde des concepts comme la gestion des requêtes et réponses HTTP, les JavaBeans, et des exemples d'applications pratiques.

Transféré par

NeandertalNeander
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

JAVA ET JSP

(Java Server Pages)


JAVA – JSP

Sommaire

1.1 PRÉSENTATION____________________________________________6
1.1.1 JSP (JavaServer Page)____________________________________6
1.1.2 Fonctionnement interne___________________________________6
1.1.3 Configuration du cours___________________________________7
1.1.4 Rappel sur le protocole HTTP______________________________8
[Link] Le protocole________________________________________8
[Link] Les requêtes________________________________________9
[Link] Les réponses_______________________________________10
[Link] La gestion de l'état__________________________________11
1.2 LES ÉLÉMENTS DE BASE DE JSP______________________________12
1.2.1 L'organisation d'une page JSP_____________________________12
[Link] Le modèle MVC (Model-View-Controller)_______________13
[Link] Le mélange de codes________________________________14
[Link] Le code JSP_______________________________________15
[Link] Les 2 versions de JSP________________________________16
1.2.2 La directive de page : <%@ page %>____________________17
1.2.3 Le commentaire : <%-- --%>___________________________18
1.2.4 La déclaration : <%! %>______________________________19
1.2.5 Le scriptlet : <% %>_________________________________20
1.2.6 L'expression : <%= %>_______________________________23
1.2.7 L'inclusion : <%@ include %>_________________________24
1.2.8 La directive de bibliothèque de balises (Taglib)_______________28
1.3 LES OBJETS IMPLICITES_____________________________________29
1.3.1 L'interface request (Correspond à la requête client)____________30
[Link] Définition et méthodes_______________________________30
[Link] Récupérer des informations provenant d'une autre page_____32
[Link] Récupérer des informations sur le client et le serveur_______34
[Link] Le navigateur du client_______________________________35
[Link] Récupérer toutes les en-têtes__________________________36
[Link] Récupérer toutes les variables d'une page html____________38
[Link] Faire du jspSelf en mode GET_________________________40
[Link] Faire du jspSelf en mode POST________________________43
1.3.2 L'interface response (Correspond à la réponse envoyée au client)_44
[Link] Définition et méthodes_______________________________44
1.3.3 Les cookies____________________________________________45
[Link] Définition et méthodes_______________________________45

© Pascal Buguet Imprimé le 16 novembre 2025 Page 2


JAVA – JSP

[Link] Exemple__________________________________________46
1.3.4 L'interface session______________________________________50
[Link] Définition et méthodes_______________________________50
[Link] Exemple__________________________________________51
1.3.5 L'objet application (ServletContext)________________________53
[Link] Définition et méthodes_______________________________53
[Link] Exemple__________________________________________54
1.3.6 L'objet out_____________________________________________56
1.3.7 L'objet config__________________________________________57
1.3.8 L'objet page___________________________________________58
1.3.9 L'objet pageContext_____________________________________59
1.3.10 L'objet exception______________________________________60
1.4 LE PROBLÈME DU BLOCAGE DES COOKIES______________________64
1.4.1 Blocage des cookies et des sessions_________________________64
1.4.2 Réécriture d'URL_______________________________________65
1.5 LES JAVABEANS__________________________________________66
1.5.1 Présentation___________________________________________66
1.5.2 Structure syntaxique_____________________________________68
1.5.3 Stockage______________________________________________69
1.6 LES ÉLÉMENTS ACTION JSP_________________________________70
1.6.1 Présentation___________________________________________70
1.6.2 L'élément useBean : <jsp:useBean>________________________71
[Link] Description et syntaxe_______________________________71
[Link] Ecrans____________________________________________72
[Link] Scripts____________________________________________73
[Link] Passer toutes les valeurs en une seule fois________________75
1.6.3 Bean et scope__________________________________________76
1.6.4 L'élément setProperty : <jsp:setProperty>___________________77
[Link] Description et syntaxe_______________________________77
1.6.5 L'élément getProperty : <jsp:getProperty>__________________77
[Link] Description et syntaxe_______________________________77
1.6.6 L'élément d'inclusion : <jsp:include>_______________________78
[Link] Description et syntaxe_______________________________78
[Link] La page modèle du site_______________________________78
[Link] Inclure une page avec ou sans photo____________________80
1.6.7 L'élément de délégation : <jsp:forward>____________________84
[Link] Description et syntaxe_______________________________84
[Link] Exemple__________________________________________84
1.6.8 L'élément plugin : <jsp:plugin> (Applet)____________________86
[Link] Description et syntaxe_______________________________86
[Link] Exemple : le convertisseur Euros/Dollars________________87
1.6.9 L'élément texte : <jsp:text>_______________________________89
1.6.10 L'élément racine : <jsp:root>___________________________90

© Pascal Buguet Imprimé le 16 novembre 2025 Page 3


JAVA – JSP

1.7 MINI APPLICATION NIVEAU 1 : LE BUREAU DE CHANGE___________91


1.7.1 Cahier des charges______________________________________91
1.7.2 Ecrans________________________________________________91
1.8 TRAVAILLER AVEC UNE BASE DE DONNÉES_____________________93
1.8.1 Afficher des données d'une table via un scriptlet_______________93
1.8.2 Insérer dynamiquement un enregistrement___________________95
1.9 LA COMMUNICATION SERVLET-JSP-BEAN______________________97
1.9.1 Objectif_______________________________________________97
1.9.2 Démarche_____________________________________________99
1.9.3 Scripts_______________________________________________100
1.10 MINI APPLICATION NIVEAU 2 : JSP, BEANS ET BD______________107
1.10.1 Objectif, principes et démarche_________________________107
1.10.2 Ecrans_____________________________________________107
1.11 DIVERS________________________________________________108
1.11.1 Importer ses propres classes___________________________108
1.11.2 Internationalisation__________________________________110
[Link] Objectif________________________________________110
[Link] Le navigateur et la langue_________________________110
[Link] Premier script___________________________________111
[Link] Deuxième script_________________________________112
1.11.3 JSP et XML_________________________________________113
1.12 ANNEXES______________________________________________114
1.12.1 Utilisation d'une archive personnelle dans un projet web_____114
1.12.2 Archiver un site WEB_________________________________114
1.12.3 Le code de l'applet EurosDollars________________________115
1.13 CORRIGÉS DES EXERCICES_________________________________117
1.13.1 Testez Chrome______________________________________117
1.13.2 Les cookies_________________________________________117
1.13.3 Gestion de panier avec un cookie_______________________118
1.13.4 Les sessions________________________________________122
1.13.5 Corrigé Mini Application niveau 1 : le bureau de change____123
[Link] Tableau de synthèse______________________________123
[Link] Accueil________________________________________123
[Link] Saisie client____________________________________124
[Link] Calcul_________________________________________125
[Link] Déconnexion____________________________________125
1.13.6 Corrigé mini application niveau2 : BD___________________126
1.14 JSP ET MVC : LA BONNE PRATIQUE__________________________129
[Link] Insertion et suppression___________________________129
[Link] Affichage d'un enregistrement______________________131
[Link] Affichage de tous les enregistrements________________132
1.15 EN ATTENTE__________________________________________133
1.15.1 JavaBean ConnexionMysql____________________________133

© Pascal Buguet Imprimé le 16 novembre 2025 Page 4


JAVA – JSP

1.15.2 JavaBean Villes_____________________________________136

© Pascal Buguet Imprimé le 16 novembre 2025 Page 5


JAVA – JSP

1.1 PRÉSENTATION

1.1.1 JSP (JavaServer Page)

JSP est un générateur dynamique de pages html.

Il est possible de faire en JSP ce qui est fait avec des servlets.
L'écriture de code JSP est plus simple que l'écriture de servlets.
Une page JSP est un squelette de page html, donc avec du code html, qui
contient du code JSP et éventuellement du code Java (Scriptlet).

Les JSP prendront en charge la partie présentation dans une application WEB à
plusieurs niveaux.

La partie accès aux bases de données sera prise en compte des beans et des
EJB (Entreprise Java Beans).

Les servlets prendront en charge la partie contrôle de l'application.

1.1.2 Fonctionnement interne

La JSP, qui est stockée sur le serveur WEB – qui doit être aussi un serveur de
servlets (Jakarta-Tomcat est un serveur http de servlets) - est compilée et une
servlet est créée et chargée en mémoire. C'est elle qui exécute les traitements.

Ces deux phases (compilation et traitement de la requête client) sont réalisées


au sein du conteneur web qui lui-même contient un conteneur de servlets et un
conteneur de JSP.

Tant que la JSP ne change pas, la servlet générée demeure chargée au sein du
conteneur jusqu'à l'arrêt du serveur, exactement comme pour une servlet.

Elle se base sur les packages [Link] et [Link].

© Pascal Buguet Imprimé le 16 novembre 2025 Page 6


JAVA – JSP

1.1.3 Configuration du cours

 Serveur Apache Tomcat 5.5

Dans une configuration standard les codes sont stockés dans l'arborescence
suivante :
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\
NomDeLApplication\…

Mais selon l'IDE que vous utilisez ceci peut changer.


Avec NetBeans par exemple :

Stockage des sources :

Stockage des JSP, HTML, ... :


C:\…\NomDeLApplication\web\jsp
C:\…\NomDeLApplication\web\html

Stockage des .java (servlets, classes, beans, applets) :


C:\…\NomDeLApplication\src\java

Stockage des exécutables :

Stockage des JSP :


C:\…\NomDeLApplication\build\web\jsp

Stockage des .class (servlets, classes, beans, applets) :


C:\…\NomDeLApplication\build\web\WEB-INF\classes

Copie d'écran de l'arborescence

© Pascal Buguet Imprimé le 16 novembre 2025 Page 7


JAVA – JSP

1.1.4 Rappel sur le protocole HTTP

[Link] Le protocole

Le protocole http fonctionne de la façon suivante : un client – un navigateur WEB


principalement – envoie une requête à un serveur pour obtenir une ressource et
le serveur renvoie une réponse, la ressource ou un message d'erreur.
Une ressource peut être un simple fichier html ou un programme qui accède à
une base de données et génère une réponse dynamique.

Requête

Réponse

Demande d'une page JSP

Envoi d'une page "html"

GÉNÉRATION DU
CODE JAVA

COMPILATION
Génération
dynamique de
.
EN CLASS

la page HTML

© Pascal Buguet Imprimé le 16 novembre 2025 Page 8


JAVA – JSP

[Link] Les requêtes

La requête est envoyée par le navigateur à un serveur pour obtenir une


ressource. Ces informations sont contenues dans l'URI (Uniform Resource
Identifier) souvent dénommée URL (Uniform Resource Locator).
L'URL contient le nom du protocole, le nom du serveur, éventuellement le port si
celui-ci n'est pas le port TCP/IP standard ie le port 80, le chemin d'accè, le nom
de la ressource et éventuellement des paires attribut=valeur précédées d'un ?.

Exemple : [Link]

Le navigateur envoie un message de requête qui est composé de 3 parties :

 La ligne de requête

Elle fournit la méthode, la ressource, éventuellement des paires attribut=valeur


et la version du protocole.
Par exemple GET /java/[Link] http/1.0.

 Les en-têtes de requête

Les en-têtes fournissent des informations du type nom du Host, User-agent


(Informations sur le navigateur), Accept (Types de format de fichiers acceptés
par le navigateur),…. Cf plus loin.

 Le corps de requête

Le corps de requête existe dans le cas de requêtes POST (Des données sont
transmises par ce biais).

© Pascal Buguet Imprimé le 16 novembre 2025 Page 9


JAVA – JSP

[Link] Les réponses

Le message de réponse possède lui aussi une structure ternaire; il contient une
ligne d'état, des en-têtes de réponse et éventuellement un corps de réponse.

 La ligne de réponse

Elle fournit la version du protocole, un code résultat et une description de ce


code résultat.
Par exemple http/1.0 200 OK.

 Les en-têtes de réponse

Les en-têtes fournissent des informations du type date de dernière modification,


statut, type de contenu (Content-type : text/html ou image/gif…), … Cf plus loin.

 Le corps de réponse

Le corps de réponse est par exemple une page html.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 10


JAVA – JSP

[Link] La gestion de l'état

HTTP est un protocole sans état.

Quand le serveur envoie une réponse à une requête il oublie tout de la


transaction ie quand le client émet une deuxième requête, le serveur ne sait pas
si elle a un lien avec la première.
Le serveur renvoie dans sa réponse un id de session que le client renverra à son
tour avec l'url de la requête suivante. Ainsi il est possible de faire le lien entre les
différentes requêtes d'un même client.
On utilise aussi les cookies, les champs cachés de formulaires, les réécritures
d'URL, les variables de session pour conserver et/ou créer un état et ainsi lier les
pages d'une application.

Mais le client peut désactiver dans son navigateur les cookies et rend ainsi la
gestion de cookies et de session impossible ou plus délicate à gérer.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 11


JAVA – JSP

1.2 LES ÉLÉMENTS DE BASE DE JSP

1.2.1 L'organisation d'une page JSP

Une page JSP peut être vue selon trois points de vue.

o Le modèle MVC (Model-View-Controller),


o Le code JSP et le code non-JSP,
o Les éléments JSP.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 12


JAVA – JSP

[Link] Le modèle MVC (Model-View-Controller)

Ce modèle décrit une architecture de composants à trois niveaux :

Control

View Model BD

View : c'est la partie présentation. Ce sont les codes html et JSP.


Controller : c'est le niveau chargé du traitement des requêtes. Ce sont les
servlets.
Model : c'est la logique métier avec la manipulation des données de
l'application. Ce sont les JavaBeans, les EJB et aussi des servlets.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 13


JAVA – JSP

[Link] Le mélange de codes

Une page JSP est un fichier texte d'extension .jsp.

Une page JSP est composée de texte template et de code JSP.


Le texte template est du code HTML, XML, CSS, JavaScript et n'est pas du code
JSP. Il n'est pas interprété et est envoyé tel quel au navigateur.

<html>
<head>
<title>[Link]</title>
</head>

<body>
<%@page language="java" import="[Link]" errorPage =
"../html/[Link]" %>

<!-- Déclaration des variables -->


<%!
int liDividende = 10;
int liDiviseur = 0;
int liResultat = 0;
%>

<!-- Scriptlet JSP : du code java -->


<%
liResultat = liDividende / liDiviseur;
[Link]("<br />Résultat de la division : " + liResultat);
%>

</body>
</html>

Suite à une division par zéro par exemple.

Notes :
La page jsp est stockée dans le dossier /monApp/jsp
La page html est stockée dans le dossier /monApp/html

© Pascal Buguet Imprimé le 16 novembre 2025 Page 14


JAVA – JSP

[Link] Le code JSP

Le code JSP est composé de trois types d'éléments :

o Les directives (qui déterminent des caractéristiques au moment de la


compilation),
o Les éléments de script (qui permettent d'ajouter des éléments de code),
o Les éléments action (qui déterminent des comportements d'exécution).

Une page JSP contient du code JSP et/ou du code Java et/ou du code HTML ….
Il existe huit éléments de base plus des éléments d'action :

Elément Fonction Syntaxe


Directives
La directive de page Pour les attributs de la page <%@page … %>
<jsp:[Link]
paires
attributs=valeurs />
La directive d'inclusion Pour l'inclusion de fichiers <%@ include … %>
<jsp:[Link]
file="URLRelative" />
La directive de librairie Pour les bibliothèques de balises <%@ taglib … %>
de balises (Taglib) personnalisées. Pas de balise <jsp>
Eléments de script
La déclaration Pour la déclaration de variables de <%! … %>
page <jsp:declaration>
Le scriptlet Pour le code <% … %>
<jsp:scriptlet>
L'expression Pour renvoyer les valeurs d'une <%= … %>
expression <jsp:scriptlet>
Le commentaire Pour les commentaires <%-- … --%>
Pas de balise <jsp>
Eléments d'action
Bean Permet l'utilisation d'un JavaBean <jsp:useBean>
Propriété en lecture Permet la récupération d'une valeur <jsp:getProperty>
d'une propriété en lecture d'un
javaBean
Propriété en écriture Permet l'affectation d'une valeur d'une <jsp:setProperty>
propriété d'un javaBean
Inclusion dynamique Permet l'inclusion dynamique de code <jsp:include>
Redirection Redirige vers une page <jsp:forward>
Paramètre Déclare un paramètre <jsp:param>
Applet Génère le code html d'un Objet <jsp:plugin>

Pour la plupart des éléments il existe deux syntaxes :

La syntaxe JSP standard (JSP 1.x); les balises d'ouverture et de fermeture sont les
suivantes : <% … %>; Les pages sont d'extension .jsp.

La syntaxe XML (JSP 2.x); les balises auto-fermantes ont cette syntaxe :<jsp:
… />; les éléments pleins utilisent les balises à la syntaxe suivante : <jsp:…>
</jsp:…> ; les pages sont d'extension .jspx.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 15


JAVA – JSP

[Link] Les 2 versions de JSP

Modèle de page version 1.x généré par NetBeans

[Link]

<%--
Document : nom du document
Created on : date et heure de creation
Author : nom de l'auteur
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>

Modèle de page version 2.0 généré par NetBeans

[Link]

<?xml version="1.0" encoding="UTF-8"?>


<!--
Document : nom du document
Created on : date et heure de creation
Author : nom de l'auteur
-->
<jsp:root xmlns:jsp="[Link] version="2.0">

<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"/>

<jsp:element name="text">
<jsp:attribute name="lang">EN</jsp:attribute>
<jsp:body>Hello World!</jsp:body>
</jsp:element>

</jsp:root>

Nous allons examiner ces différents éléments.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 16


JAVA – JSP

1.2.2 La directive de page : <%@ page %>

L'élément directive de page permet de définir les attributs de la page JSP : le


langage utilisé (java), les importations de classes et/ou de packages ([Link].*,
[Link].*, …), la page invoquée en cas d'erreur, le type de contenu (text/html,
text/plain, …), l'encodage (UTF-8, ISO-8859-1, …), ...

La directive de page est placée en début de la page JSP.

 Syntaxe standard

<%@page
[language="java"]
[import="package1, package2, …"]
[errorPage="URLRelative"]
[extends="[Link]"]
[contentType="typeMime"]
[pageEncoding="encodage"]

%>

 Syntaxe XML

<jsp:[Link]
[contentType="typeMime"]
[pageEncoding="encodage"]
[language="java"]
[errorPage="URLRelative"]
[import="package1, package2, …"]
/>

Pour une page .jspx il faut en premier lieu ajouter le prologue XML :

<?xml version="1.0" encoding="UTF-8" ?>

et ensuite ajouter l'élément racine qui sera fermé à la fin de la page.

<jsp:root xmlns:jsp="[Link] version="2.0">



</jsp:root>

La directive de page est intercalée entre ces deux dernières balises.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 17


JAVA – JSP

1.2.3 Le commentaire : <%-- --%>

L'élément commentaire permet d'insérer un commentaire dans une page JSP.


L'avantage du commentaire JSP, par rapport au commentaire html, c'est qu'il
n'est pas visible lorsque le client affiche la source du code dans le navigateur.

 Syntaxe standard

<%-- Texte de commentaire --%>

 Syntaxe XML

<!-- Texte de commentaire -->

 Exemple

<!-- Scriptlet JSP : Le code -->

<%-- Commentaire de type JSP alors que le précédent est de type html --%>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 18


JAVA – JSP

1.2.4 La déclaration : <%! %>

L'élément declaration permet de définir un bloc pour la déclaration de variables


de page et de fonctions (méthodes de page).

 Syntaxe standard

<%!
déclaration1; déclaration2;
%>

 Syntaxe XML

<jsp:declaration>
déclaration1; déclaration2;
</jsp:declaration>

 Exemples

<!-- Déclaration de variables et d'une fonction -->


<%!
int liDividende = 10;
int liDiviseur = 2;
int liResultat = 0;

private int addition(int a, int b)


{
int liTotal = a + b;
return liTotal;
}
%>

<!-- Déclaration des variables -->


<jsp:declaration>
int liDividende = 10;
int liDiviseur = 2;
int liResultat = 0;

private int addition(int a, int b)


{
int liTotal = a + b;
return liTotal;
}
</jsp:declaration>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 19


JAVA – JSP

1.2.5 Le scriptlet : <% %>

L'élément scriptlet permet d'ajouter dans une page JSP un bloc d'instructions. La
déclaration de variables locales au scriptlet est possible.
Une page JSP peut être composée de plusieurs scriptlets.

 Syntaxe standard

<%
code1;
code2;
%>

 Syntaxe XML

<jsp:scriptlet>
code1;
code2;
</jsp:scriptlet>

 Exemples

<%
liResultat = liDividende / liDiviseur;
[Link]("a/b : " + liResultat);

[Link]("<br/>a + b : " + addition(liDividende, liDiviseur));


%>

<jsp:scriptlet>
liResultat = liDividende / liDiviseur;
[Link]("a/b : " + liResultat);
</jsp:scriptlet>

Note : la syntaxe XML n'autorise pas d'éléments XML dans un scriptlet. Donc pas
d'éléments XHTML (Des <br/> par exemple …).

© Pascal Buguet Imprimé le 16 novembre 2025 Page 20


JAVA – JSP

 Exemple de code

Cette première page JSP a pour objectif de montrer la structure d'une page JSP
avec les trois premiers éléments (Directive de page, déclaration, scriptlet).
Elle affiche du texte et le contenu d'une variable.

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>declarationsJSP</title>
</head>
<body>

<!-- Déclaration de variables et de fonctions -->


<%!
int liDividende = 10;
int liDiviseur = 2;
int liResultat = 0;

private int addition(int a, int b)


{
int liTotal = a + b;
return liTotal;
}
%>

<!-- Scriptlets -->


<%
liResultat = liDividende / liDiviseur;
[Link]("a/b : " + liResultat);

[Link]("<br/>a + b : " + addition(liDividende, liDiviseur));


%>

</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 21


JAVA – JSP

Version 2

<?xml version="1.0" encoding="UTF-8"?>


<jsp:root xmlns:jsp="[Link] version="2.0">
<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"/>
<html>
<head>
<title>declarationsJSPX</title>
</head>
<body>

<!-- Déclaration de variables et de fonctions -->


<jsp:declaration>
int liDividende = 10;
int liDiviseur = 2;
int liResultat = 0;

private int addition(int a, int b)


{
int liTotal = a + b;
return liTotal;
}
</jsp:declaration>

<!-- Scriptlets -->


<jsp:scriptlet>
liResultat = liDividende / liDiviseur;
[Link]("a/b : " + liResultat);
</jsp:scriptlet>
<br/>
<jsp:scriptlet>
[Link]("a + b : " + addition(liDividende, liDiviseur));
</jsp:scriptlet>

</body>
</html>
</jsp:root>

Notes :

Comme un scriptlet n'admet pas d'éléments XML, il y a une possibilité en fermant la balise <jsp:scriptlet>, écrire un
<br/> et ouvrir une autre balise <jsp:scriptlet>.
Ou bien utiliser des entités XML. Quelques-unes sont reconnues en standard. La plupart doivent être déclarées.
Dans le cas de <br/> les entités standards suffisent.

Alternative avec les entités standards (< : &lt; et > : &gt;).

<!-- Scriptlets -->


<jsp:scriptlet>
liResultat = liDividende / liDiviseur;
[Link]("a/b : " + liResultat);
[Link]("&lt;br/&gt;");
[Link]("a + b : " + addition(liDividende, liDiviseur));
</jsp:scriptlet>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 22


JAVA – JSP

1.2.6 L'expression : <%= %>

L'élément expression permet d'inclure dans une réponse http envoyée au


navigateur la valeur d'une expression Java convertie en une chaîne de
caractères.
C'est lors de la compilation que l'expression est convertie en une String. De plus
une expression pourra être incluse dans une balise comportant des éléments
d'action, ce que nous verrons plus loin.

 Syntaxe standard

<%= expression %>

 Syntaxe XML

<jsp:expression>
expression
</jsp:expression>

 Exemples

Affichage "direct" du contenu d'une variable.

<%!
int liCtr = 4;
%>

<%= "liCtr : " + liCtr %>

<jsp:declaration>
int liCtr = 4;
String libelle = "liCtr : ";
</jsp:declaration>

<jsp:expression>
[Link]([Link](liCtr))
</jsp:expression>

Notes :
Il n'y a pas de ; à la fin de l'expression.
Dans la syntaxe XML la concaténation avec + est impossible. Il faut passer par la fonction concat().

© Pascal Buguet Imprimé le 16 novembre 2025 Page 23


JAVA – JSP

1.2.7 L'inclusion : <%@ include %>

La directive d'inclusion permet d'inclure du contenu html, texte, XML ou JSP


d'un fichier.
Ceci permet d'avoir une écriture modulaire.
C'est une inclusion statique qui a lieu au moment de la compilation de la
page JSP.

 Syntaxe standard

<%@ include file="URLRelative" %>

 Syntaxe XML

<jsp:[Link] file="URLRelative" />

 Exemple

L'écran

© Pascal Buguet Imprimé le 16 novembre 2025 Page 24


JAVA – JSP

Le script maître en JSP : _modele.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Modèle JSP</title>
<link href="../css/[Link]" rel="stylesheet" type="text/css">
</head>
<body>
<div id="enTete">
<%@include file="../html/_enTete.html" %>
</div>
<div id="sommaire">
<%@include file="../html/_sommaire.html" %>
</div>
<div id="centre">
<p>CENTRE</p>
</div>
<div id="pied">
<%@include file="_pied.jsp" %>
</div>
</body>
</html>

_enTete.html

<h3>Site du cin&eacute;ma</h3>

_sommaire.html

<table>
<tr>
<td><a href="[Link]">D&eacute;partements</a></td>
<td><a href="[Link]">Villes</a></td>
<td><a href="[Link]">Arrondissements</a></td>
</tr>
</table>

_pied.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"


import="[Link],[Link]"%>
<%
SimpleDateFormat df = new SimpleDateFormat("dd MMM yyyy hh:mm");
[Link]("<br/>Date et heure à Paris : " + [Link](new Date()));
%>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 25


JAVA – JSP

Le script maître en JSPX : _modele.jspx

<?xml version="1.0" encoding="UTF-8"?>


<jsp:root xmlns:jsp="[Link] version="2.0">
<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Modèle JSPX</title>
<link href="../css/[Link]" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="enTete">
<jsp:[Link] file="_enTete.jspx" />
</div>
<div id="sommaire">
<jsp:[Link] file="_sommaire.jspx" />
</div>
<div id="centre">
<p>CENTRE</p>
</div>
<div id="pied">
<jsp:[Link] file="_pied.jspx" />
</div>
</body>
</html>
</jsp:root>

Note :

Ou <jsp:[Link] file="../html/_enTete.html" />

© Pascal Buguet Imprimé le 16 novembre 2025 Page 26


JAVA – JSP

_enTete.jspx

<?xml version="1.0" encoding="UTF-8"?>


<jsp:root xmlns:jsp="[Link] version="2.0">
<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"/>
<jsp:element name="text">
<jsp:body><h3>Site du cinéma</h3></jsp:body>
</jsp:element>
</jsp:root>

_sommaire.jspx

<?xml version="1.0" encoding="UTF-8"?>


<jsp:root xmlns:jsp="[Link] version="2.0">
<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"/>
<table>
<tr>
<td><a href="[Link]">Départements</a></td>
<td><a href="[Link]">Villes</a></td>
<td><a href="[Link]">Arrondissements</a></td>
</tr>
</table>
</jsp:root>

_pied.jspx

<?xml version="1.0" encoding="UTF-8"?>


<jsp:root xmlns:jsp="[Link] version="2.0">
<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"
language="java" import="[Link],[Link]"/>
<jsp:declaration>
Date d = new Date();
SimpleDateFormat df = new SimpleDateFormat("dd MMM yyyy hh:mm");
String lsDate = [Link](d);
String libelle = "Date et heure à Paris : ";
</jsp:declaration>

<jsp:expression>
[Link](lsDate)
</jsp:expression>
</jsp:root>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 27


JAVA – JSP

1.2.8 La directive de bibliothèque de balises (Taglib)

La directive de bibliothèque de balises permet de préciser l'utilisation de fichiers


de balises étendues ou personnalisées. Cf jstl_java.doc pour plus de détails.

 Syntaxe standard

<%@taglib prefix="préfixeTag" uri="URLDansWebXML" %>

<%@taglib prefix="c" uri="[Link] %>

 Pas de Syntaxe XML

Mais l'élément XML <jsp:root> permet de préciser l'utilisation de bibliothèques


de balises personnalisées.

<jsp:root xmlns:jsp="[Link] version="2.0"


xmlns:c="[Link]

<?xml version="1.0" encoding="UTF-8"?>


<jsp:root xmlns:jsp="[Link] version="2.0"
xmlns:c="[Link]

<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"/>

Une expression simple, une constante via $ : ${12}<br />


Une expression simple, une constante via out : <c:out value="12" /><br />
Une expression simple, une addition via $ : ${1+2}<br />
</jsp:root>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 28


JAVA – JSP

1.3 LES OBJETS IMPLICITES

Les objets implicites sont au nombre de neuf.

Objet Description
request La requête du client
response La réponse du serveur
pageContext Le contexte de la page en cours
session La session
application Gestion des éléments de niveau application
out Gestion des flux de sortie
config Contexte de configuration de la page JSP
page Gestion de l'instance de servlet générée
exception Gestion de l'exception en cours

Par définition, pour les objets implicites il n'est pas nécessaire qu'ils soient
instanciés pour que l'on puisse utiliser leurs méthodes.

Liste des bibliothèques

Objet Bibliothèque
Request [Link]
Response [Link]. httpservletresponse
Out [Link]
Session [Link]
PageContext [Link]
Application [Link]
Config [Link]
Page [Link]

© Pascal Buguet Imprimé le 16 novembre 2025 Page 29


JAVA – JSP

1.3.1 L'interface request (Correspond à la requête client)

[Link] Définition et méthodes

L'interface request permet de référencer les requêtes http du navigateur du


client au serveur.
La requête du client effectuée par un lien, un formulaire ou la saisie d'une URL
dans la barre du navigateur contient un message de requête http constitué de
trois éléments : la ligne de requête, les en-têtes de requêtes et parfois un corps
de requête. L'objet request permet de traiter ces éléments.
La ligne de requête contient l'adresse de la ressource et éventuellement des
paires attribut=valeur, la méthode employée (get, post,…) et le protocole utilisé
(http/1.0).
Les en-têtes contiennent d'autres informations (Le host, les types MIME acceptés,
les cookies, …)
Le corps de la requête est inclus dans le cas d'utilisation de la méthode POST.

Les éléments de la requête sont manipulables grâce à une instance de


[Link].

© Pascal Buguet Imprimé le 16 novembre 2025 Page 30


JAVA – JSP

Voici quelques-unes des méthodes qu'il est possible d'invoquer :

Méthodes Fonctions
setAttribute() Permet d'affecter une valeur à une variable de session ou
d'application
getAttribute("attribut") Permet de récupérer la valeur d'une variable de session ou
d'application
getParameter("attribut" Permet de récupérer la valeur d'un attribut d'une
) requête
getParameterNames() Liste des noms des attributs d'une requête (Une
Enumeration)
getParameterValues("attrib Liste des valeurs des attributs d'une requête lorsque
ut") plusieurs éléments HTML ont le même nom, par exemple des
boutons radio non exclusifs (un tableau de String[])
getCookies() Cf le paragraphe sur les cookies
getRemoteAddr() Ip du client
getRemoteHost() Host du client
getRemoteUser() User connecté
getServerName() Nom du serveur
getServerPort() Port d'écoute du serveur
getHeaderNames() Enumération des noms d'en-tête
getHeader("variable") Permet de récupérer des valeurs des en-têtes http ("User-
Agent", "host", "accept-language", …).
getHeader("referer") L'url de la page qui a requêté la page actuelle (La page
précédente)
getRequestURL() L'url de la JSP requêtée (La page actuelle)
getQueryString() Les attributs et valeurs de l'URL sous forme de chaîne
a=v&a=v…
getContextPath() La racine du site (Chemin relatif) … un peu plus haut !!!
[Link]("/") renvoie aussi la racine du site
(chemin absolu).

Pour les méthodes getAttribute(), setAttribute(), cf les paragraphes sur les objets
Session et Application.

Exemples de chemins :

[Link]() : /WebAppLibrairie
[Link]().getRealPath('/') : C:\___pascal\supports\java_supports\projetsJava\WebAppLibrairie\build\web\
[Link]('/') : C:\___pascal\supports\java_supports\projetsJava\WebAppLibrairie\build\web\

© Pascal Buguet Imprimé le 16 novembre 2025 Page 31


JAVA – JSP

[Link] Récupérer des informations provenant d'une autre page

Une page html contient deux textes et un bouton de soumission.


La méthode POST est employée.
L'utilisateur saisit son login et son mot de passe, clique sur le bouton poussoir et
la page JSP affiche les nom et mot de passe saisis pour confirmation …
Nous utiliserons la méthode getParameter("nomDeParamètre") de l'objet request.

 La page html

 La page JSP

 Le code de la page html : [Link]

<form action="../jsp/[Link]" method="post">


<label>Nom </label>
<input type="text" name="ut" value="Pascal" />
<label>Mot de passe </label>
<input type="text" name="mdp" value="secret" />
<input type="submit" />
</form>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 32


JAVA – JSP

 Le code de la page JSP : [Link]

<strong><%= [Link]("ut") %></strong>


votre mot de passe est <strong><%= [Link]("mdp") %></strong>

 Le code de la page JSPX : [Link]

<?xml version="1.0" encoding="UTF-8"?>


<jsp:root xmlns:jsp="[Link] version="2.0">

<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"/>


<jsp:expression>
[Link]("ut")
</jsp:expression>
<br/>
<jsp:expression>
[Link]("mdp")
</jsp:expression>

</jsp:root>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 33


JAVA – JSP

[Link] Récupérer des informations sur le client et le serveur

 L'écran

 Le script jsp

<!-- [Link] -->


<hr />Le client<hr />
IP client : <%= [Link]() %>
<br />RemoteHost : <%= [Link]() %>
<br />RemoteUser : <%= [Link]() %>

<hr />Le serveur<hr />


ServerName : <%= [Link]() %>
<br />ServerPort : <%= [Link]() %>

 Le script jspx

<?xml version="1.0" encoding="UTF-8"?>


<!-- [Link] -->
<jsp:root xmlns:jsp="[Link] version="2.0">

<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"/>


<hr />Le client<hr />
IP client : <jsp:expression>[Link]() </jsp:expression>
<br />RemoteHost : <jsp:expression>[Link]() </jsp:expression>
<br />RemoteUser : <jsp:expression>[Link]() </jsp:expression>

<hr />Le serveur<hr />


ServerName : <jsp:expression>[Link]() </jsp:expression>
<br />ServerPort : <jsp:expression>[Link]() </jsp:expression>

</jsp:root>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 34


JAVA – JSP

[Link] Le navigateur du client

 Objectif

 Syntaxe

[Link]("User-agent")

 Script jsp

<%
// --- [Link]
if([Link]("User-agent").indexOf("Firefox") != -1)
[Link]("Navigateur Firefox");
if([Link]("User-agent").indexOf("MSIE") != -1)
[Link]("Navigateur IE");
%>

 Script jspx

<?xml version="1.0" encoding="UTF-8"?>


<!-- [Link] -->
<jsp:root xmlns:jsp="[Link] version="2.0">

<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"/>

<jsp:scriptlet>
if([Link]("User-agent").indexOf("Firefox") != -1)
[Link]("Navigateur Firefox");
if([Link]("User-agent").indexOf("MSIE") != -1)
[Link]("Navigateur IE");
</jsp:scriptlet>

</jsp:root>

Exercice

Testez Chrome.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 35


JAVA – JSP

[Link] Récupérer toutes les en-têtes

 L'écran

 Script jsp

<%
// --- [Link]
// --- Les attributs de l'objet REQUEST
Enumeration enumHeaders = [Link]();
while([Link]())
{
Object oEnTete = [Link]();
String lsNomEnTete = [Link]();
String lsValEnTete = [Link](lsNomEnTete);
[Link]("<br />En-tête : " + lsNomEnTete + " , Valeur : " + lsValEnTete);
}
%>

NB : si les cookies ne sont pas acceptés la ligne cookie n'apparaît pas.

 Script jspx

<?xml version="1.0" encoding="UTF-8"?>


<!-- [Link] -->
<jsp:root xmlns:jsp="[Link] version="2.0">
<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"
import="[Link]"/>

<jsp:scriptlet>
Enumeration enumHeaders = [Link]();
while([Link]())
{
Object oEnTete = [Link]();
String lsNomEnTete = [Link]();
String lsValEnTete = [Link](lsNomEnTete);
[Link]("&lt;br/&gt;En-tête : " + lsNomEnTete + " , Valeur : " +
lsValEnTete);
}
</jsp:scriptlet>

</jsp:root>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 36


JAVA – JSP

L'instruction qui suit permettrait de revenir à la page précédente.

String lsPrecedente = [Link]("referer");

Exercice

Ajoutez dans une page JSP ou JSPX l'élément nécessaire pour retourner vers la
page précédente.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 37


JAVA – JSP

[Link] Récupérer toutes les variables d'une page html

La page JSP qui récupère des informations provenant d'une page HTML.

<!-- [Link] -->


<!-- Directive de page pour java : le langage, les imports, ... -->
<%@page language="java" import="[Link],[Link].*" %>

<!-- Scriptlet JSP : Le code -->


<%
Enumeration attributsUrl = [Link]();
while([Link]())
{
String lsNomAttribut = (String)[Link]();
String lsValAttribut = [Link](lsNomAttribut);
[Link]("Paramètre : " + lsNomAttribut + " , Valeur : " + lsValAttribut +
"<br />");
}
%>

 Commentaires

Après avoir récupérée la liste des paramètres de la page avec la méthode


getParameterNames(), dans une boucle sur une variable attributsUrl de type
Enumeration nous récupérons les noms des paramètres de la requête client.
A partir de ces noms nous récupérons les valeurs en utilisant la méthode
getParameter().

 Autre

Le cas des éléments de même nom.

<%
String[] attributsUrl = [Link]("rb_hobbie");

for(int i=0; i<[Link]; i++)


{
[Link](attributsUrl[i]);
}
%>

Vous pouvez tester ainsi :

[Link]
rb_hobbie=livre&rb_hobbie=musique

© Pascal Buguet Imprimé le 16 novembre 2025 Page 38


JAVA – JSP

La version JSPX

<?xml version="1.0" encoding="UTF-8"?>


<!-- [Link] -->
<jsp:root xmlns:jsp="[Link] version="2.0">

<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"


import="[Link]"/>

<jsp:scriptlet>
Enumeration attributsUrl = [Link]();
while([Link]())
{
String lsNomAttribut = (String)[Link]();
String lsValAttribut = [Link](lsNomAttribut);
[Link]("Paramètre : " + lsNomAttribut + " , Valeur : " + lsValAttribut);
</jsp:scriptlet>
<br/>
<jsp:scriptlet>
}
</jsp:scriptlet>
</jsp:root>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 39


JAVA – JSP

[Link] Faire du jspSelf en mode GET

 Objectif

Travailler sur la même page.

 Démarche

Récupérer la présence d'attributs dans l'URL avec [Link]().


Affecter à l'attribut action du formulaire [Link]("referer"), ie la
page elle-même.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 40


JAVA – JSP

 Script

[Link]

<%@page contentType="text/html" pageEncoding="UTF-8" language="java"


autoFlush="true" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>
<form action="<%= lsDestination %>" method="get">
<label>Nom : </label>
<input type="text" name="nom" value="Tintin" />
<input type="submit" />
</form>

<%! String lsDestination = ""; %>


<%
if([Link]() != null)
{
lsDestination = [Link]("referer");
[Link]("Votre nom : " + [Link]("nom") + "<br />");
}
%>
</body>
</html>

Note : plus simple. Soit avec <form action="" method="get"> ou encore <form>
mais pas très W3C la dernière!

<form action="" method="get">


<label>Nom : </label>
<input type="text" name="nom" value="Tintin" />
<input type="submit" />
</form>

<%
if([Link]() != null)
{
[Link]("Votre nom : " + [Link]("nom"));
}
%>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 41


JAVA – JSP

[Link]

<?xml version="1.0" encoding="UTF-8"?>


<!-- [Link] -->
<jsp:root xmlns:jsp="[Link] version="2.0">
<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"/>

<form action="" method="get">


<label>Nom : </label>
<input type="text" name="nom" value="Tintin" />
<input type="submit" />
</form>

<jsp:scriptlet>
if([Link]() != null)
{
[Link]("Votre nom : " + [Link]("nom"));
}
</jsp:scriptlet>

</jsp:root>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 42


JAVA – JSP

[Link] Faire du jspSelf en mode POST

En mode POST il n'y a pas d'attributs dans l'url. La démarche consiste à savoir si
la requête vers la page provient de la page elle-même ou pas.
C'est avec [Link]("referer") que l'on teste la provenance de la
requête.
On compare ce dernier résultat avec [Link]() concaténé avec
http:// + [Link]() + ":" + [Link]().

[Link]

<%
if([Link]("referer") != null)
{
String lsSelf = "[Link] + [Link]() + ":" +
[Link]() + [Link]();

if([Link]("referer").equals(lsSelf))
{
[Link]("<br/>Votre nom : " + [Link]("nom") + "<br />");
}
}
%>

<form action="" method="post">


<label>Nom : </label>
<input type="text" name="nom" value="Tintin" />
<input type="submit" />
</form>

[Link]

<?xml version="1.0" encoding="UTF-8"?>


<!-- [Link] -->
<jsp:root xmlns:jsp="[Link] version="2.0">

<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"/>

<jsp:scriptlet>
if([Link]("referer") != null)
{
String lsSelf = "[Link] + [Link]() + ":" +
[Link]() + [Link]();

if([Link]("referer").equals(lsSelf))
{
[Link]("Votre nom : " + [Link]("nom"));
}
}
</jsp:scriptlet>

<form action="" method="post">


<label>Nom : </label>
<input type="text" name="nom" value="Tintin" />
<input type="submit" />
</form>

</jsp:root>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 43


JAVA – JSP

1.3.2 L'interface response (Correspond à la réponse envoyée au client)

[Link] Définition et méthodes

L'interface response permet de référencer les réponses du serveur au


navigateur du client.
Il correspond à une instance de [Link].

Principales méthodes :

Méthode Fonction
AddCookie(c) Cf le paragraphe suivant
sendRedirect("url absolue") Redirige vers une URL absolue (C'est son avantage et
inconvénient).
Cf plus loin [Link]("chemin") qui redirige
vers une url relative et permet la transmission de valeurs.

NB : cf l'objet out qui est surtout employé pour envoyer la réponse au client.

Exemple de redirection :

<%
String lsDestination = "[Link] + [Link]() + ":" +
[Link]() + [Link]() +
"/jsp/[Link]";

[Link](lsDestination);
%>

ou

<%
String lsDestination = "[Link]"; // --- Si dans le même
dossier
[Link](lsDestination);
%>

lsDestination contient :
[Link]

Parce que :

[Link]() renvoie le nom du serveur (localhost par exemple),


[Link]() renvoie le port du serveur (8085 par exemple),
[Link]() renvoie la racine de l'application (/WebAppJSP par
exemple).

© Pascal Buguet Imprimé le 16 novembre 2025 Page 44


JAVA – JSP

1.3.3 Les cookies

[Link] Définition et méthodes

Un cookie est une petite quantité d'informations envoyée par le serveur au


navigateur et stockée sur le poste du client.
Ces informations persistantes peuvent être relues au cours de la session ou lors
d'une autre session si une durée de vie a été précisée.
Les cookies sont écrits via l'objet response.
Les cookies sont lus via l'objet request (Ils sont dans l'en-tête de requête).
Le client peut désactiver les cookies via son navigateur pour des motifs de
sécurité ou de confidentialité.
Cette technique est donc peu fiable dans le contexte d'internet.
Cette limitation touche aussi la gestion des sessions (cf paragraphe suivant).

Les principales méthodes sont les suivantes :

Méthode Fonction
Cookie cookie = new Cookie("NomDuCookie", Constructeur de la classe
"valeurDuCookie") cookie
[Link](cookie) Ajoute un cookie
[Link](secondes) Etablit la durée de vie d'un
cookie

[Link]() Renvoie un tableau de cookies


[Link]() Renvoie le nom d'un cookie
[Link]() Renvoie la valeur d'un cookie
[Link]() Renvoie la durée de vie d'un
cookie

© Pascal Buguet Imprimé le 16 novembre 2025 Page 45


JAVA – JSP

[Link] Exemple

 Objectif

Ecrire et lire un cookie.

 Ecrans

© Pascal Buguet Imprimé le 16 novembre 2025 Page 46


JAVA – JSP

 Scripts

Ecriture des cookies

[Link]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<title>[Link]</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form method="get" action="../jsp/[Link]">
<label>Pr&eacute;nom : </label>
<input type="text" name="prenom" value="Julia" />
<label>Nom : </label>
<input type="text" name="nom" value="Roberts" />
<input type="submit" value="Valider" />
</form>
</body>
</html>

[Link]

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>
<%
Cookie lCookieNom, lCookiePrenom;

lCookieNom = new Cookie("nom", [Link]("nom"));


[Link](3600); // --- Une heure
[Link](lCookieNom);

lCookiePrenom = new Cookie("prenom", [Link]("prenom"));


[Link](lCookiePrenom);
%>
<label>Les cookies sont cr&eacute;&eacute;s</label>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 47


JAVA – JSP

Lecture des cookies

[Link]

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>
<%
Cookie laCookie[];
Cookie lCookie;
String lsNomCook, lsValeurCook;

laCookie = [Link]();

if(laCookie != null)
{
for(int i=0; i<[Link]; i++)
{
lCookie = laCookie[i];
lsNomCook = [Link]();
if([Link]("nom") || [Link]("prenom"))
{
lsValeurCook = [Link]();
[Link](lsNomCook + ":" + lsValeurCook + "<br />");
}
}
}
%>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 48


JAVA – JSP

Exercices

1- Détruisez les cookies précédents.

2 - Gestion de panier avec un cookie.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 49


JAVA – JSP

1.3.4 L'interface session

[Link] Définition et méthodes

Cette interface permet de créer une session entre un client et un serveur HTTP.
La session persiste pendant une période de temps déterminée, du début de la
connexion du client jusqu'à sa déconnexion. Une session correspond à un
utilisateur. Le serveur lors d'une session peut créer des variables de session (si
les cookies sont acceptés).

L'interface session permet de référencer le contexte de la session.


Il correspond à une instance de [Link].

Les principales méthodes sont les suivantes :

Méthode Fonction
setAttribute("nomDeVariable", Crée et/ou affecte une valeur à une variable de
"valeur") session
Var = getAttribute("nomDeVariable") Récupère une valeur d'une variable de session
removeAttribute("nomDeVariable") Supprime une variable de session

getId() Récupère l'ID de la session


isNew() Récupère True ou False selon l'état de la session

© Pascal Buguet Imprimé le 16 novembre 2025 Page 50


JAVA – JSP

[Link] Exemple

 Objectif

Créer et utiliser une variable de session et contrôler l'état de la session.


Trois variables sont créées (Les valeurs devraient provenir de saisies de
l'utilisateur dans une page html ou jsp) et sont ensuite récupérées.

 Ecrans

© Pascal Buguet Imprimé le 16 novembre 2025 Page 51


JAVA – JSP

 Scripts

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>session_1.jsp</title>
</head>
<body>
<%
String lsLogin = "Pascal";
String lsMdp = "secret";
int liCtr = 0;

[Link]("login", lsLogin);
[Link]("mdp", lsMdp);
[Link]("Entier", [Link](liCtr));
%>
L'id de la session est : <%= (String)[Link]() %>
<br />La session est-elle nouvelle ? <%= [Link]() %>

<br /><a href="session_2.jsp">Afficher les variables de session</a>


</body>
</html>

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>session_2.jsp</title>
</head>
<body>
Votre login : <%= (String)[Link]("login") %>
<br />Votre mot de passe : <%= (String)[Link]("mdp") %>
<br />L'id de la session est : <%= (String)[Link]() %>
<br />La session est-elle nouvelle ? <%= [Link]() %>
</body>
</html>

Exercice

Détruisez la variable de session [mdp].

© Pascal Buguet Imprimé le 16 novembre 2025 Page 52


JAVA – JSP

1.3.5 L'objet application (ServletContext)

[Link] Définition et méthodes

L'objet application permet de référencer le contexte de l'application.


Il correspond à une instance de [Link].

Les principales méthodes sont les suivantes :

Méthode Fonction
setAttribute("nomDeVariable", valeur) Crée une variable de niveau application
getAttribute("nomDeVariable") Renvoie la valeur d'une variable de niveau
application
getInitParameter("nom d'un Renvoie le paramètre d'initialisation
paramètre d'init de [Link]")
getMimeType("nomDeFichier") Renvoie le type mime d'un fichier
getRealPath("chemin") Renvoie le chemin absolu du site
getServerInfo() Renvoie des informations sur le serveur de
servlets
getMajorVersion() Version
getMinorVersion() Version
getResourceAsStream("/ressource") Lit un flux

Exemples

<%
[Link]([Link]() + ":" + [Link]() +
[Link]());
%>

renvoie : localhost:8085/WebAppJSP

alors que

<%
[Link]([Link]("/"));
%>

renvoie : C:\___pascal\supports\java_supports\projetsJava\WebAppJSP\build\web\

MimeType()

<%
String mimeType;
mimeType = [Link]("[Link]"); // --- renvoie image/gif
//mimeType = [Link]("[Link]"); // --- renvoie image/jpeg
//mimeType = [Link]("[Link]"); // --- renvoie text/plain
//mimeType = [Link]("[Link]"); // --- renvoie text/html
//mimeType = [Link]("jsp_02_07.jsp"); // --- renvoie null
[Link]("<br/>" + mimeType);
// etc
%>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 53


JAVA – JSP

[Link] Exemple

 Objectif

Utiliser l'objet application, en gérant un compteur global, …

 Ecran

 Script

<%@page contentType="text/html" pageEncoding="UTF-8"


import="[Link],[Link].*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>application_2.jsp</title>
</head>
<body>
<%!
String isCompteur = null;
int iiCompteur = 0;
%>

<%
[Link]("Server information : " + [Link]());

// --- Parametres d'init


Enumeration parametresInit;
parametresInit = [Link]();
while([Link]())
{
Object suivant = [Link]();
[Link]("<br/>Init param : " + [Link]());
}

// --- Variable globale


isCompteur = (String)[Link]("compteurGlobal");
if([Link]("compteurGlobal") == null)
[Link]("compteurGlobal", "0");
else
{
iiCompteur = [Link](isCompteur);
iiCompteur++;
[Link]("compteurGlobal", [Link](iiCompteur));

© Pascal Buguet Imprimé le 16 novembre 2025 Page 54


JAVA – JSP

}
[Link]("<br/>Compteur global : " + iiCompteur);

// --- Lecture d'un stream


InputStream stream = [Link]("/[Link]");
int liLus;
byte[] tampon = new byte[1024];
try
{
liLus = [Link](tampon);
if(liLus > 0)
{
[Link]("<br/>Contenu du fichier");
[Link]("<pre>");
for(int i=0; i<liLus; i++)
{
char lc = (char)tampon[i];
[Link]([Link](lc));
}
[Link]("</pre>");
}
}
catch(Exception err) { [Link]([Link]()); }
%>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 55


JAVA – JSP

1.3.6 L'objet out

 Définition

L'objet out permet de référencer le flux de données envoyé au client.


Il correspond à une instance de [Link].

Nous avons plusieurs fois utilisé l'objet out et sa méthode print() pour afficher
des informations dans une page.

 Les principales méthodes

Méthodes Fonctions
print() Affiche une chaîne
println() Idem avec un saut de ligne dans le code
write() Idem
close() Ferme le canal
clear() Vide la sortie
clearBuffer() Vide le buffer
flush() Vide le buffer vers la destination
getBufferSize() Renvoie la taille du buffer

© Pascal Buguet Imprimé le 16 novembre 2025 Page 56


JAVA – JSP

Les objets Config, Page et PageContext sont peu utilisés.

1.3.7 L'objet config

 Définition et méthodes

L'objet config permet de référencer le contexte de la configuration de la page


JSP.
Il correspond à une instance de [Link].

Les principales méthodes sont les suivantes :

Méthode Fonction
getInitParameter("paramè Renvoie la valeur d'un paramètre d'initialisation
tre")
getInitParameterNames() Renvoie les noms des paramètres d'initialisation
getServletContext() Renvoie un contexte de servlet
Quelque chose comme cela :
[Link]@5dc994
getServletName() Renvoie le nom de la servlet

 Objectif

Récupérer le nom de la servlet.

 Ecran

Note : devrait afficher [Link].

 Script

<%@ page language="java" %>


Nom de la servlet : <%= [Link]() %>

NB : il permet d'initialiser une page via [Link] comme c'est la cas avec une servlet. Cf les annexes dans le support sur les
servlets.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 57


JAVA – JSP

1.3.8 L'objet page

 Définition et méthodes

L'objet page permet de référencer le contexte de la page JSP.


Il correspond à une instance de [Link].
Il correspond à this.
De ce fait il n'est pas utilisé.

<%
[Link]("<br />Page : " + [Link]());
[Link]("<br />This : " + [Link]());
[Link]("<br />Class : " + [Link]().toString());
%>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 58


JAVA – JSP

1.3.9 L'objet pageContext

 Définition

L'objet pageContext permet de référencer le contexte de la page JSP.


Il correspond à une instance de [Link].
 Les principales méthodes

Méthode Fonction
forward("chemin") Renvoie la requête courante vers un autre composant actif de
l'application. Le chemin est relatif.
getAttribute() Renvoie un attribut
getAttributesNamesInSco Renvoie une liste d'attributs
pe()
getAttributesScope() Renvoie une liste d'attributs
getOut() Renvoie le JspWriter de la page courante
getPage() Renvoie l'instance de la page
getRequest() Renvoie la requête courante
getResponse() Revoie la réponse courante
getServletConfig() Renvoie la configuration de la JSP
getServletContext() Renvoie le contexte de la JSP
getSession() Renvoie la HttpSession courante

 Exemples

Dans l'arborescence c:\….\WebAppJSP\


La page [Link] avec [Link]("[Link]") redirige vers la page [Link]. Il
n'est possible que d'aller au même niveau ou en-dessous. Pas au dessus.

Cf [Link]("url") pour des chemins absolus.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 59


JAVA – JSP

1.3.10 L'objet exception

 Définition et méthodes

L'objet exception permet de référencer l'exception courante.


Il correspond à une instance de [Link].
Il est présent seulement dans les pages d'erreurs jsp et permet ainsi
récupération et débogage.

Principales méthodes :

Méthode Fonction
toString() Renvoie le message d'erreur (classe d'exception + erreur)
getMessage() Renvoie l'erreur

La page génératrice doit avoir cette directive de page :

<%@page language="java" errorPage="[Link]" %>

La page d'erreur doit avoir cette directive de page … si c'est une page jsp :

<%@page language="java" isErrorPage="true" %>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 60


JAVA – JSP

 Ecran de saisie

 Ecran standard

Si une erreur survient, nous avons ceci !!!

© Pascal Buguet Imprimé le 16 novembre 2025 Page 61


JAVA – JSP

 Ecran personnalisé

 Scripts

La page HTML, la page JSP de calcul et la page JSP d'erreurs.

<html>
<head><title>[Link]</title></head>
<body>
<form action="[Link]" method="get">
Dividende : <input name="dividende" type="text" value="12" />
Diviseur : <input name="diviseur" type="text" value="0" />
<input type="submit" />
</form>
</body>

<html>
<head><title>[Link]</title></head>
<body>
<%@page language="java" import="[Link]" errorPage="[Link]" %>
<%!
int liDividende;
int liDiviseur;
int liResultat;
%>
<%
liDividende = [Link]([Link]("dividende"));
liDiviseur = [Link]([Link]("diviseur"));
liResultat = liDividende / liDiviseur;
[Link]("<br />Résultat de la division : " + liResultat);
%>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 62


JAVA – JSP

La page JSP d'erreur

<html>

<head><title>[Link]</title></head>

<body>
<%@page language="java" isErrorPage="true" %>

Vous êtes dans l'erreur


<blockquote>
<%
[Link]("<br />getMessage() : " + [Link]());
[Link]("<br />toString() : " + [Link]());

[Link]("<br />[Link] ...() : ");


[Link]((String)[Link]("sourcePage"), exception);
%>
</blockquote>

Le message d'erreur qui se trouvait dans le fichier [[Link]] a


été envoyé à l'administrateur.<br />
Vous pouvez tentez une nouvelle division.<br />
Si le problème persiste veuillez contacter l'administrateur à <a
href="#">Administrateur de services!!!</a> ou prendre de l'ASPirine-net.
</body>

</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 63


JAVA – JSP

1.4 LE PROBLÈME DU BLOCAGE DES COOKIES

1.4.1 Blocage des cookies et des sessions

Lorsque le client, pour un motif ou un autre, décide de refuser les cookies, il


devient impossible de gérer la persistance via les cookies ou les sessions.

Deux solutions de contournement sont possibles :

 La réécriture d'URL.
 La gestion de champs cachés (cf support sur les servlets).

© Pascal Buguet Imprimé le 16 novembre 2025 Page 64


JAVA – JSP

1.4.2 Réécriture d'URL

 Technique

[Link]("[Link]") dans un lien ou une redirection.

 Ecrans

Quand les cookies sont acceptés.

Quand les cookies sont refusés.

Malgré le refus des cookies, la variable de session est conservée.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 65


JAVA – JSP

 Scripts

<%@page contentType="text/html;charset=iso-8859-1" language="java" errorPage="" %>


<html>
<head>
<title>ReecritureDUrl</title>
</head>

<body>
<%
String v1 = "10";
[Link]("sv1", v1);
[Link]("<br /><br />\n<a href='" +
[Link]("[Link]") + "'>"+ "[Link]"
+"</a>");

v1 = (String)[Link]("sv1");
[Link]("<br />Variable de session sv1 'envoyée' : " + v1);
%>
</body>
</html>

<%@page contentType="text/html;charset=iso-8859-1" language="java" errorPage="" %>


<html>
<head>
<title>ReecritureDUrlSuite</title>
</head>

<body>
<%
[Link]("<br />Variable de session sv1 : " + [Link]("sv1"));
%>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 66


JAVA – JSP

1.5 LES JAVABEANS

1.5.1 Présentation

Les JavaBeans, tels qu'ils sont définis par SUN, s'appliquent en premier lieu aux
composants graphiques réutilisables.
Les définitions ici présentes s'appliquent au domaine des JSP.

Un JavaBean est un composant java réutilisable.

Un JavaBean peut être un simple conteneur; il ne contient que des données; c'est
un bean de valeurs.

S'il implémente une logique métier, avec des actions, la partie modèle du MVC
c'est un bean utilitaire.

Dans une application basée sur les JSP, les JavaBeans structurent et réduisent la
quantité de code java (scriptlet) à insérer dans le code JSP.

Dans une application basée sur les JSP et les servlets les JavaBeans vont servir à
stocker et transporter des informations entre les "deux mondes" (Contrôleur et
Vue).

Il préfigure la structuration d'une application avec les EJB.

Bibliographie : [Link]

© Pascal Buguet Imprimé le 16 novembre 2025 Page 67


JAVA – JSP

1.5.2 Structure syntaxique

Un ensemble de spécifications particulières concernent les JavaBeans


([Link]

Un JavaBean est une classe :

 sérialisable; il est ainsi possible de sauvegarder et restaurer l'état d'une


instance.
 qui possède un constructeur sans argument.
 qui dispose d'attributs privés.
 dont les attributs sont en lecture et/ou écriture via des méthodes publiques.
 qui peut contenir des méthodes d'interception d'événements (Des
listeners).
 qui peut aussi être génératrice d'événements.
 qui supporte l'introspection.

Les noms sont conformes aux directives suivantes :

 Le nom d'un attribut est camélisé et commence par une miniuscule.


 Une propriété en écriture sera accessible via une méthode nommée
setXxx(argument) et sera void.
 Une propriété en lecture sera accessible via une méthode nommée
getXxx() sans argument et renverra une valeur.

private String nom;

public void setNom(String nom)


{
[Link] = nom;
}
public String getNom()
{
return [Link];
}

Les types peuvent être des types simples, des types indexés (tableaux), des
classes java.

Lorsque l'on passe des valeurs à un JavaBean, dans une JSP, à partir des données
saisies dans un formulaire HTML ou JSP, si la propriété [name] des éléments de
formulaire est identique au nom de la propriété du JavaBean, le passage se fait
de façon transparente et même en bloc.

Si la propriété "get" renvoie un booléen il est admis de la nommer isXxx.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 68


JAVA – JSP

1.5.3 Stockage

Un JavaBean (.class) est stocké dans le dossier classes des WEB-INF.


Comme il doit être dans un package il sera stocké dans
/WEB-INF/classes/NomDuPackage/[Link].

Stockage des sources des JavaBeans (.java) avec NetBeans.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 69


JAVA – JSP

1.6 LES ÉLÉMENTS ACTION JSP

1.6.1 Présentation

Alors que les éléments de directive, qui sont examinés et fixés lors de la phase
de compilation, déterminent la nature de la page JSP, que les éléments de
déclaration et de script permettent d'ajouter du code java – ce qui doit toujours
être fait avec une extrême parcimonie pour faciliter la maintenance et rester
dans une logique JSP, et que les objets implicites permettent de gérer les
requêtes clients et l'état de l'application - via les cookies, la session et
l'application - les éléments action qui sont les éléments d'exécution, propres à
l'application que vous êtes en train de construire, sont évalués lors de
l'exécution.

Les éléments Action proposent principalement quatre fonctionnalités :

 Utiliser les JavaBeans.


 Effectuer des inclusions dynamiques.
 Effectuer des redirections et des transferts entre pages.
 Supporter des Applets.

La version 2 introduit les éléments <jsp:text> et <jsp:root>.

<jsp:root xmlns:jsp="[Link] version="2.0">

<jsp:[Link] contentType="text/html" pageEncoding="UTF-8"/>

<!-- any content can be specified here, e.g.: -->


<jsp:element name="text">
<jsp:attribute name="lang">EN</jsp:attribute>
<jsp:body>Hello World!</jsp:body>
</jsp:element>

</jsp:root>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 70


JAVA – JSP

1.6.2 L'élément useBean : <jsp:useBean>

[Link] Description et syntaxe

Cet élément permet d'utiliser des composants JavaBeans (pas des EJB) dans des
pages JSP.
Ceci permet d'implémenter l'architecture n-tiers.
La page JSP implémentera la couche présentation de l'application, et le JavaBean
implémentera la couche métier et/ou une partie, la couche DAO complétera
éventuellement le schéma.

 Syntaxe

<%@page import="nomDuPackage.*" %>

<jsp:useBean id="identifiantDuBean" scope="portée"


class="[Link]" />

<%@page import… %> Import de la classe du bean (facultatif)


<jsp:useBean…/> Balise de bean
id Identifiant de l'élément bean dans la page
scope Portée : page (*), request, session, application
class Le nom de la classe bean

(*) Par défaut la portée est page.

 Exemple

<jsp:useBean id="bed" scope="page" class="[Link]" />

Dans un premier exemple nous allons utiliser un bean qui stocke et restitue des
valeurs et des résultats de calcul.
Nous utiliserons les éléments setProperty et getProperty dont les syntaxes sont
exposées dans les paragraphes suivants.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 71


JAVA – JSP

[Link] Ecrans

© Pascal Buguet Imprimé le 16 novembre 2025 Page 72


JAVA – JSP

[Link] Scripts

 Script du bean

package beans;

import [Link];

// ------------------------------------------------
public class BeanEuroDollar implements Serializable
{
// --- Propriétés private
private String cours;
private String euros;
private String dollars;

// --- Constructeur sans argument


public BeanEuroDollar()
{
}
// --- Méthodes
// -------------------------------
public void setCours(String cours)
{
[Link] = cours;
}
// ---------------------
public String getCours()
{
return [Link];
}
// -------------------------------
public void setEuros(String euros)
{
[Link] = euros;
}
// ---------------------
public String getEuros()
{
return [Link];
}
// -----------------------------------
public void setDollars(String dollars)
{
[Link] = dollars;
}
// -----------------------
public String getDollars()
{
double ldDollars = 0;

ldDollars = [Link]([Link]) /
[Link]([Link]);
DecimalFormat fmt = new DecimalFormat("#.00");
[Link] = [Link](ldDollars);

return [Link];
}
}

© Pascal Buguet Imprimé le 16 novembre 2025 Page 73


JAVA – JSP

 Script de la page html

<title>beans_3.html</title>
<form action="../jsp/Beans_3.jsp" method="post">
<label>Cours du dollar : </label>
<input name="cours" type="text" value="0.90" size="5" />
<label>Montant Euros : </label>
<input name="euros" type="text" value="10.0" size="5" />
<input type="submit" />
</form>

 Script de la page JSP

<%@page language="java" %>


<title>Beans_3.jsp</title>
<% String lsCours = [Link]("cours");%>
<% String lsEuros = [Link]("euros");%>

<jsp:useBean id="bed" scope="page" class="[Link]" />


<jsp:setProperty name="bed" property="cours" value="<%= lsCours %>" />
<jsp:setProperty name="bed" property="euros" value="<%= lsEuros %>" />

Le cours du dollar : <jsp:getProperty name="bed" property="cours" />


<br />Le montant en euros : <jsp:getProperty name="bed" property="euros" />
<br />Le montant en dollars (Calcul) : <jsp:getProperty name="bed"
property="dollars" />

Note : Les noms des éléments du formulaire sont identiques aux noms des propriétés du JavaBean.

 Commentaires

La page HTML permet la saisie de valeurs. Notez que le nom de l'élément HTML
est [cours] et sera repris par le bean. Autrement il faudrait passer par l'attribut
value de la balise setProperty. C'est ce que nous verrons au paragraphe suivant.
Dans le script – du pur JSP – nous utilisons les trois balises pour les beans –
useBean, setProperty, getProperty.

L'id "bed" est l'abréviation de BeanEuroDollar.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 74


JAVA – JSP

[Link] Passer toutes les valeurs en une seule fois

Montrer l'utilisation du <jsp:setProperty … property="*"> pour une maintenance


plus aisée.
Il n'est pas nécessaire de rajouter une ou plusieurs lignes pour affecter les
valeurs des éléments HTML si les propriétés du bean sont identiques aux noms
des éléments du formulaire de la page HTML et donc aux attributs de l'URL.

<%@page language="java" %>


<title>Beans_3b.jsp</title>

<jsp:useBean id="bed" scope="page" class="[Link]" />

<jsp:setProperty name="bed" property="*" />

Le cours du dollar : <jsp:getProperty name="bed" property="cours" />


<br />Le montant en euros : <jsp:getProperty name="bed" property="euros" />
<br />Le montant en dollars (Calcul) : <jsp:getProperty name="bed"
property="dollars" />

Notes : toutes les propriétés sont affectées grâce à property="*"

© Pascal Buguet Imprimé le 16 novembre 2025 Page 75


JAVA – JSP

1.6.3 Bean et scope

 Objectif

Montrer que deux (ou plusieurs) JSP accèdent aux mêmes valeurs d'un Bean.

 Scripts

<%@page language="java" contentType="text/html" import="beans.*" %>


<html>
<title>Beans_2a.jsp</title>
<body>

<jsp:useBean id="bed" class="[Link]" scope="session" >


<jsp:setProperty name="bed" property="cours" value="50" />
</jsp:useBean>

</body>
</html>

<%@page language="java" contentType="text/html" import="beans.*" %>


<html>
<title>Beans_2b.jsp</title>
<body>

<jsp:useBean id="bed" class="[Link]" scope="session" />


<label>Cours : </label><jsp:getProperty name="bed" property="cours" />

</body>
</html>

Scope : la portée prend 4 valeurs possibles.

Page Niveau page (Valeur par défaut)


Request Niveau requête et donc aussi les pages forwardées
Session Session
Application Application

Etant donné le fonctionnement des variables de session (Si les cookies sont
bannis les variables de session sont bannies aussi et donc le passage par des
JavaBeans de niveau session ne passent pas).

© Pascal Buguet Imprimé le 16 novembre 2025 Page 76


JAVA – JSP

1.6.4 L'élément setProperty : <jsp:setProperty>

[Link] Description et syntaxe

Permet d'affecter une valeur à une propriété d'un JavaBean.

 Syntaxe

<jsp:setProperty name=" nomDuBean " property="nomDePropriété"


value="valeur" />

<jsp:setProperty…/ La balise pour référencer la propriété en écriture


>
Name Le nom de la référence JavaBean
Property Le nom de la propriété privée,
Value La valeur de la propriété privée, accessible par une méthode
publique dont le nom est composé de la façon suivante
setNomPropriété.

 Exemple

<jsp:setProperty name="bed" property="cours" value="<%= lsCours %>" />

1.6.5 L'élément getProperty : <jsp:getProperty>

[Link] Description et syntaxe

Permet de récupérer une valeur d'une propriété d'un bean.

 Syntaxe

<jsp:getProperty name="nomDuBean" property="nomDePropriété" />

<jsp:getProperty…/ La balise pour référencer la propriété en lecture


>
Name Le nom de la référence JavaBean
Property Le nom de la propriété privée, accessible par une méthode publique
dont le nom est composé de la façon suivante getNomPropriété.

 Exemple

Montant en dollars : <jsp:getProperty name="bed" property="dollars" />

© Pascal Buguet Imprimé le 16 novembre 2025 Page 77


JAVA – JSP

1.6.6 L'élément d'inclusion : <jsp:include>

[Link] Description et syntaxe

A la différence de la directive d'inclusion, l'élément d'inclusion permet d'inclure


dans une page JSP des ressources statiques et dynamiques. La résolution est
faite au moment de l'exécution.

 Syntaxe

<jsp:include page="URL | <%= expression %>" flush="true" />

ou

<jsp:include page="URL | <%= expression %>" flush="true" />


<jsp:param name="nomDeParametre" value="valeur | <%= expression
%>"
</jsp:include>

Dans les deux cas vous pouvez passer une URL absolue ou relative ou le résultat
d'une expression.
Dans le deuxième cas il est possible de passer un ou plusieurs paramètres à la
page incluse. Les valeurs des paramètres peuvent être le résultat d'une
expression.

[Link] La page modèle du site

L'objectif est d'utiliser des pages statiques disponibles pour plusieurs pages JSP.

 Ecran

© Pascal Buguet Imprimé le 16 novembre 2025 Page 78


JAVA – JSP

 Scripts

_modele2.jspx (Une partie du script)

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<div id="enTete">
<jsp:include page="../html/_enTete.html" flush="true" />
</div>
<div id="sommaire">
<jsp:include page="../html/_sommaire.html" flush="true" />
</div>
<div id="centre">
<p>CENTRE</p>
</div>
<div id="pied">
<jsp:include page="_pied.jsp" flush="true" />
</div>

_enTete.html

<h3>Site du cin&eacute;ma</h3>

_sommaire.html

<table>
<tr>
<td><a href="[Link]">D&eacute;partements</a></td>
<td><a href="[Link]">Villes</a></td>
<td><a href="[Link]">Arrondissements</a></td>
</tr>
</table>

_pied.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"


import="[Link],[Link]"%>
<%
SimpleDateFormat df = new SimpleDateFormat("dd MMM yyyy hh:mm");
[Link]("<br/>Date et heure à Paris : " + [Link](new Date()));
%>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 79


JAVA – JSP

[Link] Inclure une page avec ou sans photo

 Objectif

L'objectif est de permettre à l'utilisateur de choisir un affichage de pages avec


des photos ou sans photo.
L'utilisateur va valider une sélection sur un bouton radio dans une page HTML qui
appellera une page JSP; dans cette dernière on utilise l'objet request pour
déterminer le choix de l'utilisateur et on inclut une page avec ou sans image
selon la valeur recueillie.
On utilise la value du bouton radio pour composer le nom de la page HTML
incluse.

Les quatre fichiers utilisés sont :

 [Link],
 [Link]
 [Link],
 [Link].

© Pascal Buguet Imprimé le 16 novembre 2025 Page 80


JAVA – JSP

 Ecrans

© Pascal Buguet Imprimé le 16 novembre 2025 Page 81


JAVA – JSP

 Scripts

[Link]

<title>[Link]</title>
<h3>Julia Roberts</h3>
<form action="../jsp/[Link]" method="post">
<label>Avec photo</label>
<input type="radio" name="rbPhoto" value="AvecPhoto" checked="checked" />
<label>Sans photo</label>
<input type="radio" name="rbPhoto" value="SansPhoto" />
<input type="Submit" />
</form>

[Link]

<%!
String lsParam;
String lsValeur;
%>
<%
// --- Obligation de passer par un intermediaire pour recuperer le parametre
lsParam = [Link]("rbPhoto");
lsValeur = "../html/jr" + lsParam + ".html";
%>
<jsp:include page="<%= lsValeur %>" flush="true" />

[Link]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<title>[Link]</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<p>
<span>Julia Roberts est née à Atlanta, en Géorgie en 1967. Après avoir
assisté à la réussite de son frère Eric Roberts en tant qu'acteur, celle qui
voulait devenir vétérinaire ou journaliste commence à suivre des cours d'art
dramatique à l'Actors Studio.</span>
<br/><br/><span><strong>Ici vous auriez pu voir la photo de Julia
ROBERTS</strong></span>
</p>
</body>
</html>

[Link]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<title>[Link]</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<p>
<span>Julia Roberts est née à Atlanta, en Géorgie en 1967. Après avoir
assisté à la réussite de son frère Eric Roberts en tant qu'acteur, celle qui
voulait devenir vétérinaire ou journaliste commence à suivre des cours d'art
dramatique à l'Actors Studio.</span>
<br/><br/><span><img src="../images/julia_roberts_2.jpg" alt="Photo de
JR"/></span>
</p>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 82


JAVA – JSP

</body>
</html>

 Commentaires

Les instructions pertinentes sont celles qui se trouvent dans le deuxième script.

D'abord la valeur du choix de l'utilisateur est récupérée et concatenée dans une


variable pour former le chemin et le nom de la page HTML à inclure.

Ensuite l'inclusion est réalisée dynamiquement en utilisant la possibilité de


passer une expression à l'élément include.

<jsp:include page="<%= lsValeur %>" flush="true" />

© Pascal Buguet Imprimé le 16 novembre 2025 Page 83


JAVA – JSP

1.6.7 L'élément de délégation : <jsp:forward>

[Link] Description et syntaxe

L'élément forward permet de continuer le traitement de la requête vers une


autre ressource statique ou dynamique de l'application.
Les instructions situées à la suite de cet élément ne seront pas exécutées.
Cet élément est situé dans un contexte conditionnel.
Comme pour l'inclusion il est possible de passer une expression à la place d'une
URL absolue ou relative et de passer des valeurs à un ou plusieurs paramètres
si la ressource l'exige.

 Syntaxe

<jsp:forward page="URL | <%= expression %>" />

ou avec un ou plusieurs paramètres

<jsp:forward page="URL | <%= expression %>" >


<jsp:param name="nomDuParamètre" value="valeur | <%= expression
%>"
</jsp:forward>

La valeur du paramètre est récupérée avec :


[Link]("nomDuParamètre");

[Link] Exemple

© Pascal Buguet Imprimé le 16 novembre 2025 Page 84


JAVA – JSP

© Pascal Buguet Imprimé le 16 novembre 2025 Page 85


JAVA – JSP

[Link]

<title>[Link]</title>
<h3>Choix cin&eacute;mas de ...</h3>
<form action="../jsp/[Link]" method="post">
<label>Paris</label>
<input type="radio" name="rbChoix" value="Paris" checked="checked" />
<label>P&eacute;riph&eacute;rie</label>
<input type="radio" name="rbChoix" value="Peripherie" />
<input type="Submit" />
</form>

[Link]

<%!
String lsParam;
String lsDestination;
%>
<%
// --- Obligation de passer par un intermediaire pour recuperer le parametre
lsParam = [Link]("rbChoix");
lsDestination = "../html/Cinemas" + lsParam + ".html";
%>
<jsp:forward page="<%= lsDestination %>" />

[Link]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<title>[Link]</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h3>Liste des cin&eacute;mas de Paris</h3>
</body>
</html>

[Link]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<title>[Link]</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h3>Liste des cin&eacute;mas de la p&eacute;riph&eacute;rie</h3>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 86


JAVA – JSP

1.6.8 L'élément plugin : <jsp:plugin> (Applet)

[Link] Description et syntaxe

L'élément plugin permet d'exécuter une applet dans une page JSP.

 Syntaxe

<jsp:plugin
type="bean | applet"
code="[Link]"
codebase="cheminClasse"
[ height="pixels" ]
[ width="pixels" ]
[ hspace="pixels" ]
[ vspace="pixels" ]
[ align="bottom | top | middle | left | right" ]
[ name="nomDInstance" ]
[ archive="nomDArchiveJAR" ]
[ jversion="versionJRE | 1.2" ]
….
>

[<jsp:params>
<jsp:param name="nomDuParamètre"
value="valeurDuParamètre" />
</jsp:params>]

[ <jsp:fallback>message d'erreur</jsp:fallback> ]

</jsp:plugin>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 87


JAVA – JSP

[Link] Exemple : le convertisseur Euros/Dollars

 Objectifs

Afficher l'applet EurosDollars (cf le cours sur les applets), et en utilisant les
paramètres de l'applet, affecter aux JTextFields de l'applet des valeurs se
trouvant dans la page JSP.

Récupérer dans le JSP les valeurs de l'applet. L'applet possède 2 méthodes pour
cela : getEurosDollars() et getDollarsEuros()

Note : on pourrait imaginer, dans la continuité de cet exemple, que le cours du


dollar est extrait de la base de données.

Cf le code complet de l'applet en annexe.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 88


JAVA – JSP

 Script

Applet_1.jsp

<jsp:plugin type="applet" codebase="." archive="[Link]"


code="[Link]" height="75" width="400"
name="convertisseur">
<jsp:params>
<jsp:param name="coursDollars" value="1.35" />
<jsp:param name="euros" value="0" />
<jsp:param name="dollars" value="0" />
</jsp:params>
</jsp:plugin>

Pour récupérer les valeurs de l'applet il faut coder du JavaScript.

<script type="text/javascript">
// --- De l'applet vers la JSP
function getEuros()
{
var convertisseur = [Link]("convertisseur")[0];
[Link]("euros").innerHTML =
[Link]();
}
function getDollars()
{
var convertisseur = [Link]("convertisseur")[0];
[Link]("dollars").innerHTML =
[Link]();
}
</script>

<!-- De l'applet vers la JSP -->


<br/><input type="button" value="getDollars" onclick="getDollars()" />
<label id="dollars"></label>
<br/><input type="button" value="getEuros" onclick="getEuros()" />
<label id="euros"></label>

 Commentaires

Dans la page JSP nous insérons une référence vers l'applet avec la balise
<jsp:plugin….> en précisant :

 le type du plugin (applet) avec l'attribut type


 le chemin du fichier jar (ici dans le dossier courant) avec l'attribut codebase
 le nom de l'archive avec l'attribut archive
 le nom de la classe ([Link]) avec l'attribut code
 la hauteur, la largeur, et un nom identifiant avec l'attribut name.

Puis nous affectons aux paramètres définis dans l'applet, avec la méthode
getParameter(nomDuParamètre), des valeurs à l'intérieur de la balise
<jsp:params> qui va contenir elle-même la liste des paramètres selon le format
suivant :
<jsp:param name= "nomDuParamètre" value="valeur" />

© Pascal Buguet Imprimé le 16 novembre 2025 Page 89


JAVA – JSP

1.6.9 L'élément texte : <jsp:text>

Nouveauté de JSP 1.2

 Objectif

Afficher du texte dans des éléments XML d'une page JSP.

 Syntaxe

<jsp:text>
données de type chaîne
</jsp:text>

 Exemple

<jsp:text>
Les données de la table [villes]
</jsp:text>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 90


JAVA – JSP

1.6.10 L'élément racine : <jsp:root>

 Objectif

L'élément root est un élément de JSP 1.2.


Cet élément est employé avec la notation XML pour concevoir une page JSP.
Cet élément englobe toute la page JSP.

 Syntaxe

<jsp:root
xmlns:jsp=[Link]
[ xmlns:taglibPrefix="URI"]
version="2.0"
>
Page jsp
</jsp:root>

 Exemple

<?xml version="1.0" encoding="ISO-8859-1"?>

<jsp:root xmlns:jsp="[Link] version="2.0">


<jsp:[Link] contentType="text/html" pageEncoding="ISO-8859-1"/>
<!-- Le contenu ... -->
<jsp:element name="text">
<jsp:attribute name="lang">FR</jsp:attribute>
<jsp:body>Les éléments JSP</jsp:body>
</jsp:element>
</jsp:root>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 91


JAVA – JSP

1.7 MINI APPLICATION NIVEAU 1 : LE BUREAU DE CHANGE

1.7.1 Cahier des charges

L'objectif est de réutiliser le maximum d'éléments vus jusqu'à présent dans ce


cours.

L'en-tête de chaque écran est une inclusion.


Un écran d'accueil permet au client de se connecter en saisissant son nom et son
mot de passe. Il valide sur OK.
Son nom est stocké dans une varible de session.
Un cookie est lu qui permet d'afficher le nombre de fois où il s'est connecté.
Une variable de niveau application affiche le nombre de clients connectés.
Une zone de texte lui permet de saisir le montant en euros qu'il veut changer en
dollars.
Un écran lui affichera le montant en dollars. Le taux est fixe!
Enfin un écran de déconnexion lui affichera au revoir.

Corrigé en fin de support.

1.7.2 Ecrans

© Pascal Buguet Imprimé le 16 novembre 2025 Page 92


JAVA – JSP

© Pascal Buguet Imprimé le 16 novembre 2025 Page 93


JAVA – JSP

1.8 TRAVAILLER AVEC UNE BASE DE DONNÉES

1.8.1 Afficher des données d'une table via un scriptlet

 Objectif

Se connecter, ouvrir un curseur, le parcourir, afficher les enregistrements et se


déconnecter.

Note : rien de particulier, du pur code java.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 94


JAVA – JSP

 Script

<%@page contentType="text/html" pageEncoding="UTF-8" language="java"


import="[Link].*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>
<%
try
{
[Link]("[Link]");
Connection lcConnexion =
[Link]("jdbc:mysql://localhost/cours","root","");

Statement lstSql = [Link]();


ResultSet lrs = [Link]("SELECT * FROM villes");
while([Link]())
{
[Link]([Link](1) + "-" + [Link](2) + "<br/>");
}
[Link]();
[Link]();
}
catch(Exception e) { [Link]([Link]()); }
%>
</body>
</html>

Exercice

Afficher la même table dans une <table> HTML.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 95


JAVA – JSP

1.8.2 Insérer dynamiquement un enregistrement

 Objectif

Se connecter, insérer un enregistrement et se déconnecter.

Note : rien de particulier, du pur code java.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 96


JAVA – JSP

 Scripts

La page HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<title>[Link]</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="../jsp/[Link]" method="post">
<label>Cp</label>
<input type="text" name="cp" value="75021" size="5" />
<label>Nom de la ville</label>
<input type="text" name="nomVille" value="Paris 21" />
<label>Id Pays</label>
<input type="text" name="idPays" value="033" size="3" />
<input type="submit" />
</form>
</body>
</html>

La page JSP

<%@page contentType="text/html" pageEncoding="UTF-8" import="[Link].*" %>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>
<%
Connection lcConnexion = null;
Statement lstSQL = null;
String lsCp = [Link]("cp");
String lsNomVille = [Link]("nomVille");
String lsIdPays = [Link]("idPays");
String lsSQL = "INSERT INTO villes(cp,nom_ville,id_pays) VALUES('" + lsCp +
"','" + lsNomVille + "','" + lsIdPays + "')";
try
{
[Link]("[Link]");
lcConnexion =
[Link]("jdbc:mysql://localhost/cours","root","");
lstSQL = [Link]();
[Link](lsSQL);
[Link]();
lcConnexion = null;
[Link]("Nouvelle ville ajoutée");
}
catch(ClassNotFoundException err) { [Link]([Link]()); }
catch(SQLException err) { [Link]([Link]()); }
%>
</body>
</html>

Exercice

La même chose avec un seul document.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 97


JAVA – JSP

1.9 LA COMMUNICATION SERVLET-JSP-BEAN

1.9.1 Objectif

Insérer un enregistrement dans la tables [Villes] de la BD dans le cadre d'une


architecture MVC.

Contrôle : Servlet ([Link]),


Vues : JSP ([Link], [Link],
[Link]),
Modèle : JavaBean ([Link]) + classe java de connexion
([Link]).

 Connexion

© Pascal Buguet Imprimé le 16 novembre 2025 Page 98


JAVA – JSP

 Insertion

 Déconnexion

© Pascal Buguet Imprimé le 16 novembre 2025 Page 99


JAVA – JSP

1.9.2 Démarche

 Afficher le menu.
 Connexion à la BD.
 Insertion de l'enregistrement.
 Déconnexion.

Tout passe par la servlet contrôleur [[Link]] qui est le point d'entrée
de l'application.

[Link]

Le menu est affiché [[Link]].

Pour se connecter des valeurs (ut, mdp, bd, serveur) sont saisies dans un
formulaire jsp [[Link]] puis repassées au contrôleur
qui sollicite la méthode seConnecter() de la classe [[Link]]. si la
connexion est OK on revient vers le menu autrement le formulaire de connexion
est affiché à nouveau avec un message d'erreur.

Pour insérer dans la table des valeurs (cp, nomVille, idPays) sont saisies dans un
formulaire jsp [[Link]] et affectées aux propriétés d'un bean
([Link]) via la servlet contrôleur pour l'insertion.

Le bean est de portée application.


Ensuite la JSP est requêtée avec une méthode forward. La JSP récupère le bean
grâce à l'action useBean.

La servlet fait office de contrôleur (Dispatcher, contrôle de validité…).


Les pages JSP font office de views (Elles gèrent la présentation).
Les beans exécutent les fonctions métier (Stockage d'objets métiers,
authentification, connexion à la base, insertion,…).

Pensez à créer un fichier archive du paquetage du Bean.

 Schéma simplifié

1
2

Servlet JSP

Se 4 3
5
Ge
JavaBean

© Pascal Buguet Imprimé le 16 novembre 2025 Page 100


JAVA – JSP

1.9.3 Scripts

 La servlet : [Link]

La servlet fait office de contrôleur. La servlet charge en mémoire le bean


[[Link]] lors de l'exécution de la méthode init() et la classe
[[Link]].

package Cours;

// --- [Link]
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;

import [Link];
import [Link];

// -------------------------------------------
public class VillesServlet extends HttpServlet
// -------------------------------------------
{
private Connection cn;
String url="";
private Villes beanVilles;
private ConnexionMysql cnMySQL;

// --------------- Initialisation
public void init() throws ServletException
{
cnMySQL = new ConnexionMysql();
beanVilles = new Villes();
// getServletContext().setAttribute("beanCnMySQL", beanCnMySQL);
// getServletContext().setAttribute("beanVilles", beanVilles);
}

// -------------- Réception de valeurs


public void doGet(HttpServletRequest requete, HttpServletResponse reponse)
throws ServletException, IOException
{
if([Link]("action").equals("init"))
{
[Link] = "/jsp/[Link]";
[Link](requete, reponse);
}
if([Link]("action").equals("connexionSaisie"))
{
[Link] = "/jsp/[Link]";
[Link](requete, reponse);
}
if([Link]("action").equals("connexion"))
{
[Link](requete, reponse);
}
if([Link]("action").equals("villesInsertSaisie"))
{
[Link] = "/jsp/[Link]";
[Link](requete, reponse);
}
if([Link]("action").equals("villesInsert"))
{
[Link](requete, reponse);

© Pascal Buguet Imprimé le 16 novembre 2025 Page 101


JAVA – JSP

}
if([Link]("action").equals("deconnexion"))
{
[Link](requete, reponse);
}
}

// ---------------------
private void seConnecter(HttpServletRequest requete, HttpServletResponse
reponse) throws ServletException, IOException
{
String serveur = [Link]("serveur");
String bd = [Link]("bd");
String ut = [Link]("ut");
String mdp = [Link]("mdp");
String lsMessage = [Link](serveur, bd, ut, mdp);

if([Link]("Connexion OK"))
{
[Link] = [Link]();
[Link] = "/jsp/[Link]?message=" + lsMessage;
}
else
{
[Link] = "/jsp/[Link]?message=" + lsMessage;
}
[Link](requete, reponse);
}

// ---------------------
private void seDeconnecter(HttpServletRequest requete, HttpServletResponse
reponse) throws ServletException, IOException
{
String lsMessage = "";
if([Link]()) lsMessage = "Déconnexion OK";
else lsMessage = "Déconnexion KO";
[Link] = "/jsp/[Link]?message=" + lsMessage;
[Link](requete, reponse);
}

// ----------------------
private void villesInsert(HttpServletRequest requete, HttpServletResponse
reponse) throws ServletException, IOException
{
String lsMessage = "";

String cp = [Link]("cp");
String nomVille = [Link]("nomVille");
String idPays = [Link]("idPays");

[Link](cp);
[Link](nomVille);
[Link](idPays);

lsMessage = [Link]([Link]);

[Link] = "/jsp/[Link]?message=" + lsMessage;


[Link](requete, reponse);
}

// ------------------- Renvoi vers une JSP


private void rediriger(HttpServletRequest requete, HttpServletResponse reponse)
throws ServletException, IOException
{
// ---
RequestDispatcher rd = [Link]([Link]);
[Link](requete, reponse);
// ---

© Pascal Buguet Imprimé le 16 novembre 2025 Page 102


JAVA – JSP

//[Link](url);
}

// ------------------ "Garbaging"
public void destroy()
{
// --- La servlet s'assure de détruire les beans de portée d'application
instanciés au démarrage
// getServletContext().removeAttribute("beanVilles");
// getServletContext().removeAttribute("beanCnMySQL");
}

// --- Réception de valeurs et transmission à doGet()


public void doPost(HttpServletRequest requete, HttpServletResponse reponse)
throws ServletException, IOException
{
doGet(requete, reponse);
}
}

© Pascal Buguet Imprimé le 16 novembre 2025 Page 103


JAVA – JSP

 La page JSP du menu : [Link]

<!-- [Link] -->


<a href="/WebAppJSP/VillesServlet?action=connexionSaisie">Connexion</a><br/>
<a href="/WebAppJSP/VillesServlet?action=villesInsertSaisie">Ajout ville</a><br/>
<a href="/WebAppJSP/VillesServlet?action=deconnexion">Déconnexion</a><br/>

<%
if([Link]("message") != null)
{
[Link]("<br/><label>[Link]("message") + "</label>");
}
%>

 La page JSP : [Link]

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>

<!-- [Link] -->


<form action="/WebAppJSP/VillesServlet" method="post">
<label>Serveur</label>
<input type="text" name="serveur" value="localhost" size="10" />
<label>BD</label>
<input type="text" name="bd" value="cours" size="10" />
<label>UT</label>
<input type="text" name="ut" value="root" size="10" />
<label>Mdp</label>
<input type="text" name="mdp" value="" size="10" />

<input type="hidden" name="action" value="connexion" />

<input type="submit" />


</form>

<%
if([Link]("message") != null)
{
[Link]("<br/>" + [Link]("message"));
}
%>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 104


JAVA – JSP

 La classe [Link]

package beans;

import [Link].*;

// ------------------------
public class ConnexionMysql
// ------------------------
{
Connection cn;

// --- Méthodes
// ------------------------------------------------------------------------
public String seConnecter(String serveur, String bd, String ut, String mdp)
{
String lsMessage = "Connexion OK";

try
{
// --- Connexion MySQL
[Link]("[Link]");
String lsConnexion = "jdbc:mysql://" + serveur + "/" + bd;

[Link] = [Link](lsConnexion,ut,mdp);
[Link](false);
}
catch(ClassNotFoundException err) { lsMessage = "Erreur pilote : " +
[Link](); }
catch(SQLException err) { lsMessage = "Erreur SQL : " + [Link](); }
return lsMessage;
}

// ---------------------------
public boolean seDeconnecter()
{
try
{
[Link]();
//[Link] = null;
return true;
}
catch(SQLException err) { return false; }
}

// ----------------------
public Connection getCn()
{
return [Link];
}
}

© Pascal Buguet Imprimé le 16 novembre 2025 Page 105


JAVA – JSP

 Le Bean : [Link]

package beans;

import [Link];
import [Link].*;

// ----------------------------------------
public class Villes implements Serializable
// ----------------------------------------
{
private static final long serialVersionUID = 1L;
private String cp;
private String nomVille;
private String idPays;

private boolean ibValide;

// --- Constructeur sans argument


public Villes()
{
}
// --- Méthodes
// -------------------------
public void setCp(String cp)
{
[Link] = cp;
[Link] = true;
}
// ------------------
public String getCp()
{
return [Link];
}
// -------------------------------------
public void setNomVille(String nomVille)
{
[Link] = nomVille;
[Link] = true;
}
// ------------------------
public String getNomVille()
{
return [Link];
}
// ---------------------------------
public void setIdPays(String idPays)
{
[Link] = idPays;
[Link] = true;
}
// ----------------------
public String getIdPays()
{
return [Link];
}

// -----------------------
public boolean getValide()
{
return [Link];
}

// --------------------------------------
public String insererVille(Connection cn)
{

© Pascal Buguet Imprimé le 16 novembre 2025 Page 106


JAVA – JSP

// --- Déclarations
String lsMessage = "Insertion OK";
Statement lstInsert;
String lsInsert = "INSERT INTO villes(cp,nom_ville,id_pays) VALUES ('" + cp
+ "','" + nomVille + "','" + idPays + "')";
try
{
// --- Insertion
lstInsert = [Link]();
[Link](lsInsert);
[Link]();
}
catch(SQLException err) { lsMessage = [Link](); }
return lsMessage;
}
}

 La page JSP : [Link]

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>

<!-- [Link] -->


<form action="[Link] method="post">
<label>Cp</label>
<input type="text" name="cp" value="75021" size="5" />
<label>Nom de la ville</label>
<input type="text" name="nomVille" value="Paris 21" />
<label>Id Pays</label>
<input type="text" name="idPays" value="033" size="3" />

<input type="hidden" name="action" value="villesInsert" />

<input type="submit" />


</form>

<%
if([Link]("message")!=null)
{
[Link]("<br/><label>" + [Link]("message") + "</label>");
}
%>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 107


JAVA – JSP

1.10 MINI APPLICATION NIVEAU 2 : JSP, BEANS ET BD

1.10.1 Objectif, principes et démarche

Juste à titre d'exemple pour la communication JSP-Beans-JSP.

Insérer un enregistrement dans la base de données.

Pas de servlets. Les beans sont gérés directement dans les pages jsp.
Une interface pour se connecter à la base,
Une interface pour saisir et insérer dans la table [villes],
Un bean pour se connecter et se déconnecter,
Un bean pour insérer dans la base.

Les pages HTML ([Link], [Link], [Link]) et


JSP ([Link], [Link], [Link]) gèrent les
interfaces (IHM) et les appels aux beans.
Les beans ([Link], [Link]) gèrent les accès à la base de
données.

Corrigé en fin de support.

1.10.2 Ecrans

Les mêmes.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 108


JAVA – JSP

1.11 DIVERS

1.11.1 Importer ses propres classes

Produisez un .jar d'un de vos paquetages (fr/buguet/pascal/fichiers par exemple)


Copiez-le directement dans C:\Program Files\Apache Software Foundation\Tomcat
5.5\common\lib
Ou
Dans C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\jsp\
WEB-INF\lib
Importez-le dans votre JSP : import ="[Link].*".
Utilisez classes et méthodes.

<%@ page
language="java"
import="[Link], [Link].*"
%>
<%-- Scriptlet JSP : Le code --%>
<%
String lsContenu =
[Link]([Link]("[Link]"));
[Link]("<br />Début");
[Link]("<br />Contenu du fichier : " + lsContenu);
[Link]("<br />Fin");
%>

La JSP s'exécute en C:\Program Files\Apache Software Foundation\Tomcat 5.5


(bien !)
Donc si le fichier est au niveau racine de l'application, il faut l'adressage
précédent.
S'il se trouve dans /pascal/docs/…
Il faut lireFichierText([Link]("/") + "/docs" + "/[Link]");
Notez (cf le script de la classe à la page suivante) que les méthodes sont
statiques.

[Link]("/") renvoie la racine du site.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 109


JAVA – JSP

NB : la classe utilisée :

package [Link];

import [Link].*;
// ------------------------
public class GestionFichier
{
// ----------------------------------
public static String lireFichierText(String asNomFichier)
// ----------------------------------
{
String lsContenu = "";
String lsLigne;
FileReader lfrFichier;
BufferedReader lbrBuffer;
try
{
lfrFichier = new FileReader(asNomFichier);
lbrBuffer = new BufferedReader(lfrFichier);
while((lsLigne = [Link]()) != null) lsContenu +=
lsLigne + "\n";
[Link]();
}
catch(FileNotFoundException err) { lsContenu = [Link](); }
catch(IOException err) { lsContenu = [Link]();}
return lsContenu;
}
// ----------------------------------
public static String lireFichierByte(String asNomFichier)
// ----------------------------------
{
// --- Codez
}
}

© Pascal Buguet Imprimé le 16 novembre 2025 Page 110


JAVA – JSP

1.11.2 Internationalisation

[Link] Objectif

Paramétrage des dates et des numériques.

[Link] Le navigateur et la langue

Firefox IE 6

© Pascal Buguet Imprimé le 16 novembre 2025 Page 111


JAVA – JSP

[Link] Premier script

Récupérer la Locale et créer des nouvelles Locales.

Firefox en Fr IE en EN

<%@ page language="java" import="[Link].*" %>


<%
Locale locale, usLocale, frLocale;

locale = [Link]();
[Link]("<br />" + [Link]());

usLocale = new Locale("en","US");


[Link]("<br />" + [Link]());

frLocale = new Locale("fr","FR");


[Link]("<br />" + [Link]());
%>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 112


JAVA – JSP

[Link] Deuxième script

Travailler avec la locale (affichage).

Afficher la date et un nombre décimal en fonction du navigateur du client.

Firefox en Fr IE en EN

<%@ page language="java" import="[Link].*, [Link].*" %>


<%
Locale locale = [Link]();
[Link]("<br />" + [Link]());

[Link] aujourdhui = new [Link]();


Formatter formatDate = new Formatter();
[Link](locale, "%1$tA %1$te %1$tB %1$tY", aujourdhui);
[Link]( "<br />Aujourd'hui : " + formatDate);

Formatter formatNombre = new Formatter();


[Link](locale, "%10.4f", 3.14);
[Link]( "<br />PI : " + formatNombre);
%>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 113


JAVA – JSP

1.11.3 JSP et XML

Cf le support Java et XML pour une lecture d'un document XML via une page JSP
standard.

Cf le support JSTL pour la TagLib XML.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 114


JAVA – JSP

1.12 ANNEXES

1.12.1 Utilisation d'une archive personnelle dans un projet web

Après avoir archivé votre paquetage


jar cvf [Link] [Link] [Link]

Copiez l'archive dans le dossier lib de l'application ou dans le dossier lib du


serveur (C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\
par exemple).

Importez l'archive dans la JSP :


<%@ page language="java" import="packFctGeneriques.*" %>

1.12.2 Archiver un site WEB

Utiliser l'utilitaire jar pour créer un war.

jar options [Link]

C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps>\sun\appserver\jdk\


bin\jar cfv [Link] jspExos

© Pascal Buguet Imprimé le 16 novembre 2025 Page 115


JAVA – JSP

1.12.3 Le code de l'applet EurosDollars

Cette applet permet de réaliser des conversions Euros/Dollars et Dollars/Euros.


Les saisies des euros et des dollars sont contrôlées.

package PackageApplets;

// --- Applet et Convertisseur Euros-Dollars


import [Link].*;
import [Link].*;
import [Link].*;

public class EurosDollars extends JApplet


{
// --- Les composants graphiques
JPanel panneau = new JPanel(new GridLayout(0,4));

// --- Ligne 1
JLabel lblCoursDollar = new JLabel("Cours du dollar?");
JTextField tfCoursDollar = new JTextField("1.5",10);
JLabel lblVide1 = new JLabel("");
JLabel lblVide2 = new JLabel("");

// --- Ligne 2
JLabel lblEuro = new JLabel("Euros?");
JTextField tfEuros = new JTextField("10.0",10);
JButton cbDollars = new JButton("$");
JLabel lblEuros = new JLabel("");

// --- Ligne 3
JLabel lblDollar = new JLabel("Dollars?");
JTextField tfDollars = new JTextField("10.0",10);
JButton cbEuros = new JButton("€");
JLabel lblDollars = new JLabel("");

// --- Le constructeur
public EurosDollars()
{
[Link]([Link]);

ActionListener al = new ActionListener()


{
public void actionPerformed(ActionEvent e)
{
float lfDollars, lfEuros, lfInter, lfCoursDollar=0.0F;

// --- Clic sur le bouton $ pour obtenir le montant de dollars


if([Link]() == cbDollars)
{
String lsCourDollar = [Link]();
if([Link]("^[0-9]+[.]?[0-9]+$"))
{
lfCoursDollar = [Link]([Link]());
lfEuros = [Link]([Link]());
lfInter = lfEuros * lfCoursDollar;
[Link]([Link](lfInter));
}
else [Link]("Bécile!");
}
// --- Clic sur le bouton € pour obtenir le montant d'euros
if([Link]() == cbEuros)
{
String lsDollars = [Link]();
if([Link]("^[0-9]+[.]?[0-9]+$"))

© Pascal Buguet Imprimé le 16 novembre 2025 Page 116


JAVA – JSP

{
lfCoursDollar = [Link]([Link]());
lfDollars = [Link]([Link]());
lfInter = lfDollars / lfCoursDollar;
[Link]([Link](lfInter));
}
else [Link]("Bécile!");
}
}
};

[Link](al);
[Link](al);

[Link](lblCoursDollar);
[Link](tfCoursDollar);
[Link](lblVide1);
[Link](lblVide2);

[Link](lblEuro);
[Link](tfEuros);
[Link](cbDollars);
[Link](lblDollars);

[Link](lblDollar);
[Link](tfDollars);
[Link](cbEuros);
[Link](lblEuros);

getContentPane().add(panneau);
}
// ---------------
@Override
public void init()
{
[Link](getParameter("coursDollar"));
[Link](getParameter("euros"));
[Link](getParameter("dollars"));

// [Link]("1.5");
// [Link]("10");
// [Link]("");
}

// --- Les méthodes ad hoc


public String getDollarsEuros()
{
return [Link]() + " Dollars valent " + [Link]() + "
Euros";
}
// ---------------------
public String getEurosDollars()
{
return [Link]() + " Euros valent " + [Link]() + "
Dollars";
}
}

© Pascal Buguet Imprimé le 16 novembre 2025 Page 117


JAVA – JSP

1.13 CORRIGÉS DES EXERCICES

1.13.1 Testez Chrome

<%
if([Link]("User-agent").indexOf("Chrome") >= 0)
[Link]("Navigateur Chrome");
%>

1.13.2 Les cookies

 Détruisez les cookies précédents

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>
<%
Cookie laCookie[];
Cookie lCookie;
String lsNomCook;

laCookie = [Link]();

if(laCookie != null)
{
for(int i=0; i<[Link]; i++)
{
lCookie = laCookie[i];
lsNomCook = [Link]();
[Link]("<br/>"+lsNomCook);
if([Link]("nom") || [Link]("prenom"))
{
[Link](0);
[Link](lCookie);
}
}
}
%>
Cookies d&eacute;truits !!!
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 118


JAVA – JSP

1.13.3 Gestion de panier avec un cookie

4 scripts :

[Link]
[Link]
[Link]
[Link]

© Pascal Buguet Imprimé le 16 novembre 2025 Page 119


JAVA – JSP

[Link]

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PanierCatalogue</title>
<style type="text/css">
*{margin:0; padding:5px;}
#centre{float:left; border:1px dotted silver; width:200px; margin-
right:20px;}
iframe{float:left;}
</style>
</head>
<body>
<div id="centre">
<h5>PanierCatalogue</h5>
Coca<a href="[Link]?idProduit=1" target="cadre"><img
src="../images/[Link]" alt="Panier"/></a><br/>
Fanta<a href="[Link]?idProduit=2" target="cadre"><img
src="../images/[Link]" alt="Panier"/></a><br/>
Badoit<a href="[Link]?idProduit=3" target="cadre"><img
src="../images/[Link]" alt="Panier"/></a><br/>
<br/><br/>
<a href="[Link]" target="cadre">Voir le panier</a>
<br/>
<a href="[Link]" target="cadre">Vider le panier</a>
</div>
<iframe src="" name="cadre"></iframe>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 120


JAVA – JSP

[Link]

<body>
<%
Cookie laCookie[];
Cookie lCookie;
Cookie lCookiePanier;
String lsNomCook;
String lsPanier = "";
boolean lbPanierExiste = false;

laCookie = [Link]();

if(laCookie != null)
{
for(int i=0; i<[Link]; i++)
{
lCookie = laCookie[i];
lsNomCook = [Link]();
if([Link]("panier"))
{
lsPanier = [Link]() + "-" +
[Link]("idProduit");
lbPanierExiste = true;
}
}
if(!lbPanierExiste)
{
lsPanier = [Link]("idProduit");
}
}
// --- Si aucun n'existe mais il y a toujours JSESSIONID
else lsPanier = [Link]("idProduit");

lCookiePanier = new Cookie("panier", lsPanier);


[Link](3600 * 24 * 7); // --- 7 jours
[Link](lCookiePanier);
%>
<label>Le produit <strong><%=[Link]("idProduit") %></strong> est
ajout&eacute; au panier</label>
</body>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 121


JAVA – JSP

[Link]

<body>
<%
Cookie laCookie[];
Cookie lCookie;
String lsNomCook, lsValeurCook;
boolean lbPanierExiste = false;

laCookie = [Link]();

if(laCookie != null)
{
for(int i=0; i<[Link]; i++)
{
lCookie = laCookie[i];
lsNomCook = [Link]();
if([Link]("panier"))
{
lsValeurCook = [Link]();
[Link]("Panier :" + lsValeurCook + "<br />");
lbPanierExiste = true;
}
}
if(!lbPanierExiste)
{
[Link]("Le panier est vide<br />");
}
}
else [Link]("Aucun cookie");
%>
</body>

[Link]

<body>
<%
Cookie lCookiePanier;

lCookiePanier = new Cookie("panier", "");


[Link](0); // --- Détruit
[Link](lCookiePanier);
%>
Le panier a &eacute;t&eacute; vid&eacute;
</body>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 122


JAVA – JSP

1.13.4 Les sessions

 Détruisez la variable de session [mdp].

Ceci est ajouté dans la page session_1.jsp

<br /><a href="session_3.jsp">D&eacute;truire la variable de session [mdp]</a>

Code de la page session_3.jsp.

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>session_3.jsp</title>
</head>
<body>
<% [Link]("mdp"); %>
Votre login : <%= (String)[Link]("login") %>
<br />Votre mot de passe : <%= (String)[Link]("mdp") %>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 123


JAVA – JSP

1.13.5 Corrigé Mini Application niveau 1 : le bureau de change

[Link] Tableau de synthèse

Fonctionnalités Pages Contenu


Accueil [Link] Déclaratives, include
Saisie client [Link] Application, session, [Link],
p …
Calcul montant [Link] request
Déconnexion BureauChangeDeconnexion.j Session, [Link], …
sp

Bandeau [Link]

[Link] Accueil

[Link]
<%@include file="[Link]" %>
<form action="[Link]" method="POST">
<label>Nom</label>
<input type="text" name="nom" value="Pascal" />
<label>Mot de passe</label><input type="text" name="mdp" value="mdp" />
<input type="submit" />
</form>

[Link]
<hr/>Bureau de change direct Euros en Dollars<hr/>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 124


JAVA – JSP

[Link] Saisie client

[Link]

<%@ include file="[Link]" %>


<%
String lsNom = [Link]("nom");
String lsConnectes = "1";
int liConnectes = 0;

[Link]("clientConnecte", lsNom);
if((String)[Link]("connectes") != null)
{
liConnectes = [Link](lsConnectes);
liConnectes++;
lsConnectes = [Link](liConnectes);
}
[Link]("connectes", lsConnectes);
%>

<%-- Les cookies : lecture --%>


<%
Cookie laCookie[] = [Link]();
Cookie lCookie;
String lsNomCookie, lsValeurCookie;
int liFois = 1;
boolean lbTrouveCompteur = false;

if(laCookie != null)
{
for(int i=0; i<[Link]; i++)
{
lCookie = laCookie[i];
lsNomCookie = [Link]();
lsValeurCookie = [Link]();
if([Link]("compteur"))
{
liFois = [Link](lsValeurCookie);
liFois++;
[Link]("fois", [Link](liFois));
lbTrouveCompteur = true;
}
}
if(!lbTrouveCompteur) [Link]("fois", "1");
}
else [Link]("fois", "1");
%>

Monsieur ou madame <%=lsNom %> bonjour.<br />


Vous êtes le <%=lsConnectes %> ième client connecté.<br />
C'est la <%=liFois %> ième fois que vous faites appel à nos services sur notre
site.<hr />
<form action="[Link]" method="post">
<label>Montant à changer (en euros) :</label>
<input type="text" name="euros" value="100" />
<input type="submit" />
</form>
<a href="[Link]">Se d&eacute;connecter</a>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 125


JAVA – JSP

[Link] Calcul

[Link]

<%@include file="[Link]" %>


<%
String lsEuros = [Link]("euros");
double ldEuros = [Link](lsEuros);
double ldDollars = ldEuros * 1.15D;

Formatter f = new Formatter();


//[Link]("5.2f", ldDollars);

[Link](lsEuros + " Euros valent " + [Link](ldDollars) + "


Dollars");
//[Link](lsEuros + " Euros valent " + [Link]() + " Dollars");

%>
<br/><a href="[Link]">Se d&eacute;connecter</a>

[Link] Déconnexion

[Link]

<%@ include file="[Link]" %>


<%-- Les cookies : écriture --%>
<%
String lsNom = (String)[Link]("clientConnecte");
String lsFois = (String)[Link]("fois");
Cookie lCookie = new Cookie("compteur", lsFois);
[Link](60*60*24*30); // --- Un mois
[Link](lCookie);
%>
Monsieur ou madame <%=lsNom %> au revoir et à bientôt

© Pascal Buguet Imprimé le 16 novembre 2025 Page 126


JAVA – JSP

1.13.6 Corrigé mini application niveau2 : BD

 Le menu : [Link]

<!-- [Link] -->


<a href="[Link]">Connexion</a><br/>
<a href="[Link]">Ajout ville</a><br/>
<a href="../jsp/[Link]">Déconnexion</a><br/>

 Le bean de connexion-déconnexion : ConnexionMysql

Le même.

 Le bean Villes

Le même.

© Pascal Buguet Imprimé le 16 novembre 2025 Page 127


JAVA – JSP

 Le formulaire de connexion : [Link]

<!-- [Link] -->


<form action="../jsp/[Link]" method="post">
<label>UT</label>
<input type="text" name="ut" value="root" />
<label>Mdp</label>
<input type="text" name="mdp" value="" />
<input type="submit" />
</form>

 La page JSP de connexion : [Link]

<!-- [Link] -->


<jsp:useBean
id="connexion" scope="application"
class="[Link]" >
<jsp:setProperty name="connexion" property="*" />
</jsp:useBean>

<%
try
{
if([Link]()) [Link]("Connexion OK");
else [Link]("Connexion KO");
}
catch(Exception e) { [Link]("Erreur:" + [Link]()); }
%>

 La page JSP de déconnexion : [Link]

<!-- [Link] -->


<jsp:useBean
id="connexion" scope="application"
class="[Link]" >
</jsp:useBean>

<%
try
{
if([Link]()) [Link]("Déconnexion OK");
else [Link]("Déconnexion KO");
}
catch(Exception e) { [Link]("Erreur:" + [Link]()); }
%>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 128


JAVA – JSP

 La page html de saisie : [Link]

<form action="../jsp/[Link]" method="post">


<label>Cp</label>
<input type="text" name="cp" value="75021" size="5" />
<label>Nom de la ville</label>
<input type="text" name="nomVille" value="Paris 21" />
<label>Id Pays</label>
<input type="text" name="idPays" value="033" size="3" />
<input type="submit" />
</form>

 La page JSP d'insertion : [Link]

<jsp:useBean id="connexion" scope="application" class="[Link]" />

<jsp:useBean id="villes" scope="application" class="[Link]" >


<jsp:setProperty name="villes" property="*" />
</jsp:useBean>

<%
Connection cn = [Link]();
boolean lbOk = true;
try
{
lbOk = [Link](cn);
}
catch(Exception e) { [Link]([Link]()); }
if(lbOk) [Link]("<br/>Insertion OK");
else [Link]("<br/>Insertion KO");
%>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 129


JAVA – JSP

1.14 JSP ET MVC : LA BONNE PRATIQUE

Reprise du JavaBean et du DAO du cours java_sql.doc.

[Link] Insertion et suppression

© Pascal Buguet Imprimé le 16 novembre 2025 Page 130


JAVA – JSP

 Script

<%@page contentType="text/html" pageEncoding="UTF-8" language="java"


import="[Link],packageBD.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>
<form action="" method="POST">
<table>
<tr><td>Cp</td><td><input type="text" name="cp" value="75021" /></td></tr>
<tr><td>Ville</td><td><input type="text" name="nomVille" value="Paris 21"
/></td></tr>
<tr><td>Site</td><td><input type="text" name="site" value="[Link]"
/></td></tr>
<tr><td>Photo</td><td><input type="text" name="photo" value="[Link]"
/></td></tr>
<tr><td>Pays</td><td><input type="text" name="idPays" value="033" /></td></tr>
<tr><td><input type="submit" name="cbAjouter" value="Ajouter"/></td><td><input
type="submit" name="cbSupprimer" value="Supprimer"/></td></tr>
</table>
</form>

<%
if([Link]("referer") != null)
{
String lsSelf = "[Link] + [Link]() + ":" +
[Link]() + [Link]() + "/jsp/[Link]";

if([Link]("referer").equals(lsSelf))
{
Villes ville = new Villes();

[Link]([Link]("cp"));
[Link]([Link]("nomVille"));
[Link]([Link]("site"));
[Link]([Link]("photo"));
[Link]([Link]("idPays"));

if([Link]("cbAjouter") != null)
{
[Link]("<br/>" + [Link]());
}
if([Link]("cbSupprimer") != null)
{
[Link]("<br/>" + [Link]());
}
}
}
%>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 131


JAVA – JSP

[Link] Affichage d'un enregistrement

<%@page contentType="text/html" pageEncoding="UTF-8" language="java"


import="[Link],packageBD.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>
<h4>villesSelectUnViaDAO</h4>
<form action="" method="get">
Cp ? <input type="text" name="cp" value="75021" size="5" />
<input type="submit" />
</form>
<%
if([Link]() != null)
{
Villes ville = new Villes();
VillesDAO villeDao = new VillesDAO();

ville = [Link]([Link]("cp"));
[Link]([Link]());
}
%>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 132


JAVA – JSP

[Link] Affichage de tous les enregistrements

<%@page contentType="text/html" pageEncoding="UTF-8" language="java"


import="[Link],[Link],packageBD.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>
<h4>villesSelectTousViaDAO</h4>
<%
Villes ville = new Villes();
VillesDAO villeDao = new VillesDAO();

ArrayList tVilles = new ArrayList();


tVilles = [Link]();
for(int i=0; i<[Link](); i++)
{
ville = (Villes)[Link](i);
[Link]([Link]() + "<br/>");
}
%>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 133


JAVA – JSP

1.15 EN ATTENTE

1.15.1 JavaBean ConnexionMysql

JavaBeans et BD.
Deux JavaBeans utilitaires : ConnexionMysql et Villes.
Une page HTML pour se connecter.
Une page JSP pour se connecter.
Une page JSP pour récupérer une ville via son CP.

ConnexionMysql
Cn
Serveur
Bd
Ut
Mdp
ConnexionMysql()
Setters et getters
seConnecter()
seConnecter(serveur, bd, ut, mdp)
seDeconnecter()

Villes
Cp
nomVille
idPays
Villes()
Setters et getters
inserer(cn)
getOne(cn, cp)
getOne(cn)
getAll(cn)

© Pascal Buguet Imprimé le 16 novembre 2025 Page 134


JAVA – JSP

package beans;

import [Link].*;

// ------------------------
public class ConnexionMysql
// ------------------------
{
Connection cn;
String serveur;
String bd;
String ut;
String mdp;

// --- Constructeur sans argument


public ConnexionMysql()
{
}
// --- Méthodes
// -------------------------
public String seConnecter()
{
String lsMessage = "Connexion OK";

try
{
// --- Connexion MySQL
[Link]("[Link]");
String lsConnexion = "jdbc:mysql://" + [Link] + "/" + [Link];

[Link] = [Link](lsConnexion,[Link],[Link]);
[Link](false);
}
catch(ClassNotFoundException err) { lsMessage = "Erreur pilote : " +
[Link](); }
catch(SQLException err) { lsMessage = "Erreur SQL : " + [Link](); }
return lsMessage;
}
// ------------------------------------------------------------------------
public String seConnecter(String serveur, String bd, String ut, String mdp)
{
String lsMessage = "Connexion OK";

try
{
[Link] = serveur;
[Link] = bd;
[Link] = ut;
[Link] = mdp;
// --- Connexion MySQL
[Link]("[Link]");
String lsConnexion = "jdbc:mysql://" + serveur + "/" + bd;

[Link] = [Link](lsConnexion,ut,mdp);
[Link](false);
}
catch(ClassNotFoundException err) { lsMessage = "Erreur pilote : " +
[Link](); }
catch(SQLException err) { lsMessage = "Erreur SQL : " + [Link](); }
return lsMessage;
}

// ---------------------------
public boolean seDeconnecter()
{
try
{

© Pascal Buguet Imprimé le 16 novembre 2025 Page 135


JAVA – JSP

[Link]();
return true;
}
catch(SQLException err) { return false; }
}

// ----------------------
public Connection getCn()
{
return [Link];
}
// -------------------------
public void setUt(String ut)
{
[Link] = ut;
}
// ------------------
public String getUt()
{
return [Link];
}
// ---------------------------
public void setMdp(String mdp)
{
[Link] = mdp;
}
// -------------------
public String getMdp()
{
return [Link];
}
// ------------------
public String getBd() {
return bd;
}
// -------------------------
public void setBd(String bd) {
[Link] = bd;
}
// -----------------------
public String getServeur() {
return serveur;
}
// -----------------------------------
public void setServeur(String serveur) {
[Link] = serveur;
}
}

© Pascal Buguet Imprimé le 16 novembre 2025 Page 136


JAVA – JSP

1.15.2 JavaBean Villes

package beans;

import [Link];
import [Link].*;
import [Link];

// ----------------------------------------
public class Villes implements Serializable
// ----------------------------------------
{
private static final long serialVersionUID = 1L;
private String cp;
private String nomVille;
private String idPays;
private ArrayList listeVilles;

private boolean ibValide;

// --- Constructeur sans argument


public Villes()
{
}
// --- Méthodes
// -------------------------
public void setCp(String cp)
{
[Link] = cp;
[Link] = true;
}
// ------------------
public String getCp()
{
return [Link];
}
// -------------------------------------
public void setNomVille(String nomVille)
{
[Link] = nomVille;
[Link] = true;
}
// ------------------------
public String getNomVille()
{
return [Link];
}
// ---------------------------------
public void setIdPays(String idPays)
{
[Link] = idPays;
[Link] = true;
}
// ----------------------
public String getIdPays()
{
return [Link];
}

// -----------------------
public boolean getValide()
{

© Pascal Buguet Imprimé le 16 novembre 2025 Page 137


JAVA – JSP

return [Link];
}

// ---------------------------------
public String inserer(Connection cn)
{
// --- Déclarations
String lsMessage = "Insertion OK";
PreparedStatement lpstInsert = null;
String lsInsert = "INSERT INTO villes(cp,nom_ville,id_pays) VALUES(?,?,?)";
try
{
// --- Insertion
lpstInsert = [Link](lsInsert);
[Link](1, cp);
[Link](2, nomVille);
[Link](3, idPays);
[Link](lsInsert);
[Link]();
}
catch(SQLException e) { lsMessage = [Link](); }
return lsMessage;
}
// ------------------------------------------------
public String selectOne(Connection cn, String asCP)
{
// --- Déclarations
//String lsMessage = "Selection OK";
String lsNomVille = "";
PreparedStatement lpstSelect = null;
ResultSet lrs = null;
String lsSelect = "SELECT nom_ville FROM villes WHERE cp=?";
try
{
// --- Extraction
lpstSelect = [Link](lsSelect);
[Link](1, asCP);
lrs = [Link]();
[Link]();
lsNomVille = [Link](1);
}
catch(SQLException e) { lsNomVille = [Link](); }
[Link] = lsNomVille;
return lsNomVille;
}
// --------------------------------------
public ArrayList selectAll(Connection cn)
{
// --- Déclarations
ArrayList alVilles = new ArrayList();
Statement lstSelect = null;
ResultSet lrs = null;
String lsSelect = "SELECT nom_ville FROM villes";
try
{
// --- Extraction
lstSelect = [Link]();
lrs = [Link](lsSelect);
while([Link]())
{
[Link]([Link](1));
}
}
catch(SQLException e) { }
[Link] = alVilles;
return alVilles;
}
// ------------------------------

© Pascal Buguet Imprimé le 16 novembre 2025 Page 138


JAVA – JSP

public ArrayList getListeVilles()


{
return [Link];
}
}

© Pascal Buguet Imprimé le 16 novembre 2025 Page 139


JAVA – JSP

<%@page language="java" import="[Link],[Link].*" %>


<title>[Link]</title>

<jsp:useBean id="connexion" scope="application" class="[Link]" />


<jsp:setProperty name="connexion" property="serveur" value="localhost"/>
<jsp:setProperty name="connexion" property="bd" value="cours"/>
<jsp:setProperty name="connexion" property="ut" value="root"/>
<jsp:setProperty name="connexion" property="mdp" value=""/>

<%
[Link]();
Connection cn = [Link]();
%>

<jsp:useBean id="v" scope="application" class="[Link]" />


<jsp:setProperty name="v" property="cp" value="75011"/>

<%
[Link](cn);
[Link](cn);
%>

<br />Nom Ville : <jsp:getProperty name="v" property="nomVille" />

<br/>Villes : <jsp:getProperty name="v" property="listeVilles" />

<%
[Link]("<br/>Une ville de la liste : " + [Link]().get(0));
%>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 140


JAVA – JSP

[Link]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<title>[Link]</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
ConnexionViaBean
<form action="../jsp/[Link]" method="POST">
<table>
<thead>
<tr><th></th><th></th></tr>
</thead>
<tbody>
<tr><td>Serveur</td><td><input type="text" name="serveur"
value="localhost" /></td></tr>
<tr><td>BD</td><td><input type="text" name="bd" value="cours"
/></td></tr>
<tr><td>UT</td><td><input type="text" name="ut" value="root"
/></td></tr>
<tr><td>MDP</td><td><input type="text" name="mdp" value=""
/></td></tr>
<tr><td>&nbsp;</td><td><input type="submit"/></td></tr>
</tbody>
</table>
</form>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 141


JAVA – JSP

[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>
<jsp:useBean id="connexion" scope="application"
class="[Link]" >
<jsp:setProperty name="connexion" property="*"/>
</jsp:useBean>

<%
try
{
String lsOk = [Link]();

if([Link]("Connexion OK")) [Link]("Connexion OK");


else [Link](lsOk);
}
catch(Exception e) { [Link]("Erreur : " + [Link]()); }
%>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 142


JAVA – JSP

[Link]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<title>[Link]</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="../jsp/[Link]" method="get">
<label>CP ?</label>
<input type="text" name="cp" value="75011" />
<input type="submit" />
</form>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 143


JAVA – JSP

[Link]

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Link]</title>
</head>
<body>
<jsp:useBean id="villes" scope="application" class="[Link]" >
<jsp:setProperty name="villes" property="*"/>
</jsp:useBean>
<jsp:useBean id="connexion" scope="application"
class="[Link]" />

<%
[Link]([Link](), [Link]("cp"));
%>
<br/>La ville ... <jsp:getProperty name="villes" property="nomVille"/>
</body>
</html>

© Pascal Buguet Imprimé le 16 novembre 2025 Page 144

Vous aimerez peut-être aussi