2
Plus lue
5
Plus lue
7
Plus lue
1
Développement WEB avec Java
JSP/ Servlet /javaBean
Fonctionnement du Web
2
3
4
Construction d'une application Web
Préparer une arborescence par exemple dans le répertoire SiteWebTP. A partir de la racine de
cette arborescence placer correctement :
 le répertoire WEB-INF
 le répertoire classes où seront placées les servlets compilés
 le fichier web.xml
5
Le déploiement est une étape essentielle de la mise en place d’une application web. En effet,
le serveur doit être capable de localiser les servlets et les JSP invoquées par le navigateur.
6
7
8
9
Application JSP/Servlet
Lorsque l'utilisateur soumet ce formulaire, son nom est envoyé au servlet Hello parce nous
avons mis l'attribut ACTION pointer vers le servlet. Le formulaire utilise la méthode Get,
de sorte que toutes les données sont ajoutées (appended) à la requête URL comme une requête
de chaîne.
Par exemple, si l'utilisateur entre le nom "Inigo Montoya," la requête URL est
http: //serveur: 8080 / servlet / Hello ? name = Inigo +Montoya .
10
L'espace dans le nom est spécialement codé comme un signe plus par le navigateur (browser),
car les URL ne peuvent pas contenir d'espaces
Une servlet qui sait à qui dit Hello
La méthode getServletInfo( ) donne des informations descriptives sur le servlet.
11
JSP
Traducteur sous forme Servlet (méthode Get)
Import java.io.* ;
Import javax.servlet.* ;
Import javax.servlet.http.* ;
public class traduire extends HttpServlet(
// traiter la requête avec doGet( )
Public void doGet (HttpServletRequest req, HttpServletResponse rep)
Throws IOException, ServletException(
12
//Initialisation du type de la réponse
rep.setContentType (text/html)
// Ouverture du flux de la réponse http
PrintWriter pw=rep.getWriter ( ) ;
// Envoyer le code HTML sur le flux http
pw.println (<html>) ;
pw.println (<head>) ;
pw.println (<title>Une servlet pour traduire </title> ) ;
pw.println (</head>) ;
pw.println (<body bgcolor=’white’>) ;
// Vérifier si une phrase est transmise avec la requête
If (req.getParameter (phrase) == null) {
pw.println (<font size=+1>) ;
pw.println (Je n’ai pas de phrase à traduire</font>) ;
}
else {
//traiter la phrase fournie en paramètre
String phrase = req.getParameter (phrase) ;
phrase = phrase.replace (‘a’,’*’) ;
phrase = phrase.replace (‘o’,’ !’) ;
phrase = phrase.replace (‘e’,’%’) ;
}
pw.println (</body>) ;
pw.println (</html>) ;
}
}
Traducteur sous la forme d’un JSP
<html>
<head>
<title> Un JSP pour traduire une phrase </title>
</head>
13
<%--debut de scriplet --%>
<%
<%--rechercher le paramètre phrase transmis avec la requête --%>
String p= request.getParameter (phrase) ;
if (p !=null) {
<%-- si p ne vaut pas null, un paramètre est transmis le traiter --%>
p = p.replace (‘a’,’*’) ;
p = p.replace (‘o’,’ !’) ;
p = p.replace (‘e’,’%’) ;
%>
<%-- fin du if, affichage à l’aide de balises HTML --%>
<%-- affichage du contenu de p --%>
<p> J’ai compris : <%=p%> </p>
<%-- debut du else --%>
<%-- si il n’y a pas de paramètre transmis p vaut null --%>
} else {
%>
<%-- affichage à l’aide de balises HTML --%>
<p> Erreur : vous avez oublié la phrase à traduire <BR>
Exemple : http://localhost:8080/jsp/traduire.jsp?phrase=cours JSP LST IGI </p>
<%-- fin de else, fin de la scriplet --%>
<%
}
14
%>
</body>
</html>
Traducteur avec javaBean
// Un javabean doit être sérialisable pour être envoyer sur un flux
Import java.io.Serializable
public class phrase implements java.io.Serializable (
// Définition de la propriété de javaBean
private string phrase ;
// Définition de la méthode d’accès à la propriété, en modification
// Cette méthode remplace les caractères de la propriété de l’objet
Public void setphrase (string p) {
Phrase=p ;
phrase = phrase.replace (‘a’,’*’) ;
phrase = phrase.replace (‘o’,’ !’) ;
phrase = phrase.replace (‘e’,’%’) ;
}
// Définition de la méthode d’accès à la propriété, en consultation
Public void getphrase ( ) {
Return phrase ;
}
}
Un JSP qui appelle le javaBean phrase
<html>
15
<head>
<title> Java Bean pour traduire une phrase </title>
</head>
<body>
<%--Utiliser phrase.class, comme JavaBean avec comme nom d’objet p --%>
<jsp :useBean id=p class= phrase/>
<%--Placer dans la propriété phrase de l’objet p --%>
<%--la valeur du paramètre transmis avec la requête --%>
<jsp :setProperty name=p property= phrase param= param />
<%--récupérer la valeur de la propriété de l’objet p --%>
<BR> J’ai compris : <jsp :getProperty name=p property= phrase />
</body>
</html>
16
Application : Résultat d’une enquête
Le servlet stocke les résultats d’une enquête concernant vos animaux de compagnie préférés
sur le serveur. Lorsqu’un utilisateur répond à l’enquête, le servlet HTTPPostServlet envoie
un document HTML au client qui résume les résultats de l’enquête jusqu’à ce stade.
L’utilisateur choisit son animal préféré dans un bouton radio de la page Web de la figure puis
appuie sur Soumettre. Le navigateur envoie une requête POST en HTTP au servlet; celui-ci
réagit en lisant les résultats précédents de l’enquête dans un fichier sur le serveur, il met les
résultats du sondage à jour, les réinscrit sur le fichier du serveur, et il envoie enfin une page
Web au client qui lui indique les résultats cumulés de l’enquête.
17
18
19
La méthode doPost commence par déterminer si le fichier sondage.txt existe sur le serveur.
La ligne 18 définit un objet File nommé f dans ce but. Le programme ne fournit pas
d’emplacement pour le fichier. Par défaut, les fichiers créés par un servlet exécuté par le
WebServer JSDK sont stockés dans le répertoire d’installation du JSDK (jsdk2.1). Vous
pouvez imposer l’emplacement de stockage du fichier au moment de la création de l’objet
File.
À la ligne 20, si le fichier existe, son contenu est lu par le servlet, de sorte que les résultats du
sondage seront mis à jour et renvoyés au client en cours. Si le fichier n’existe pas, c’est-à-dire
si la requête actuelle est la toute première réponse au sondage, la méthode doPost crée le
fichier un peu plus loin dans le code.
20
Le tableau d’entiers animaux stocke le nombre de réponses pour chaque type d’animal. Si le
fichier qui contient les résultats précédents au sondage existe, alors les lignes 23 à 30 ouvrent
un ObjectInputStream pour lire le tableau d’entiers animaux et totaliser le nombre de
réponses qui ont été reçues jusqu’à cette étape. Lorsque le servlet crée le fichier et stocke le
tableau d’entiers, il utilise un ObjectOutputStream pour écrire le fichier.
La ligne 42 incrémente le total pour indiquer qu’il y a une réponse de plus au sondage.
Les lignes 45 à 47 déterminent l’animal sélectionné par le client et mettent à jour le total de
l’animal adéquat. Les lignes 50 à 55 ouvrent un ObjectOutputStream pour stocker les
résultats mis à jour de l’enquête dans le fichier sondage.txt. Ce fichier garantit que, même si
le servlet est interrompu et redémarré, les résultats du sondage demeurent sur disque.
Les lignes 58 à 61 préparent le pourcentage du total des votes qui représentent chaque animal.
Ces résultats sont renvoyés à l’utilisateur dans une partie de la HttpServletResponse.
Nous préparons la réponse à partir de la ligne 64, où la méthode setContentType de
ServletResponse spécifie que le contenu sera du texte d’un document HTML (text/html).
La ligne 66 utilise la méthode getWriter de ServletResponse pour obtenir une référence à un
objet PrintWriter et affecte celle-ci à sortieReponse. Cette référence sert à envoyer la
réponse au client. Le StringBuffer tamp de la ligne 67 stocke le contenu de la réponse
pendant que le servlet prépare le document HTML. Les lignes 68 à 86 préparent son contenu
par une suite d’appels à la méthode append de StringBuffer.

Contenu connexe

PPTX
Architectures orientés services (SOA)
PDF
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
PDF
Support de cours Spring M.youssfi
PDF
Appalications JEE avec Servlet/JSP
PDF
Angular Framework présentation PPT LIGHT
PDF
Support JEE Spring Inversion de Controle IOC et Spring MVC
PDF
Sécurité des Applications Web avec Json Web Token (JWT)
PDF
Alphorm.com Formation Laravel : Construire une Application de A à Z
Architectures orientés services (SOA)
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Support de cours Spring M.youssfi
Appalications JEE avec Servlet/JSP
Angular Framework présentation PPT LIGHT
Support JEE Spring Inversion de Controle IOC et Spring MVC
Sécurité des Applications Web avec Json Web Token (JWT)
Alphorm.com Formation Laravel : Construire une Application de A à Z

Tendances (20)

PDF
Support de cours angular
PPTX
Fondamentaux d’une API REST
PDF
Support JEE Servlet Jsp MVC M.Youssfi
PPTX
Architectures 3-tiers (Web)
PDF
Support de cours technologie et application m.youssfi
PDF
API : l'architecture REST
PPTX
Servlets et JSP
PDF
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
PDF
Support Web Services SOAP et RESTful Mr YOUSSFI
PDF
Support NodeJS avec TypeScript Express MongoDB
PPSX
Formation JAVA/J2EE
PPTX
What Is Express JS?
PDF
Services web soap-el-habib-nfaoui
PDF
Support de cours entrepise java beans ejb m.youssfi
PDF
Architecture jee principe de inversion de controle et injection des dependances
PDF
Tp1 - WS avec JAXWS
PDF
BigData_Chp2: Hadoop & Map-Reduce
PDF
Support de Cours JSF2 Première partie Intégration avec Spring
PDF
Support cours angular
Support de cours angular
Fondamentaux d’une API REST
Support JEE Servlet Jsp MVC M.Youssfi
Architectures 3-tiers (Web)
Support de cours technologie et application m.youssfi
API : l'architecture REST
Servlets et JSP
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Support Web Services SOAP et RESTful Mr YOUSSFI
Support NodeJS avec TypeScript Express MongoDB
Formation JAVA/J2EE
What Is Express JS?
Services web soap-el-habib-nfaoui
Support de cours entrepise java beans ejb m.youssfi
Architecture jee principe de inversion de controle et injection des dependances
Tp1 - WS avec JAXWS
BigData_Chp2: Hadoop & Map-Reduce
Support de Cours JSF2 Première partie Intégration avec Spring
Support cours angular
Publicité

En vedette (20)

PDF
Théorie de normalisation-base de données
PDF
exercices business intelligence
PDF
exercices base de données - sql
PDF
les servlets-java EE
PDF
les métiers d'informatique
PDF
base de données -note de cours
PDF
Cours php
PDF
les métiers d'informatique
PDF
Conception des bases de données relationelles
PDF
script site e-commerce -php
PDF
cours base de données
PDF
Exercice arbre de décision
PDF
exercices Corrigées du merise
PDF
Java chap 04 surcharge des méthodes [mode de compatibilité]
PDF
La theorie des dependances et la normalisation des relations-base de données
PDF
Mise en place d'un Data Warehouse
PDF
Chap 03 poo en java partie1
PPTX
Educational Portal
PDF
PDF
Conception datawarehouse
Théorie de normalisation-base de données
exercices business intelligence
exercices base de données - sql
les servlets-java EE
les métiers d'informatique
base de données -note de cours
Cours php
les métiers d'informatique
Conception des bases de données relationelles
script site e-commerce -php
cours base de données
Exercice arbre de décision
exercices Corrigées du merise
Java chap 04 surcharge des méthodes [mode de compatibilité]
La theorie des dependances et la normalisation des relations-base de données
Mise en place d'un Data Warehouse
Chap 03 poo en java partie1
Educational Portal
Conception datawarehouse
Publicité

Similaire à cours j2ee -présentation (20)

PDF
Services rest & jersey
PPT
Introductions Aux Servlets
PPT
MEDBOULARESSMPIIIIIIIIIIIIIIIIIIIIIII.ppt
PPT
Les Servlets et JSP
PPTX
JSTLcourensatangerpourlesetudiantsdu2emeanneeecole.pptx
PDF
Service WEB de type REST avec Java
PDF
PPT
0554-programmation-web-ajax programmation web ajax
PDF
Serveur http
PDF
04-Collaboration-JSP-Sebfbfhhfufucrvlet.pdf
ODP
Tester les applications Zend Framework
PDF
cours-laravel-lpti-dar324-janTEDTF-24.pdf
PPTX
Requêtes HTTP synchrones et asynchrones
PDF
Rapport tp3 j2ee
PPTX
Introduction à Laravel
PDF
Chapitre 2SAMIMNIFFFFFFFFFFFFFFFFFFFFFFFFFFFF.pdf
PDF
ajqxè_àànndkllllllllllllllllllllllllllllllllllllllllll
PDF
ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
PPT
BordeauxJUG : Portails &amp; Portlets Java
PDF
Tp2 - WS avec JAXRS
Services rest & jersey
Introductions Aux Servlets
MEDBOULARESSMPIIIIIIIIIIIIIIIIIIIIIII.ppt
Les Servlets et JSP
JSTLcourensatangerpourlesetudiantsdu2emeanneeecole.pptx
Service WEB de type REST avec Java
0554-programmation-web-ajax programmation web ajax
Serveur http
04-Collaboration-JSP-Sebfbfhhfufucrvlet.pdf
Tester les applications Zend Framework
cours-laravel-lpti-dar324-janTEDTF-24.pdf
Requêtes HTTP synchrones et asynchrones
Rapport tp3 j2ee
Introduction à Laravel
Chapitre 2SAMIMNIFFFFFFFFFFFFFFFFFFFFFFFFFFFF.pdf
ajqxè_àànndkllllllllllllllllllllllllllllllllllllllllll
ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
BordeauxJUG : Portails &amp; Portlets Java
Tp2 - WS avec JAXRS

Plus de Yassine Badri (6)

PDF
exercices gestion de stock
PDF
Arbre de décision
PDF
.logistique gestion des stock
PDF
Chap 03 poo en java partie2
PDF
Chap 02 poo en java
PDF
Ch 01 poo
exercices gestion de stock
Arbre de décision
.logistique gestion des stock
Chap 03 poo en java partie2
Chap 02 poo en java
Ch 01 poo

Dernier (20)

PDF
Bac 2026 - Livre - 🎤 Le Grand Oral - ✍️ Exemples rédigés - 🌿 SVT - Extrait
PDF
🎓 Le Secret des Profs Captivants - 💡 3.1. Anatomie de la respiration — VOIX, ...
PDF
ch2 regime de neutre_LPUGE_LPUGEII.pdf
PDF
Leadership,_Pitch_et_Marketing_–_Préparer_son_accès_au_marché.pdf
PPTX
requiredkjshajhsaalksasjashaaisj kajshakha
PDF
La Darija marocaine La Darija marocaineLa Darija marocaine
PPTX
Soutenance_Memoire_OBAME_Roseline_Master.pptx
PDF
Articles definis et indefinis. Comment les différencier ?
PDF
Bac 2026 - Livre - 🎤 Le Grand Oral - ✍️ Exemples rédigés - 📈 SES - Extrait
PPT
cours de dessin technique dans les bâtiments
PPTX
Sainte Rose de Lima, Vierge, Pénitente, Tertiaire Dominicaine 1586-1617.pptx
PDF
Présentation de jfjjfnflfkfkfkhdbhdhhdhd
PPTX
Exercice_ Bulletin_de_Paie_Cameroun.pptx
PDF
CLASE 2 TRAIN voacublaire en rancaise.pdf
PDF
تصريف فعل Être في كل الأزمنة الفرنسية.pdf
PPTX
XEROPHTALMIE , SES ETIOLOGIES ET SA PRISE EN CHARGE
PPTX
Saint Pape Pie X, Giuseppe Melchiorre Sarto 1835-1914.pptx
PDF
Bac 2026 - Livre - 🎤 Le Grand Oral - ✍️Exemples rédigés - Spécialité: 💻 NSI -...
PPTX
Présentation Projet Entreprise Minimaliste Moderne Sobre Blanc Noir.pptx
PDF
Devenir un expert en audit qualité, la démarche.pdf
Bac 2026 - Livre - 🎤 Le Grand Oral - ✍️ Exemples rédigés - 🌿 SVT - Extrait
🎓 Le Secret des Profs Captivants - 💡 3.1. Anatomie de la respiration — VOIX, ...
ch2 regime de neutre_LPUGE_LPUGEII.pdf
Leadership,_Pitch_et_Marketing_–_Préparer_son_accès_au_marché.pdf
requiredkjshajhsaalksasjashaaisj kajshakha
La Darija marocaine La Darija marocaineLa Darija marocaine
Soutenance_Memoire_OBAME_Roseline_Master.pptx
Articles definis et indefinis. Comment les différencier ?
Bac 2026 - Livre - 🎤 Le Grand Oral - ✍️ Exemples rédigés - 📈 SES - Extrait
cours de dessin technique dans les bâtiments
Sainte Rose de Lima, Vierge, Pénitente, Tertiaire Dominicaine 1586-1617.pptx
Présentation de jfjjfnflfkfkfkhdbhdhhdhd
Exercice_ Bulletin_de_Paie_Cameroun.pptx
CLASE 2 TRAIN voacublaire en rancaise.pdf
تصريف فعل Être في كل الأزمنة الفرنسية.pdf
XEROPHTALMIE , SES ETIOLOGIES ET SA PRISE EN CHARGE
Saint Pape Pie X, Giuseppe Melchiorre Sarto 1835-1914.pptx
Bac 2026 - Livre - 🎤 Le Grand Oral - ✍️Exemples rédigés - Spécialité: 💻 NSI -...
Présentation Projet Entreprise Minimaliste Moderne Sobre Blanc Noir.pptx
Devenir un expert en audit qualité, la démarche.pdf

cours j2ee -présentation

  • 1. 1 Développement WEB avec Java JSP/ Servlet /javaBean Fonctionnement du Web
  • 2. 2
  • 3. 3
  • 4. 4 Construction d'une application Web Préparer une arborescence par exemple dans le répertoire SiteWebTP. A partir de la racine de cette arborescence placer correctement :  le répertoire WEB-INF  le répertoire classes où seront placées les servlets compilés  le fichier web.xml
  • 5. 5 Le déploiement est une étape essentielle de la mise en place d’une application web. En effet, le serveur doit être capable de localiser les servlets et les JSP invoquées par le navigateur.
  • 6. 6
  • 7. 7
  • 8. 8
  • 9. 9 Application JSP/Servlet Lorsque l'utilisateur soumet ce formulaire, son nom est envoyé au servlet Hello parce nous avons mis l'attribut ACTION pointer vers le servlet. Le formulaire utilise la méthode Get, de sorte que toutes les données sont ajoutées (appended) à la requête URL comme une requête de chaîne. Par exemple, si l'utilisateur entre le nom "Inigo Montoya," la requête URL est http: //serveur: 8080 / servlet / Hello ? name = Inigo +Montoya .
  • 10. 10 L'espace dans le nom est spécialement codé comme un signe plus par le navigateur (browser), car les URL ne peuvent pas contenir d'espaces Une servlet qui sait à qui dit Hello La méthode getServletInfo( ) donne des informations descriptives sur le servlet.
  • 11. 11 JSP Traducteur sous forme Servlet (méthode Get) Import java.io.* ; Import javax.servlet.* ; Import javax.servlet.http.* ; public class traduire extends HttpServlet( // traiter la requête avec doGet( ) Public void doGet (HttpServletRequest req, HttpServletResponse rep) Throws IOException, ServletException(
  • 12. 12 //Initialisation du type de la réponse rep.setContentType (text/html) // Ouverture du flux de la réponse http PrintWriter pw=rep.getWriter ( ) ; // Envoyer le code HTML sur le flux http pw.println (<html>) ; pw.println (<head>) ; pw.println (<title>Une servlet pour traduire </title> ) ; pw.println (</head>) ; pw.println (<body bgcolor=’white’>) ; // Vérifier si une phrase est transmise avec la requête If (req.getParameter (phrase) == null) { pw.println (<font size=+1>) ; pw.println (Je n’ai pas de phrase à traduire</font>) ; } else { //traiter la phrase fournie en paramètre String phrase = req.getParameter (phrase) ; phrase = phrase.replace (‘a’,’*’) ; phrase = phrase.replace (‘o’,’ !’) ; phrase = phrase.replace (‘e’,’%’) ; } pw.println (</body>) ; pw.println (</html>) ; } } Traducteur sous la forme d’un JSP <html> <head> <title> Un JSP pour traduire une phrase </title> </head>
  • 13. 13 <%--debut de scriplet --%> <% <%--rechercher le paramètre phrase transmis avec la requête --%> String p= request.getParameter (phrase) ; if (p !=null) { <%-- si p ne vaut pas null, un paramètre est transmis le traiter --%> p = p.replace (‘a’,’*’) ; p = p.replace (‘o’,’ !’) ; p = p.replace (‘e’,’%’) ; %> <%-- fin du if, affichage à l’aide de balises HTML --%> <%-- affichage du contenu de p --%> <p> J’ai compris : <%=p%> </p> <%-- debut du else --%> <%-- si il n’y a pas de paramètre transmis p vaut null --%> } else { %> <%-- affichage à l’aide de balises HTML --%> <p> Erreur : vous avez oublié la phrase à traduire <BR> Exemple : http://localhost:8080/jsp/traduire.jsp?phrase=cours JSP LST IGI </p> <%-- fin de else, fin de la scriplet --%> <% }
  • 14. 14 %> </body> </html> Traducteur avec javaBean // Un javabean doit être sérialisable pour être envoyer sur un flux Import java.io.Serializable public class phrase implements java.io.Serializable ( // Définition de la propriété de javaBean private string phrase ; // Définition de la méthode d’accès à la propriété, en modification // Cette méthode remplace les caractères de la propriété de l’objet Public void setphrase (string p) { Phrase=p ; phrase = phrase.replace (‘a’,’*’) ; phrase = phrase.replace (‘o’,’ !’) ; phrase = phrase.replace (‘e’,’%’) ; } // Définition de la méthode d’accès à la propriété, en consultation Public void getphrase ( ) { Return phrase ; } } Un JSP qui appelle le javaBean phrase <html>
  • 15. 15 <head> <title> Java Bean pour traduire une phrase </title> </head> <body> <%--Utiliser phrase.class, comme JavaBean avec comme nom d’objet p --%> <jsp :useBean id=p class= phrase/> <%--Placer dans la propriété phrase de l’objet p --%> <%--la valeur du paramètre transmis avec la requête --%> <jsp :setProperty name=p property= phrase param= param /> <%--récupérer la valeur de la propriété de l’objet p --%> <BR> J’ai compris : <jsp :getProperty name=p property= phrase /> </body> </html>
  • 16. 16 Application : Résultat d’une enquête Le servlet stocke les résultats d’une enquête concernant vos animaux de compagnie préférés sur le serveur. Lorsqu’un utilisateur répond à l’enquête, le servlet HTTPPostServlet envoie un document HTML au client qui résume les résultats de l’enquête jusqu’à ce stade. L’utilisateur choisit son animal préféré dans un bouton radio de la page Web de la figure puis appuie sur Soumettre. Le navigateur envoie une requête POST en HTTP au servlet; celui-ci réagit en lisant les résultats précédents de l’enquête dans un fichier sur le serveur, il met les résultats du sondage à jour, les réinscrit sur le fichier du serveur, et il envoie enfin une page Web au client qui lui indique les résultats cumulés de l’enquête.
  • 17. 17
  • 18. 18
  • 19. 19 La méthode doPost commence par déterminer si le fichier sondage.txt existe sur le serveur. La ligne 18 définit un objet File nommé f dans ce but. Le programme ne fournit pas d’emplacement pour le fichier. Par défaut, les fichiers créés par un servlet exécuté par le WebServer JSDK sont stockés dans le répertoire d’installation du JSDK (jsdk2.1). Vous pouvez imposer l’emplacement de stockage du fichier au moment de la création de l’objet File. À la ligne 20, si le fichier existe, son contenu est lu par le servlet, de sorte que les résultats du sondage seront mis à jour et renvoyés au client en cours. Si le fichier n’existe pas, c’est-à-dire si la requête actuelle est la toute première réponse au sondage, la méthode doPost crée le fichier un peu plus loin dans le code.
  • 20. 20 Le tableau d’entiers animaux stocke le nombre de réponses pour chaque type d’animal. Si le fichier qui contient les résultats précédents au sondage existe, alors les lignes 23 à 30 ouvrent un ObjectInputStream pour lire le tableau d’entiers animaux et totaliser le nombre de réponses qui ont été reçues jusqu’à cette étape. Lorsque le servlet crée le fichier et stocke le tableau d’entiers, il utilise un ObjectOutputStream pour écrire le fichier. La ligne 42 incrémente le total pour indiquer qu’il y a une réponse de plus au sondage. Les lignes 45 à 47 déterminent l’animal sélectionné par le client et mettent à jour le total de l’animal adéquat. Les lignes 50 à 55 ouvrent un ObjectOutputStream pour stocker les résultats mis à jour de l’enquête dans le fichier sondage.txt. Ce fichier garantit que, même si le servlet est interrompu et redémarré, les résultats du sondage demeurent sur disque. Les lignes 58 à 61 préparent le pourcentage du total des votes qui représentent chaque animal. Ces résultats sont renvoyés à l’utilisateur dans une partie de la HttpServletResponse. Nous préparons la réponse à partir de la ligne 64, où la méthode setContentType de ServletResponse spécifie que le contenu sera du texte d’un document HTML (text/html). La ligne 66 utilise la méthode getWriter de ServletResponse pour obtenir une référence à un objet PrintWriter et affecte celle-ci à sortieReponse. Cette référence sert à envoyer la réponse au client. Le StringBuffer tamp de la ligne 67 stocke le contenu de la réponse pendant que le servlet prépare le document HTML. Les lignes 68 à 86 préparent son contenu par une suite d’appels à la méthode append de StringBuffer.