Académique Documents
Professionnel Documents
Culture Documents
OBJECTIFS
1. Donner la possibilité ou l’occasion aux étudiants d’avoir
l’idée générale sur le webmastering et webdesign.
2. Exposer comment passer de l’analyse à la conception dans
la programmation Web.
3. Faire la programmation orientée objet avec les langages
web.
4. Etre capable de développer des programmes en fusionnant
plusieurs langages web et en utilisant de bonnes pratiques.
5. Initier les étudiants à travailler en équipe.
II. PREREQUIS
Pour bien assimiler le cours l’étudiant est censé déjà programmé
au moins dans un langage classique et d’avoir une connaissance
sur les cours de Méthode d’analyse Informatique et Base de
données.
<HTML>
<HEAD>
<TITLE>Titre de la page</TITLE>
</HEAD>
<BODY>
Contenu de la page
</BODY>
</HTML>
A l’affichage on aura :
Élément 1
Élément 2
Élément 3
La liste ordonnée est encadrée par les balises <ol> et </ol> ;
Les éléments de la liste sont encadrés les balises<li> et </li> ;
La balise <li> peut avoir un attribut nommé« type » ;
L’attribut ‘type’ peut avoir pour valeurs :
o 1 : numérotation chiffrée (par défaut) ;
o A : numérotation en lettres majuscules ;
o a : numérotation en lettres minuscules ;
o I : numérotation en chiffres romains majuscules (I, II, III, IV ...) ;
o i : numérotation en chiffres romains minuscules.
A l’affichage on aura :
Elément 1
Elément 2
Elément 3
La liste non ordonnée est encadrée par les balises <ul> et </ul> ;
Les éléments de la liste sont encadrés les balises<li> et </li> ;
La balise <li> peut avoir un attribut nommé« type » ;
L’attribut type peut avoir pour valeurs :
o Circle : puce circulaire ;
o Square : puce carrée ;
o Disc : puce en disque.
Terme1
Page 11 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
Définition du Terme1 ;
Terme2
Définition du Terme2 ;
Terme3
Définition du Terme3.
Hormis l’attribut TYPE, les listes peuvent aussi avoir les attributs
suivants :
o COMPACT : pour resserrer l'interligne ;
o PLAIN : pour supprimer les puces ;
o SEQNUM : pour définir le premier numéro ;
o START : pour déterminer le premier numéro.
o CONTINUE : repart du numéro où il s'était arrêté à la liste
précédente.
<TABLE >
<CAPTION> Titre du tableau </CAPTION>
<TR>
<TH> Titre 1 </TH>
<TH> Titre 2 </TH>
Page 12 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
<TH> Titre 3 </TH>
<TH> Titre 4 </TH>
</TR>
<TR>
<TH> Titre 5 </TH>
<TD> Donnée 1 </TD>
<TD> Donnée 2 </TD>
<TD> Donnée 3 </TD>
</TR>
</TABLE>
On aura le résultat suivant:
Titre du tableau
Titre 1 Titre 2 Titre 3 Titre 4
Titre5 Donnée 1 Donnée 2 Donnée 3
L’utilisation des images dans un site web est importante car elle
permet de rendre celui-ci plus attractif. Il faut cependant éviter
l’usage excessif des images, au risque d’augmenter le temps de
chargement du site et de nuire à sa lisibilité.
En HTML, les images sont insérées par la balise <IMG>. Les attributs
de cette balise sont suivants :
SRC : permet déterminer l’url de l’image. Cet attribut est
obligatoire ;
ALT : permet de définir un texte alternatif qui s’affichera au cas
où l'image spécifiée ne s'afficherait pas. Sa valeur un est une
chaîne des caractères;
Code HTML
< Link href = “nom de fichier. css “ rel =“stylesheet“ type =“text /css“>
<Html>
< Head>
<Title>……………………< /title>
<style type=”text/css”>………………< /style>
< /head>
1. Balise1
2. {
3. Propriété : valeur ;
4. Propriété : valeur ;
5. Propriété : valeur ;
6. }
7. Balise2
8. {
9. Propriété : valeur ;
10. Propriété : valeur ;
11. Propriété : valeur ;
12. }
13. Balise3
14. {
15. Propriété : valeur ;
16. }
Code CSS
1. Important
2{
3 color: red;
Page 29 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
4 font-size: 18 px ;
5}
b) Id
L’attribut id fonctionne exactement de la même manière que
class, à un détail près : Il ne peut être utilisé qu’une fois.
Un nom d’id doit commencer par une lettre et peut être suivi de
lettres et de chiffres.
Avantage :
- il y en a assez peu pour tout vous dire, cela vous sera utile si vous
faites du JavaScript plus tard pour reconnaitre certaines
balises.
- En pratique, nous ne mettrons des id que sur des éléments qui
sont uniques sur votre page, comme par exemple le logo : <img
src = « images/ logo.jpg » >
Dans le css, ce n’est pas un point que vous devez mettre le nom
de l’id mais un dièse (#).
Code : CSS
1. #logo
2. {
3. /* Mettez les propriétés css ici */
4. }
Exercice
Code (X)HTML
<html>
<head>
<title> Titre de la page</title>
<link rel=’’stylesheet’’ type=’’text/css’’ href=’’design.css’’>
</head>
<body>
<ul id="menu">
<li><a href="#accueil">Accueil</a></li>
Résultat final
Accueil
Historique
Galerie
Contact
Infos
Evénement Description
Click Lorsque l'utilisateur clique sur un bouton, un lien ou tout
autre élément.
Load Lorsque la page est chargée par le browser ou le
navigateur.
Unload Lorsque l'utilisateur quitte la page
MouseOver Lorsque l'utilisateur place le pointeur de la souris sur un
lien ou tout autre élément
MouseOut Lorsque le pointeur de la souris quitte un lien ou tout
autre élément.
Focus Lorsqu’un élément de formulaire a le focus c.-à-d.
devient la zone d'entrée active.
Blur Lorsqu‘un élément de formulaire perd le focus c.-à-d.
que l'utilisateur clique hors du champ et que la zone
d'entrée n'est plus active.
Change Lorsque la valeur d'un champ de formulaire est
modifiée.
Select Lorsque l'utilisateur sélectionne un champ dans un
élément de formulaire
Submit Lorsque l'utilisateur clique sur le bouton Submit pour
envoyer un formulaire
I.4.3.7. OnChange
Cet événement s'apparente à l'événement onBlur mais avec une
petite différence. Non seulement la case du formulaire doit
avoir perdu le focus mais aussi son contenu doit avoir été
modifié par l'utilisateur.
Page 38 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
II.4.3.8. OnSelect.
Cet événement se produit lorsque l'utilisateur a sélectionné (mis en
surbrillance ou en vidéo inverse) tout ou partie d'une zone de
texte dans une zone de type text ou textarea.
II.4 .4. Gestionnaires d'événement disponibles en JavaScript.
Il nous semble utile dans cette partie "avancée" de présenter
la liste des objets auxquels correspondent des gestionnaires
d'événement bien déterminés.
Objets Gestionnaires d'événement disponibles :
Objet Evénement
Fenêtre onLoad, onUnload
Lien hypertexte onClick, onmouseOver, onmouseOut
Elément de texte onBlur, onChange, onFocus, onSelect
Elément de zone de onBlur, onChange, onFocus, onSelect
texte
Elément bouton OnClick
Case à cocher OnClick
Bouton Radio OnClick
Liste de sélection onBlur, onChange, onFocus
Bouton Submit OnClick
Button Reset OnClick
II.7. Méthodes
Une méthode est une fonction associée à un objet, c’est-à-dire
une action que l’on peut faire exécuter à un objet. Les méthodes
des objets des navigateurs sont des fonctions définies à l’avance
par les normes HTML, on ne peut donc pas les modifier.
c. if…elseif…else
II.8.1.2. Switch
Cette structure permet de faire des tests sur une expression
équivalent à la structure if…else if…else à la seule différence près
que cette dernière pointe directement là où la condition est
Syntaxe :
Exemple :
II.10.1. Généralités
Propriété Description
Name indique le nom du contrôle par lequel on pourra
accéder.
Default indique la valeur par défaut qui sera affichée dans
value la zone de texte.
Value indique la valeur en cours de la zone de texte. Soit
celle tapée par l'utilisateur ou si celui-ci n'a rien
tapé, la valeur par défaut.
Code associé :
Exemple :
Propriété Description
Name indique le nom de la liste déroulante
Length Indique le nombre d’éléments de la liste. S’il est
indiqué dans le tag <select>, tous les éléments
de la liste seront affichés. S’il n’est pas indiqué, un
seul apparaitra dans la boite de la liste
déroulante.
SelecteIndex Indique le rand à partir de 0 de l’élément qui a
été sélectionné par l’utilisateur
Defaultselected indique l'élément de la liste sélectionné par
défaut. C'est lui qui apparaît alors dans la petite
boite.
Code associé :
Propriété Description
Name indique le nom du contrôle par lequel on pourra
accéder
DefaultValue indique la valeur par défaut qui sera affichée dans
la zone de texte.
Value indique la valeur en cours de la zone de
texte. Soit celle tapée par
l'utilisateur ou si celui-ci n'a rien tapé, la valeur par
défaut.
Page 70 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
A ces propriétés, il faut ajouter onFocus(), onBlur(), onSelect() et
onChange().
En JavaScript, on utilisera \r\n pour passer à la ligne.
Comme par exemple dans l'expression document.Form.Text.value
= 'Check\r\nthis\r\nout'.
I.10.8. Le contrôle Reset.
Le contrôle Reset permet d'annuler les modifications apportées
aux contrôles d'un formulaire et de restaurer les valeurs par défaut.
La syntaxe Html est :
Où value donne le texte du bouton.
Une seule méthode est associée au contrôle Reset, c'est la
méthode onClick(). Ce qui peut servir, par exemple, pour faire
afficher une autre valeur que celle par défaut.
II.10.9. Le contrôle Submit
Le contrôle à la tâche spécifique de transmettre toutes les
informations contenues dans le formulaire à l'URL désignée dans
l'attribut ACTION du tag <FORM>.
La syntaxe Html est :
Où value donne le texte du bouton.
Une seule méthode est associée au contrôle Submit, c'est la
méthode onClick()
I.10.10. Le contrôle Hidden (caché)
Le contrôle Hidden permet d'entrer dans le script des éléments
(généralement des données) qui n'apparaîtront pas à l'écran. Ces
éléments sont donc cachés. D'où son nom.
La syntaxe Html est :
Exemple :
1)
Pour être complet, this est utilisé aussi pour créer une ou plusieurs
propriétés d'un objet. Ainsi, pour créer un objet livre avec les
propriétés auteur, éditeur et prix cette opération peut être
effectuée à l'aide de la fonction :
Comme toute bibliothèque, jQuery doit être inclus dans les pages
tels un script JavaScript écrit par vos soins.
Une fois cela fait, on suppose que le fichier jQuery est prêt à être
exploiter dans les pages web (html ou php), il ne reste plus qu’à
l’importer.
Prototype :
Exemple :
b. L’id
Expression : #id
Exemple : #nom
Exemple :
c. La classe
Expression : .classe
Exemple : .nom
Exemple :
4. Les formulaires
jQuery va nous être utile lorsque l’on voudra traiter les informations
coté client pour les valides avant de les envoyer sur le serveur par
exemple. Ou encore, envoyer les données en asynchrone (AJAX).
Pour pouvoir envoyer ces informations, ces valeurs, il va nous falloir
les récupérer dans la page.
Ce point nous est vraiment utile quand nous allons envoyer les
informations dans la base de données grâce à AJAX.
a. Boutons
En HTML5, tout comme dans les précédentes versions, il y a 4 sortes
de boutons :
Sélectionner les éléments c’est bien, les manipuler c’est mieux. Les
méthodes sont là pour ça, et jQuery en intègre beaucoup.
1. Utilisation
Pour appliquer ces modifications, on utilise bien souvent des
méthodes jQuery. Celles-ci se présentent et s’appliquent à l’objet
de cette façon :
a. Affichage et masquage
Il est très courant de devoir afficher ou masquer des éléments de
pages web, et pour cela on n’a que l’embarras du choix puisque
on peut faire cela avec ou sans animation. En ce qui concerne les
méthodes sans animées elles ont au nombre de deux :
Durée en millisecondes
Une fonction qui va définir l’animation. (linear, easing).
II.12.5. Envoie des informations dans la base de données grâce à
jQuery(AJAX)
Exemple :
III.1. PHP
III.1.1. Introduction
Créer des pages PHP n’oblige pas à créer tout le site dans ce
langage. Les pages peuvent être mélangées avec d’autres sur le
même site. La seule manière de vérifier le type de page est de
vérifier l’extension de la page internet, et encore puisse que des
pages en HTML peuvent être simplement renommée en PHP pour
des développements futurs.
<php> : Cette ligne explique que nous avons démarré une liste de
commande PHP.
III.1.2. Utilitaires
Par exemple :
Exemple :
Tout ça, parce que bien qu’elle a été déclarée, mais elle n’a pas
été encore initialisée, le serveur ne reconnait pas encore. Voilà le
pourquoi de son inexistence. Si on tente de faire comme ceci :
Exemple :
Exemple :
Exemple :
Seuls les types de données scalaires peuvent être placés dans une
constante : c'est à dire les types booléens, entier, double et
chaîne de caractères (soit bool, integer, double et string).
Explications :
A. L'incrémentation.
B. La décrémentation.
Bien que nous ayons l’anticiper plus haut, PHP fournit 3 fonctions
permettant d'envoyer du texte au navigateur. Ces fonctions ont la
particularité de pouvoir insérer dans les données envoyées des
valeurs variables, pouvant être fonction d'une valeur récupérée
par exemple, c'est ce qui rend possible la création de pages
dynamiques.
echo
print
printf
III.1.7.1. Echo
echo Expression;
III.1.7.2. Print
print (expression);
Page 114 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
L'expression peut, comme pour la fonction echo être une chaîne
de caractères ou une expression que l'interpréteur évalue :
Exemple :
III.1.7.3. Printf
a. si simple (if)
Cette forme de if simple permet l’exécution d’une série
d’instructions que si la condition est satisfaisante. Au cas contraire
rien ne va se produire.
Syntaxe :
Exemple :
b. if…else
Cette forme a généralement deux blocs des séries d’instruction, le
premier est exécuté si la condition est satisfaisante au cas
contraire le second.
Syntaxe :
c. if…else if…else
Cette forme permet d’exécuter plus d’un bloc d’instructions
chacun selon la condition associée.
Syntaxe :
Résultat :
d. La structure switch
La structure switch permet d’éviter la lourdeur de l’écriture de la
structure if…elseif…else. Elle permet en outre une meilleure
lisibilité.
a. Boucle while
Syntaxe :
Résultat :
c. Boucle for
Syntaxe :
Résultat :
Format Description
J Jour du mois, sans les 0, soit de 1 à 31
D Jour du mois avec 2 chiffres, soit de 01 à 31
D Jour de la semaine sur 3 lettres, en anglais
L Jour de la semaine (en anglais)
M Mois, de 01 à 12
N Mois, sans les 0 initiaux (de 1 à 12)
M trois premières lettres du mois en anglais
Y année en 4 chiffres
Page 123 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
Y année en 2 chiffres
Z jour de l'année (de 0 à 365)
H heure, de 0 à 12
H heure, de 0 à 24
S secondes avec les 0, de 00 à 59
S secondes, sans les zéros.
A am pour le matin, pm pour l'après-midi
A AM pour le matin, PM pour l'après-midi
Exemple :
Résultat :
Exemple :
Résultat :
Exemple :
Résultat :
Résultat :
foreach ().
Syntaxe :
Résultat :
foreach() aussi bien énumérer le nom des variable que leur valeur.
Page 130 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
Exemple :
Résultat :
Exemple :
Exemple :
Résultat :
Syntaxe :
Méthode Description
‘r’ Ouvre en lecture seule, et place le pointeur de fichier
au début du fichier.
‘r+’ Ouvre en lecture et écriture, et place le pointeur de
fichier au début du fichier.
‘w’ Ouvre en écriture seule ; place le pointeur de fichier au
début du fichier et réduit la taille du
fichier à 0. Si le fichier n'existe pas, on tente de le créer.
‘w+’ Ouvre en lecture et écriture ; place le pointeur de
fichier au début du fichier et réduit la taille du
fichier à 0. Si le fichier n'existe pas, on tente de le créer.
‘a’ Ouvre en écriture seule ; place le pointeur de fichier à
la fin du fichier. Si le fichier n'existe pas, on
tente de le créer.
‘a+’ Ouvre en lecture et écriture ; place le pointeur de
fichier à la fin du fichier. Si le fichier n'existe
pas, on tente de le créer.
Page 135 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
Exemple :
a) Fgets()
string fgets ( resource handle ,int length )
Syntaxe :
Exemple :
Code source :
Résultat :
Syntaxe :
Exemple :
Résultat :
c) File()
array file (string filename)
Exemple :
Syntaxe :
Exemple 1 :
formulaire.php
formulaire.php
à la place de
page.php
III.14.3. Redirection
Syntaxe :
Exemple :
Un autre exemple :
Les variables ont une durée de vie limitée : celle du script qui les
appelle. Ainsi que nous l‘avons vu dans les précédentes l‘unique
moyen de transmettre ces variables de pages en pages consiste à
effectuer un passage de paramètres (méthode GET ou POST)
ce qui d‘une manière générale est contraignant à plus d‘un
titre :
Syntaxe :
Exemple :
Syntaxe :
a) session_start()
session_start() permet de démarrer une session pour le client.
Syntaxe :
Syntaxe :
Exemple :
Résultat :
Exemple :
Résultat :
III.2.1. Introduction
A. Les tables
Les tables sont les entités de base permettant de stocker les
informations au sein d‘une base de données. Cependant, avant
de créer une table il faudra d‘abord créer la base des données
qui la contiendra.
B. Manipulations de données.
B.1. Interrogation de la base de données
Exemple :
Exemple :
Nous allons ici utiliser PDO car c’est cette méthode d’accès aux
bases de données qui est la plus utilisée dans les versions actuelles
de PHP. D’autre part, le gros avantage de PDO est qu’on peut
l’utiliser de la même manière pour se connecter à n’importe quel
autre type de base de données (PostgreSQ, Oracle…) comme
illustre la figure suivante :
Voici comme faire pour gérer les erreurs qui peuvent survenir :
Page 160 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
Là, PHP essaie d’exécuter les instructions à l’intérieur du bloc try.
S’il y a une erreur, il rentre dans le bloc catch et fait ce qu’on lui
demande.
! Astuce : Le champ Code étant un INT, pour faire en sorte qu’il soit
auto incrément après que la table ait été créée, il suffit de taper le
code SQL suivant.
Résultat :
Remarquez que nous avons qu’un article affiché, alors que nous
avions plusieurs articles dans la base de données.
Pour résoudre ce problème, on doit recourir à une boucle qui va
permettre de parcourir les entrées une à une jusqu’à la dernière.
Chaque fois qu’on va appeler $ligne=$req->fetch(), on passera à
l’entrée suivante. La boucle est donc répétée autant de fois qu’il y
a d’entrées dans la table.
De ce fait, nous résumons tout ce qu’il nous faut pour avoir le
résultat entendu comme ceci dans le fichier qui va afficher les
informations (index.php pour notre cas ici) :
Lorsqu’une requête SQL « plante », bien souvent PHP vous dira qu’il
a eu une erreur à la ligne du fetch :
Application en PHP :
En utilisant cette requête SQL au sein d’un script PHP, cette fois-ci,
au lieu de faire appel à query() (que l’on a utilisé dans le point
précédent qui portait sur la récupération de données), on va
utiliser exec() qui est prévue exécuter des modifications sur la base
de données.
Créons un fichier nommé insertion.php pour pratique ceci et il faut
inclure le fichier de connexion à la base de données (rappelez-
vous : connexinDB.php).
Voici l’intégralité de code d’insertion :
Application en PHP
On crée un fichier modification.php qui nous servira de
comprendre ceci :
Objet
(Instance d’une classe)
Objet
(Instance d’une classe)
Objet Objet
(Instance d’une classe) (Instance d’une classe)
Exemple :
Pour nos exemples, nous allons imaginer que nous créons une
classe Etudiant qui représente un étudiant de notre université.
Nous pouvons charger cet étudiant à partir des informations
enregistrées en base de données, lui demander son matricule, son
nom, son prenom, son age, sa date de naissance, mais lui
modifier, lui supprimer(en cas de renvoi). Bien évidemment n’est
qu’un exemple. Il est donc recommandé de créer un fichier PHP
qui contiendra uniquement la définition de la classe et que l’on
inclura à chaque fois qu’on en a besoin. Notre fichier sera donc
nommé Etudiant.class.php
Il est de bonne habitude de donner l’extension .class.php aux
fichiers contenant des classes pour bien les distinguer des autres
fichiers dans un projet.
- un matricule ;
- un nom ;
- un prenom ;
- un âge ;
- une date de naissance.
Cela étant un exemple, toutefois on peut ajouter d’autres pour
l’exhaustivité.
Exemple :
Avec peu d’effort, on a créé une nouvelle classe qui réutilise une
classe existante. On peut donc appeler les fonctions setMatricule,
setNom comme pour les étudiants, et on peut en plus effectuer de
nouvelles opérations, comme définir une fonction ce matricule et
nom.
Page 195 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
Les droits d‟accès et l‟encapsulation
Modèle : cette partie gère les données de votre site. Son rôle
est d’aller récupérer les informations « brutes » dans la base
de données, de les organiser, de les ressembler pour qu’elles
puissent ensuite être traitées par le contrôleur. On y trouve
donc des requêtes SQL. Parfois, les données ne pas stockées
dans une base de données. C’est plus rare, mais on peut
être amené à aller chercher des données dans des fichiers.
Dans ce cas, le rôle du modèle est faire les opérations
d’ouverture, de lecture et de l’écriture des fichiers (rappelez-
vous des fonctions fopen, fgets, etc…)
Vue : cette partie se contente sur l’affichage. Elle ne fais
presque aucun calcul et se contente de récupérer des
variables pour savoir ce qu’elle doit afficher. On y trouve
essentiellement du HTML mais aussi quelques boucles et
conditions PHP très simples, pour afficher par exemple du
texte.
Contrôleur : cette partie gère la logique du code qui prend
de décision. C’est en quelque sorte l’intermédiaire entre le
modèle et la vue. Le contrôleur va demander aux modèles
Modèle
Contrôleur
Contrôleur
<html>
echo
Vue
Architecture du MVC
Retenez donc que c’est le contrôleur qui chapote : c’est lui qui
reçoit la requête du visiteur et qui contacte d’autres fichiers (le
modèle et la vue) pour échanger des informations avec eux.
modele ;
vue ;
controleur.
Amélioration de l‟exemple précédent en respectant l‟architecture
MVC
modele/etudiant
vue/etudiant
controleur/etudiant
On peut commencer par travailler sur l’élément que l’on veut ; il
n’y a pas d’ordre particulier à suivre, on peut aussi travailler à trois
en parallèle sur chacun de ces éléments). On propose donc de
commencer par le modele, le contrôleur et enfin la vue.
Modele
On crée un fichier get_etudiant.php dans modele/etudiant. Ce
fichier contiendra une fonction dont le rôle sera de retourner la
liste des étudiants. Ce fichier contient donc :
Le contrôleur
Le contrôleur étant le maitre de l’application. Il demande au
modèle les données, les traite et appelle la vue qui utilisera ces
données pour afficher la page.
Notez qu’on opère sur les clés du tableau plutôt que sur $valeur
directement. En effet, $valeur est une copie du tableau $etudiant
créée par le foreach. $valeur n’existe qu’à l’intérieur du foreach, il
est ensuite supprimé.
La vue
Le fichier de la vue devra simplement afficher le contenu du
tableau $etudiant sans se soucier de la sécurité ou des requêtes
SQL.
• Caucho Resin
• JBoss
Page 203 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
• JOnAS serveur d'application Open Source proposé par OW2
• GlassFish serveur d'application Open Source de Oracle
• Apache Geronimo de la Fondation Apache
• LTSP Cluster, une infrastructure libre pour le déploiement massif et
centralisé de terminaux
• Zope
• 2X ApplicationServer
• Oracle WebLogic Server
• Borland Application Server
• Citrix
• IBM Websphere Application Server
• Microsoft ASP.NET
• Novell exteNd Application Server
• Oracle Application Server
• Orion
• Sun Java System Application Server
• Sybase EAServer
• Systancia AppliDis Fusion 4
• WebDev PC SOFT
Exemple :
http://www.exemple.com/chemin/ressource?param1=param1&p
aram2=param2
IV.1.4. Le protocole HTTP
Exemple:
A. Présentation
Une servlet est une classe Java héritant des classes GenericServlet
ou HTTPServlet. Comme il sera dans notre cas question de
traitement des requêtes HTTP, nous n’utiliserons que la classe
HTTPServlet.
1. La classe PremiereServlet.
Cette classe hérite de la classe HttpServlet, elle est donc une
servlet pouvant gérer des requêtes HTTP.
Méthode Rôle
Retrouver le corps d’une requête en
ServletInputStream
binaire.
getInputStream()
Retourne un objet de type
Page 217 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
ServletInputStream
permettant de lire le corps d’une
requête.
Retrouver le corps d’une requête en
caractères.
BufferedReader Retourne un objet de type
getReader() BufferedReader
permettant de lire le corps d’une
requête.
Retrouver la portion d’URL
correspondant au
String getContextPath() contexte de l’application dans lequel
la servlet est
exécuté.
Obtenir le type de contenu du corps
String getContentType()
d’une requête
Object Obtenir la valeur de l’attribut portant
getAttribute(String le nom passé
nomAttribut) en paramètre.
Obtenir l’adresse IP de l’interface sur
String getLocalAddr() laquelle la
requête a été reçue
Obtenir le nom de l’hôte de l’interface
String getLocalName() sur laquelle
la requête a été reçue
Obtenir le port de l’interface sur
int getLocalPort() laquelle la requête
a été reçue
Obtenir de nom de la méthode HTTP
String getMethod() qui a été
utilisée pour envoyer la requête
Obtenir la valeur du paramètre
getParameter(String (portant le nom
nomParam) passé en paramètre de la méthode)
d’une requête
Obtenir une Enumeration de tous les
Enumeration <String>
noms des
getParameterNames()
paramètres de la requête
Page 218 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
Obtenir sous forme de tableau de
String [] chaîne de
getParameterValues(Stri caractère toutes les valeurs du
ng paramètre (portant le nom passé en
nomParam) paramètre de la méthode) de la
requête.
Obtenir l’adresse IP du client ayant
String getRemoteAddr() envoyé la
requête.
Obtenir le port du client ayant envoyé
int getRemotePort()
la requête.
Obtenir le contexte de la servlet dans
ServletContext
lequel la
getServletContext()
requête a été envoyée
Obtenir la session courante associée à
HttpSession getSession() la requête. Si la requête n’a pas de
session une nouvelle session est créée
Obtenir un objet de type
RequestDispatcher qui
encapsule la ressource passée en
RequestDispatcher
paramètre. Cet objet
getRequestDispatcher(S
RequestDispactcher peut à son tour
tring
être
ressource)
utilisé pour expédier une requête à la
ressource ou inclure la ressource dans
la réponse.
Méthode Rôle
Obtenir un OutputStream pour écrire
ServletOutputStream
des données
getOutputStream()
binaires dans la réponse.
Obtenir un objet de type PrintWriter
PrintWriter getWriter() afin d’écrire des données sous forme
de caractères au client.
int getStatus() Obtenir le code d’état de la réponse
void Modifie le type de contenu de la
Page 219 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
setContentType(String réponse si celle-ci n’a pas encore été
contentType) envoyée
3. Les sessions
Pour pouvoir identifier chaque client, le serveur utilise un système
de session permettant automatiquement d’attribuer un
identificateur unique à chaque utilisateur. Chaque client
possédera donc un objet HttpSession qui sera unique. Cet objet
permettra aussi de sauvegarder n’importe quel objet Java afin de
pouvoir les réutiliser dans une autre servlet par exemple.
A. Introduction
Une JSP est un document texte composé de deux types de
contenu :
• Un contenu statique - Ce type de contenu peut être dans des
formats tels que HTML, XML, SVG et WML.
• Un contenu dynamique - Ce type de contenu est pour le plus
souvent du code Java
Concrètement, les JSP sont basées sur les servlets. Au premier
appel de la page JSP, le moteur de JSP génère et compile
automatiquement une servlet qui permet la génération de la
page Web. Le code HTML est repris intégralement dans la servlet.
Le code Java est inséré dans la servlet.
2. Les directives
Les directives servent à contrôler comment le conteneur de servlet
va gérer les JSP. Elles permettent :
• D’importer un package
• D’inclure d’autres pages JSP
• D’inclure des bibliothèques de balises
• De définir des propriétés et informations relatives à une JSP
Les directives sont toujours placées dans les balises <%@ et %>.
La page index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
La servlet PremiereServlet.java
@WebServlet(name = "PremiereServlet", urlPatterns =
{
"/premiereservlet"
})
public class PremiereServlet extends HttpServlet
{
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
HttpSession session = request.getSession();
String msg;
String nom = request.getParameter("nom");
String postNom = request.getParameter("post_nom");
String prenom = request.getParameter("prenom");
int age = 0;
try
{
age = Integer.valueOf(request.getParameter("age"));
}
catch (NumberFormatException numberFormatException)
{
msg = "Erreur: Veuillez entrer une valeur exacte pour l'age";
session.setAttribute("msg", msg);
Page 226 sur 230
Par Ir kam‟s KANYINDA Cours de programmation Internet en L2 Informatique et
Math-Info / ISP Mbanza Ngungu
[2020 - 2021]
request.getServletContext().getRequestDispatcher("/index.jsp"
).forward(request, response);
}
Personne personne = new Personne(nom, postNom, prenom,
age);
session.setAttribute("personne", personne);
session.removeAttribute("msg");
request.getServletContext().getRequestDispatcher("/newjsp.jsp").
forward(request, response);
}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse
response)
throws ServletException, IOException
{
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse
response)
throws ServletException, IOException
{
processRequest(request, response);
}
}
[4] M. Nebra, Concevez votre site web avec PHP et MySQL Creative
Commons 6. 2.0, 2012.
[12] Jim Kurose, Keith Ross - Analyse structurée des réseaux, Edition Pearson
Education