SlideShare uma empresa Scribd logo
Master SID-1
Année Universitaire : 2016/2017
Jeu (MVC) avec les sessions
« JEE »
Réalisé Par :
Abdelhakim HADI-ALAOUI
Encadré Par :
Mr. Mohammed YOUSSFI
1
Table des matières
Introduction........................................................................................................................2
Enonce ...............................................................................................................................2
Architecture........................................................................................................................2
Structure de projet ..............................................................................................................3
Code Source .......................................................................................................................3
Couche métier.................................................................................................................3
Couche web....................................................................................................................4
Démonstration de l’application...........................................................................................7
2
Introduction
La plupart des applications web utilisent le protocole HTTP. Malheureusement ce protocole
est ce que l'on appelle un protocole sans état, c'est-à-dire que le serveur web ne maintient pas
les informations à propos du client entre deux requêtes. De ce fait, le serveur ne sait pas
déterminer si une requête ou une réponse provient du même client. C'est pour cela que les
applications web utilisent le concept de session. Une session représente l'ensemble des
interactions pouvant intervenir entre un client et le serveur nous avons utilisé ce concept.
Enonce
Créer une application web J2EE qui respecte le modèle MVC qui permet de simuler un jeu
entre les clients http et le serveur web. Le principe du jeu est le suivant :
- Le serveur choisit un nombre aléatoire entre 0 et 100
- Un client http connecté, doit saisir un nombre pour deviner le nombre secret.
- Le serveur répond avec les éventualités suivantes :
 Votre nombre est plus grand
 Votre nombre est plus petit
 Bravo, vous avez gagné. Et dans ce cas-là le jeu s’arrête et pour chaque tentative
de jouer le serveur envoi au client un message qui indique que le jeu est terminé en
affichant le nombre secret recherché.
Architecture
3
Structure de projet
Code Source
Couche métier
Class jeu.java
package Metier;
public class Jeu {
private int secret;
private boolean fin;
public Jeu() {
secret=(int)(Math.random()*100);
fin=false;
}
public String jouer(int nb){
if(fin==false){
if(nb<secret)
return ("Votre nombre est plus petit");
else if(nb>secret)
return ("Votre nombre est plus grand");
else{
fin= true;
return ("Bravo vous avez gagnée");
}
}else{
return ("le jeu est terminée");
}
}//getters and setters
}
4
Couche web
Servlet :
5
EssaiForm
package presentation;
import java.util.ArrayList;
public class EssaiForm {
private int nombre;
// private String message;
private ArrayList<String> historique;
public EssaiForm() {
historique=new ArrayList<>();
}
public int getNombre() {
return nombre;
}
public void setNombre(int nombre) {
this.nombre = nombre;
}
public ArrayList<String> getHistorique() {
return historique;
}
public void setHistorique(ArrayList<String> historique) {
this.historique = historique;
}
public void addToHistorique(String resultat){
this.historique.add("Nombre : "+nombre+" Indication : "+resultat);
}
}
VUEJeu.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Jeu</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.css">
</head>
<body>
<div class="container">
<p></p>
<div class="panel panel-primary inverse">
<div class="panel-heading center" style="font-size: 30px">Veuillez
choisir un nombre entre 0 et 100 !</div>
<div class="panel-body">
<form action="jouer.php" method="post">
<label>Diviner ce nombre : </label>
6
<input type="text" name="nombre" id="nbre">
<button class="btn btn-primary" type="submit" name="jouer" id="jouer"
value="essaie">Essaie</button>
<c:if test="${fin==false || fin==null}">
<button class="btn btn-success" type="submit" name="jouer"
value="rejouer" disabled>Rejouer</button>
</c:if>
<c:if test="${fin==true}">
<button class="btn btn-success" type="submit" name="jouer"
value="rejouer" >Rejouer</button>
</c:if>
<br/>
<p></p>
<div id="message"></div>
<br/><br/>
<label>
${jeu.historique[fn:length(jeu.historique)-1]}
</label>
<br/><br/><br/>
<h4>Historique</h4>
<ol class="list-group">
<c:forEach items="${jeu.historique}" var="his">
<li class="list-group-item">${his}</li>
</c:forEach>
</ol>
<c:if test="${fin==true}">
<div class="alert alert-success" style="font-size: 40px">
<strong >FIN DE JEUX !</strong><br/>le nombre secret est :
${secret} !
</div>
</c:if>
</form>
</div>
</div>
</div>
<script src="js/jquery.js"></script>
<script>
$(function(){
$( "#jouer" ).on( 'click' , function(evt){
var nombre= document.querySelector('#nbre').value
console.log(nombre)
if(nombre<0){
evt.preventDefault();
var msg=document.querySelector('#message')
$(msg).text("le Nombre que vous avez saisi est inferieure a 0
")
$(msg).addClass("alert");
$(msg).addClass("alert-danger");
}else if(nombre>100){
evt.preventDefault();
var msg=document.querySelector('#message')
$(msg).text("le Nombre que vous avez saisi est superieur a
100")
$(msg).addClass("alert");
$(msg).addClass("alert-danger");
}
});
});
7
</script>
</body>
</html>
Démonstration de l’application
Interface de jeu
Gestion d’erreur de saisir
8
Chaque utilisateur a sa propre session (sa propre historique)
Message indique la fin de jeu lorsqu’un utilisateur trouve le nombre secret

Mais conteúdo relacionado

Mais procurados

Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
Amir Souissi
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
ENSET, Université Hassan II Casablanca
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
Houda TOUKABRI
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
ENSET, Université Hassan II Casablanca
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
slimyaich3
 
cours-gratuit.com--id-4422.pdf
cours-gratuit.com--id-4422.pdfcours-gratuit.com--id-4422.pdf
cours-gratuit.com--id-4422.pdf
lhoussainebouganfou
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
Olivier Le Goaër
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
ENSET, Université Hassan II Casablanca
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
Lilia Sfaxi
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
FadouaBouafifSamoud
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
ENSET, Université Hassan II Casablanca
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
ENSET, Université Hassan II Casablanca
 
Angular Avancé
Angular AvancéAngular Avancé
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
Youness Boukouchi
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
Heithem Abbes
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
ENSET, Université Hassan II Casablanca
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
ENSET, Université Hassan II Casablanca
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
Ines Ouaz
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
Nizar MAATOUG -ISET Sidi Bouzid
 

Mais procurados (20)

Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
cours-gratuit.com--id-4422.pdf
cours-gratuit.com--id-4422.pdfcours-gratuit.com--id-4422.pdf
cours-gratuit.com--id-4422.pdf
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Angular Avancé
Angular AvancéAngular Avancé
Angular Avancé
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
 

Semelhante a Jeu jee session

Rapport Sockets en Java
Rapport Sockets en JavaRapport Sockets en Java
Rapport Sockets en Java
Soukaina Boujadi
 
Mémoire fin de cycle1
Mémoire fin de cycle1Mémoire fin de cycle1
Mémoire fin de cycle1Mustafa Bachir
 
gestion Comptes Bancaire SpringBoot-Exemple.pdf
gestion Comptes Bancaire SpringBoot-Exemple.pdfgestion Comptes Bancaire SpringBoot-Exemple.pdf
gestion Comptes Bancaire SpringBoot-Exemple.pdf
MohamedHassoun11
 
Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Wael Ismail
 
Rapport final
Rapport finalRapport final
Rapport final
DrunkenMoron
 
Nouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde MicrosoftNouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde Microsoft
davrous
 
Rapport finiale
Rapport finialeRapport finiale
Rapport finiale
marwenbencheikhali
 
Rapport de fin d'etude
Rapport  de fin d'etudeRapport  de fin d'etude
Rapport de fin d'etude
Université de Sherbrooke
 
Conception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmationConception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmation
Aymen Bouein
 
Rapport de stage du fin d'étude
Rapport de stage du fin d'étudeRapport de stage du fin d'étude
Rapport de stage du fin d'étude
Yahyaoui Mohamed Yosri
 
TD1.pdf
TD1.pdfTD1.pdf
TD1.pdf
Koffi Kanga
 

Semelhante a Jeu jee session (13)

Rapport Sockets en Java
Rapport Sockets en JavaRapport Sockets en Java
Rapport Sockets en Java
 
Mémoire fin de cycle1
Mémoire fin de cycle1Mémoire fin de cycle1
Mémoire fin de cycle1
 
gestion Comptes Bancaire SpringBoot-Exemple.pdf
gestion Comptes Bancaire SpringBoot-Exemple.pdfgestion Comptes Bancaire SpringBoot-Exemple.pdf
gestion Comptes Bancaire SpringBoot-Exemple.pdf
 
Dc13 si
Dc13 siDc13 si
Dc13 si
 
Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012
 
Rapport final
Rapport finalRapport final
Rapport final
 
Nouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde MicrosoftNouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde Microsoft
 
Rapport finiale
Rapport finialeRapport finiale
Rapport finiale
 
Rapport de fin d'etude
Rapport  de fin d'etudeRapport  de fin d'etude
Rapport de fin d'etude
 
Conception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmationConception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmation
 
Rapport de stage du fin d'étude
Rapport de stage du fin d'étudeRapport de stage du fin d'étude
Rapport de stage du fin d'étude
 
TD1.pdf
TD1.pdfTD1.pdf
TD1.pdf
 
vanderpypendaniel_msc
vanderpypendaniel_mscvanderpypendaniel_msc
vanderpypendaniel_msc
 

Jeu jee session

  • 1. Master SID-1 Année Universitaire : 2016/2017 Jeu (MVC) avec les sessions « JEE » Réalisé Par : Abdelhakim HADI-ALAOUI Encadré Par : Mr. Mohammed YOUSSFI
  • 2. 1 Table des matières Introduction........................................................................................................................2 Enonce ...............................................................................................................................2 Architecture........................................................................................................................2 Structure de projet ..............................................................................................................3 Code Source .......................................................................................................................3 Couche métier.................................................................................................................3 Couche web....................................................................................................................4 Démonstration de l’application...........................................................................................7
  • 3. 2 Introduction La plupart des applications web utilisent le protocole HTTP. Malheureusement ce protocole est ce que l'on appelle un protocole sans état, c'est-à-dire que le serveur web ne maintient pas les informations à propos du client entre deux requêtes. De ce fait, le serveur ne sait pas déterminer si une requête ou une réponse provient du même client. C'est pour cela que les applications web utilisent le concept de session. Une session représente l'ensemble des interactions pouvant intervenir entre un client et le serveur nous avons utilisé ce concept. Enonce Créer une application web J2EE qui respecte le modèle MVC qui permet de simuler un jeu entre les clients http et le serveur web. Le principe du jeu est le suivant : - Le serveur choisit un nombre aléatoire entre 0 et 100 - Un client http connecté, doit saisir un nombre pour deviner le nombre secret. - Le serveur répond avec les éventualités suivantes :  Votre nombre est plus grand  Votre nombre est plus petit  Bravo, vous avez gagné. Et dans ce cas-là le jeu s’arrête et pour chaque tentative de jouer le serveur envoi au client un message qui indique que le jeu est terminé en affichant le nombre secret recherché. Architecture
  • 4. 3 Structure de projet Code Source Couche métier Class jeu.java package Metier; public class Jeu { private int secret; private boolean fin; public Jeu() { secret=(int)(Math.random()*100); fin=false; } public String jouer(int nb){ if(fin==false){ if(nb<secret) return ("Votre nombre est plus petit"); else if(nb>secret) return ("Votre nombre est plus grand"); else{ fin= true; return ("Bravo vous avez gagnée"); } }else{ return ("le jeu est terminée"); } }//getters and setters }
  • 6. 5 EssaiForm package presentation; import java.util.ArrayList; public class EssaiForm { private int nombre; // private String message; private ArrayList<String> historique; public EssaiForm() { historique=new ArrayList<>(); } public int getNombre() { return nombre; } public void setNombre(int nombre) { this.nombre = nombre; } public ArrayList<String> getHistorique() { return historique; } public void setHistorique(ArrayList<String> historique) { this.historique = historique; } public void addToHistorique(String resultat){ this.historique.add("Nombre : "+nombre+" Indication : "+resultat); } } VUEJeu.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Jeu</title> <link rel="stylesheet" type="text/css" href="css/bootstrap.css"> </head> <body> <div class="container"> <p></p> <div class="panel panel-primary inverse"> <div class="panel-heading center" style="font-size: 30px">Veuillez choisir un nombre entre 0 et 100 !</div> <div class="panel-body"> <form action="jouer.php" method="post"> <label>Diviner ce nombre : </label>
  • 7. 6 <input type="text" name="nombre" id="nbre"> <button class="btn btn-primary" type="submit" name="jouer" id="jouer" value="essaie">Essaie</button> <c:if test="${fin==false || fin==null}"> <button class="btn btn-success" type="submit" name="jouer" value="rejouer" disabled>Rejouer</button> </c:if> <c:if test="${fin==true}"> <button class="btn btn-success" type="submit" name="jouer" value="rejouer" >Rejouer</button> </c:if> <br/> <p></p> <div id="message"></div> <br/><br/> <label> ${jeu.historique[fn:length(jeu.historique)-1]} </label> <br/><br/><br/> <h4>Historique</h4> <ol class="list-group"> <c:forEach items="${jeu.historique}" var="his"> <li class="list-group-item">${his}</li> </c:forEach> </ol> <c:if test="${fin==true}"> <div class="alert alert-success" style="font-size: 40px"> <strong >FIN DE JEUX !</strong><br/>le nombre secret est : ${secret} ! </div> </c:if> </form> </div> </div> </div> <script src="js/jquery.js"></script> <script> $(function(){ $( "#jouer" ).on( 'click' , function(evt){ var nombre= document.querySelector('#nbre').value console.log(nombre) if(nombre<0){ evt.preventDefault(); var msg=document.querySelector('#message') $(msg).text("le Nombre que vous avez saisi est inferieure a 0 ") $(msg).addClass("alert"); $(msg).addClass("alert-danger"); }else if(nombre>100){ evt.preventDefault(); var msg=document.querySelector('#message') $(msg).text("le Nombre que vous avez saisi est superieur a 100") $(msg).addClass("alert"); $(msg).addClass("alert-danger"); } }); });
  • 9. 8 Chaque utilisateur a sa propre session (sa propre historique) Message indique la fin de jeu lorsqu’un utilisateur trouve le nombre secret