Vous êtes sur la page 1sur 9

FACULTE DES SCIENCES ECONOMIQUES 2020

ET DE GESTION DE TUNIS
---------§§§§§---------
Série 1: servlet, JSP et MVC
---------§§§§§---------
Exercice 1 :
Développer une servlet pour traiter les données saisies via une page html:
1. Ecrire une page html(Autentification.html) pour saisir login et le mot de passe.
2. Ecrire une servlet (Afficher)qui affiche le nom et le mot de passe saisie auparavant
Correction
1. Ecrire une page html(Autentification.html) pour saisir login et le mot de passe.

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h2>Login</h2>
<p>Tapez votre login et votre mot de passé</p>
<form method="GET" action="/Serie1exercice1/Afficher">
<p> Login <input type="text" name="username" size="20"></p>
<p> Password <input type="text" name="password" size="20"></p>
<p><input type="submit" value="Connecter" name="B1"></p>
</form>
<p>&nbsp;</p>
</body>
</html>

2. Ecrire une servlet (Afficher)qui affiche le nom et le mot de passe saisie auparavant
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class Afficher
*/
//@WebServlet("/Afficher")// sans utilisation de l’ annotations:
public class Afficher extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException {
// TODO Auto-generated method stub

response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name = request.getParameter("username");
String pass = request.getParameter("password");
out.println("<html>");
out.println("<body>");
out.println("Merci Mr/Mme" + " " + name + " " + "pour votre
visite<br>");
out.println("votre mot de passe est : " + " " + pass + "<br>");
out.println("</body></html>");
}

}
Dans cette partie, soit d’utiliser les annotations pour le déploiement de la
servlet soit de déployer la servlet via le fichier web.xml
<?xml version="1.0" encoding="UTF-8"?>
<display-name>Serie1exercice1</display-name>
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>Afficher</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/Afficher</url-pattern>
</servlet-mapping>
</web-app>
Exercice 2

Maintenant, on va traiter le problème de traitement de la réponse par un tiers en


considérant la redirection entre servlets. On traite le cas où un utilisateur saisi son
nom comme login et son mot de passe via un formulaire de saisie. Ensuite, une
servlet vérifie si le nom est ‘Mohamed’ et le mot de passe est ‘3LFIG’ et qui
affiche un message d’erreur en cas d’échec ou redirige le traitement vers une autre
servlet qui effectue les traitements nécessaires en cas de succès. Ecrire :
1. L’utilisateur saisit le login et le mot passe via un
formulaire(Autentification.html)
2. Une Servlet(Verification) qui effectue la redirection en cas de succès vers
une autre servlet et envoie le message d’erreur ‘vous n’êtes pas un
utilisateur valide’ dans le cas contraire.
3. Ecrire une servlet(Afficher) qui effectue le traitement en cas de succès en
affichant les messages suivants ‘Bienvenue au cours JEE de la classe
3LFIG.’
4. N’oubliez pas le déploiement les deux servlets dans le fichier Web.xml
Correction

1. L’utilisateur saisit le login et le mot passe via un


formulaire(Autentification.html)
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h2>Login</h2>
<p>Tapez votre login et votre mot de passé</p>
<form method="POST" action="/Serie1exercice2/Verification">
<p> Login <input type="text" name="username" size="20"></p>
<p> Password <input type="text" name="password" size="20"></p>
<p><input type="submit" value="Connecter" name="B1"></p>
</form>
<p>&nbsp;</p>
</body>
</html>

2. Une Servlet(Verification) qui effectue la redirection en cas de succès vers


une autre servlet et envoie le message d’erreur ‘vous n’êtes pas un
utilisateur valide’ dans le cas contraire.
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class Verification
*/
//@WebServlet("/Verification")
public class Verification extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
String name = request.getParameter("username");
String password = request.getParameter("password");
if(name.equals("Mohamed")&& password.equals("3LFIG")){
response.sendRedirect("/Serie1exercice2/Afficher");
}
else{ pw.println("Utilisateur invalide");}
}

3. Ecrire une servlet(Afficher) qui effectue le traitement en cas de succès en


affichant les messages suivants ‘Bienvenue au cours JEE de la classe
3LFIG.’
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class Afficher
*/
//@WebServlet("/Afficher")
public class Afficher extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter pw = response.getWriter();
pw.println("Bienvenue au cours JEE de la classe 3LFIG.");
}

}
4. N’oubliez pas le déploiement les deux servlets dans le fichier Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Serie1exercice2</display-name>
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>Verification</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>/Verification</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>servlet2</servlet-name>
<servlet-class>Afficher</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet2</servlet-name>
<url-pattern>/Afficher</url-pattern>
</servlet-mapping>
</web-app>

Exercice 3: Servlet , JSP et MVC

Dans cet exercice , on va créer une application web JEE qui permet de calculer
et d’afficher la somme partielle de la série harmonique dont il choisira la valeur n
à l’aide de d’une page JSP nommée «VueSérie.jsp » .
s = 1 + 1/2 +1/3 +1/4 + ... + 1/n .

On essaye dans cette application d’utiliser le modèle MVC :

1. On commence de créer le package métier, on définit une classe nommée


« CalculSommeSérie.java ». Réaliser cette classe qui permet de calculer la
somme de la série via la méthode : float CalculSomme(int n){} qui
retourne la somme de la série .
2. Créer le package web est composé par une servlet nommée
« ControlServletSérie.java » et la classe modèle nommée « Série.java»
a. Développer la servlet qui joue le rôle de contrôleur entre la partie métier
et la partie Vue
b. Développer la classe Série qui présente le modèle, cette classe est
composée par un constructeur sans argument et les méthodes Get et Set.
3. Développer la page JSP nommée « VueSérie.jsp » dans le répertoire WEB-
INF, le rôle de cette page est d’afficher un formulaire pour récupérer la
valeur de n et d’afficher la somme de cette série comme montrer dans la
figure suivante :

4. N'oubliez pas le déploiement de la servlet dans le fichier web.xml


On essaye dans cette application d’utiliser le modèle MVC :

5. On commence de créer le package métier, dont lequel ont défini une classe
nommée « CalculSommeSérie.java ». Réaliser cette classe permettant de
calculer la somme de la série via la méthode : float CalculSomme(int n){}
qui retourne la somme de la série .
package metier;

public class CalculSommeSérie {

public float CalculSomme(int n){


float somme=0;
for (int i = 1 ; i <= n ; i++)
{somme +=( 1./i) ;}

return somme;

}
6. Créer le package web est composé par une servlet nommée
« ControlServletSérie.java » et la classe modèle nommée « Série.java»
c. Développer la servlet qui joue le rôle de contrôleur entre la partie métier et
la partie Vue
package web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import metier.CalculSommeSérie;
public class ControlServletSérie extends
HttpServlet {
private CalculSommeSérie calculsomme;
@Override
public void init() throws ServletException {

calculsomme = new CalculSommeSérie();


}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
request.setAttribute("somme", new Série());
request.getRequestDispatcher("VueSérie.jsp").fo
rward(request, response);
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
int
n=Integer.parseInt(request.getParameter("n"));
Série s= new Série();
s.setN(n);
float somme= calculsomme.CalculSomme(n);
s.setSomme(somme);
request.setAttribute("somme", s);
request.getRequestDispatcher("VueSérie.jsp").fo
rward(request, response);
}
}
d. Développer la classe Série qui présente le modèle, cette classe est composée
par un constructeur sans argument et les méthodes Get et Set.

package web;

public class Série {


private int n;
private float somme;

public float getSomme() {


return somme;
}
public void setSomme(float somme) {
this.somme = somme;
}
public Série(int n) {

this.n = n;
}
public Série() {

}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}

}
7.Développer la page JSP nommée « VueSérie.jsp » dans le répertoire
WEB-INF, le rôle de cette page est d’afficher un formulaire pour
récupérer la valeur de n et d’afficher la somme de cette série comme
montrer dans la figure suivante :

<%@page import="web.Série"%>
<% Série s=(Série)request.getAttribute("somme") ;%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<title>ProjetServletJSP</title>
</head>
<body>
<div>
<form action="controleur.php" method="post">
<table>
<tr> Calcul la série harmonique s=
1+1/2+1/3+....1/n</tr>
<tr>
<td> la valeur de n: </td>
<td> <input type =text" name="n" value="<%=
s.getN() %>" /> </td>
</tr>
<tr>
<td> <input type="submit" value="Calculer"/></td>
</tr>
</table>
</form>
</div>
<div>
<table>
<tr>
<td> la somme:</td>
<%--- <td><% out.println(s.getSomme()); %>
</td> --%>
<%---ou bien --%>
<td><%= s.getSomme()%>
</tr>
</table>
</div>
</body>
</html>
8. N'oubliez pas le déploiement de la servlet dans le fichier web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/jav
aee http://xmlns.jcp.org/xml/ns/javaee/web-
app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>ProjetServletJSP</display-name>
<servlet>
<servlet-name>css</servlet-name>
<servlet-class> web.ControlServletSérie
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>css</servlet-name>
<url-pattern>/controleur</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>css</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>
</web-app>

Vous aimerez peut-être aussi