Documente Academic
Documente Profesional
Documente Cultură
2016
Rapport stage
DEVELOPPEMENT D’UNE APPLICATION
SONDAGE PAR SMS
Réaliser Par :
Aichetou Baye Elkhadar
Encadrer par :
Mr : Mouhamed Babe
REMERCIEMENTS
Mes remerciements s'adressent principalement au responsable de mon stage au
niveau de l’Opérateur Mattel, Monsieur Mouhamed Babe, pour m’avoir
accepter dans ce projet et pour toute l'aide qu’il m'a apporté afin de me
permettre de mieux cerner le travail à réaliser tout au long du stage.
De même, je remercie mon maître de stage à l’ESP Lieutenant ingénieur Maine
Moutaly, pour son suivi au cours du stage.
Enfin, merci à toute l’équipe de Mattel pour son accueil, sa disponibilité, mes
remerciements à toutes les personnes qui ont contribué de près ou de loin à la
réalisation de ce projet, et dont les noms ne figurent pas dans ce document.
Le stage consiste à mettre en place une application qui permet de gérer une
inter-action avec les clients via sms en utilisant le protocole smpp. Elle se
déploiera sous deux formes : des SMS d’enquêtes et des SMS concours.
Cette application est basée sur un système de format web J2EE avec une base
de données de type MySQL, et d’une bibliothèque smppapi qui implémantera le
protocole smpp.
Mots clés : Java, bases de Données, Protocole smpp, SMS, JEE, MySQL, smppapi.
Abstract:
I performed in this project Java language studies and research databases. This
report summarizes the work that I have provided throughout the training period.
My internship is to develop an application that can manage interaction with
customers via sms using the protocol smpp. It will unfold in two forms: SMS
surveys, SMS contests.
This application is based on a J2EE web format system with a MySQL database,
and a library that implements the smppapi smpp protocol.
Keywords: Java, data bases, smpp Protocol, SMS, JEE, MySQL, smppapi.
Tables de Figures :
Figure1 : Patron MVC........................................................................................................20
Figure2 : Fonctionnement du pattern DAO........................................................................23
Figure 3 : Diagramme de classe de notre Factory...............................................................24
Figure 4 : début du sondage...............................................................................................31
Figure 5 : Premier Message...............................................................................................32
Figure6 : choix de réponse.................................................................................................32
Figure 7 : Dernier Message ; Message de Remerciement....................................................33
Figure 8 : Liste des questions.............................................................................................33
Figure 9 : Interface SMPPSIM............................................................................................34
Remerciement...............................................................................................1
Résumé..........................................................................................................1
Abstract.........................................................................................................2
Liste des abréviations...........................................................................................3
Table des figures ..................................................................................................3
Sommaire…....................................................................................................4
Introduction Générale…..................................................................................6
Présentation de l’organisme d’accueil.............................................................7
3. Présentation du sujet.................................................................................15
Objectifs..............................................................................................................15
4. Etude Technique........................................................................................17
Exigences techniques..........................................................................................17
Architecture JEE..................................................................................................18
Modèle MVC.......................................................................................................18
Framework utilisés..............................................................................................20
5. Conception................................................................................................21
6. Développement.........................................................................................22
Le langage de développement............................................................................22
Les Beans..................................................................................................................................24
Les Menagers...........................................................................................................................25
7. Mise en œuvre...........................................................................................29
Outils de développements..................................................................................29
Réalisation..........................................................................................................31
8. Conclusion.................................................................................................34
9. Annexe......................................................................................................36
AnnexeA.............................................................................................................36
AnnexeB..............................................................................................................39
10. Webographie...........................................................................................50
Parmi les nombreuses propositions avancées, mon choix s’est porté sur la
Direction Informatique de l’Opérateur Mattel.
Mon stage au niveau de cette Direction consistait à crée une application qui
développe les services Sms, produit d’un sondage sms des clients Mattel.
La suite de mon travail chez Mattel a été consacré à l’étude et pour faire
comprendre à travers dans un premier temps une partie théorie et en second
lieu une partie pratique, le langage Java et JEE ainsi la compréhension du
fonctionnement du protocole smpp.
Pour être à proximité de ses clients, Mattel est présente dans plus de 23
agences réparties sur tout le territoire mauritanien.
Indicateurs clefs
Mattel se mobilise afin de créer des services que ses clients apprécient. Il est
essentiel derespecter et de véhiculer des valeurs qui détermineront à la fois les
actions et les manières deréaliser les objectifs de Mattel. Croire en ses valeurs,
les partager, en faire un guide decomportement ne peut qu’assurer la cohésion
et renforcer la culture d’entreprise.Les valeurs de Mattel sont au nombre de
quatre : orientation client, professionnalisme,transparence et innovation.
d. La direction :
Service Reporting :
2. Direction Commerciale :
Département communication :
Ses tâches sont : Publicité sur les lieux de vente, Publicité (insertion presse,
télévision, affichage) et Communication par téléphone
Ce département est mis en place pour servir d’appui à :La vente, la distribution
et le service après-vente.
Ses tâches sont : Réalisation des ventes des produits et services Mattel au
segment corporatifs.Proposition de solutions « sur mesure » spécialement
adaptées aux besoins et spécificités desclients corporatifs.Mise en place de
partenariats stratégiques (Evénements spéciaux, conventions, programmesde
fidélisation…).
4. Direction Technique :
Département transmission :
Département communication :
Assure la protection des échanges avec les réseaux extérieurs. Au niveau interne,
elle veillesur la sécurité et la confidentialité des données et enfin s’occupe de la
mise à jour du système.La direction Système d’information est composée
essentiellement de trois départements
Le département SI Opération
Le département SI Clients
Le département Transverse
Cette fonction consiste à faire les recrutements nécessaires pour Mattel à partir
desentretiens objectifs préparés à l’avance.
Gestions administratives
3.1. Objectifs :
Collecter des informations pour aider à mieux comprendre et cerner les attentes
et désirs des clients afin d’améliorer la qualité des services proposés.
Un sms est créé sous forme d’une question qui va être écrite dans la page
d’accueil du sondage. Après chaque enregistrement, l’implémentation de la
question est vérifiée.
Une liste des sms (questions) est disponible avec des tries.
Cette fonction est utile pour contrôler que chaque SMS a bien été implémenté.
L’application que j’ai l’honneur de présenter est une application web / J2EE
implantée sur une architecture physique à 3 niveaux :
Le niveau Client (ou Poste de Travail) où se situe l’utilisateur ;
Le niveau Serveur Applicatif qui répond, en collaboration avec le Serveur
de données, aux demandes émises par le niveau Client ;
Le niveau Serveur de Données qui héberge le SGBD et la base de données.
6. DEVELOPPEMENT
Pour le développement, j’ai utilisé le moteur de servlets « Tomcat 7.0 » ainsi que
l’éditeur Eclipse JEE mars-2.
Le pattern DAO vous permet de lier vos tables avec des objets Java.
_ Interagir avec des bases de données en encapsulant l'accès à celles-ci permet
de faciliter la migration vers une autre base en cas de besoin.
6.6. Débugage :
Pour le débugage j’ai utilisé l’API Log4j.
Pour l’utilisation, il faut paramétrer un fichier log4.properties.
On paramètre également des objets de sortie. Pour ce projet, j’ai réalisé :
- une sortie pour le développement avec Tomcat en local, avec affichage des
infos dans la console Eclipse et un niveau de traçage commençant au debug
- une sortie sur un fichier du serveur de production de l’application à un niveau
de traçage incorporant uniquement les erreurs et warning.
7. MISE EN ŒUVRE
7.1. Outils de développement :
Pour implémenter le système, il a fallu d’abord mettre en place la base de
données et la base des documents (GED) du système, ensuite de développer
7.2. Réalisation :
Dans cette partie je vais présenter des utilisations de l’application, sujet du
rapport, par les managers de l’opérateur.
Tout utilisateur est invité à commencer son sondage sms pour pouvoir profiter
des services offerts par notre application.
Cette figure présente la page d’acceuil de mon projet (Sondage SMS) , nous
avons un champ pour le nom de somdage et un champ pour écrire le question
avec un champ pour le choix réponse .
8. CONCLUSION GENERALE
La réalisation de ce projet était une grande expérience pour l’adaptation au
travail, j’ai rencontré beaucoup de problèmes d'installation et configuration
<div class="nom">
Nom de sondage: <input type="text" name="PremierSondage"/><br /><br />
<br />
</div>
<h3>Question1</h3>
<div class="Question">
<h3>Question2</h3>
<div class="Question">
<h3>Question3</h3>
<div class="Question">
<h3>Question4</h3>
<div class="Question">
try
{
Statement ps =connexio.createStatement();
String sql="select *from questions";
// Etape 4 : ex?cution requ?te
ResultSet rs = ps.executeQuery(sql);
%>
<table Border="1">
<tr>
<td>Question1</td>
<td>Question2</td>
<td>Question3</td>
<td>Question4</td>
</tr>
<%
while (rs.next()) {
/*System.out.println(rs.getString("Question1"));
System.out.println(rs.getString("Question2"));
System.out.println(rs.getString("Question3"));
System.out.println(rs.getString("Question4"));*/
<tr>
<td><%out.println(rs.getString("Question1")); %></td>
<td><%out.println(rs.getString("Question2")); %></td>
<td><%out.println(rs.getString("Question3")); %></td>
<td><%out.println(rs.getString("Question4")); %></td>
</tr>
</table>
<%
catch(SQLException e)
{
e.printStackTrace();
}
%>
<input type="submit" name="Envoyer" value="Envoyer" style="color:blue"/>
</form>
</body>
</html>
/**
* @see HttpServlet#HttpServlet()
*/
public myservlet() {
super();
String question1=request.getParameter("Question1");
String question2=request.getParameter("Question2");
String question3=request.getParameter("Question3");
String question4=request.getParameter("Question4");
Questions q=new
Questions(question1,question2,question3,question4);
ilistDao.addQuestions(q);
request.getRequestDispatcher("sond2.jsp").forward(request, response);
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
On utilise une interface IlistDao.java pour définir les méthodes d'accès aux
données des utilisateurs, indépendamment de la méthode de stockage. On
indique juste des noms de méthodes ici.
package projetMattel;
package projetMattel;
import projetMattel.Questions;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Listquest implements Ilist{
private DaoFactory daoFactory;
Listquest(DaoFactory daoFactory) {
this.daoFactory = daoFactory;
}
public void addQuestions(Questions q) {
Connection connexion = null;
try {
connexion = daoFactory.getConnection();
Statement ps =connexion.createStatement();
String req = "insert into questions (Question1,Question2,Question3,Question4)values ('";
req=req+q.getQuestion1()+"','";
req=req+q.getQuestion2()+"','";
req=req+q.getQuestion3()+"','";
req=req+q.getQuestion4()+"')";
ps.executeUpdate(req);
}
catch(SQLException e)
{
e.printStackTrace();
}
}
import ie.omk.smpp.Address;
import ie.omk.smpp.Connection;
import ie.omk.smpp.SMPPException;
import ie.omk.smpp.event.ConnectionObserver;
import ie.omk.smpp.event.ReceiverExitEvent;
import ie.omk.smpp.event.SMPPEvent;
import ie.omk.smpp.examples.SMPPAPIExample;
import ie.omk.smpp.message.BindTransmitterResp;
import ie.omk.smpp.message.SMPPPacket;
import ie.omk.smpp.message.SubmitSM;
import ie.omk.smpp.message.SubmitSMResp;
import ie.omk.smpp.util.GSMConstants;
import java.io.IOException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tools.ant.BuildException;
import projetMattel.Questions;
/**
* This class simply binds to the server, submits a message, waits for the
* class.
*/
// This is called when the connection receives a packet from the SMSC.
switch (ev.getType()) {
case SMPPEvent.RECEIVER_EXIT:
break;
+ Integer.toHexString(pak.getCommandId()));
switch (pak.getCommandId()) {
case SMPPPacket.BIND_TRANSMITTER_RESP:
if (pak.getCommandStatus() != 0) {
synchronized (blocker) {
blocker.notify();
} else {
+ ((BindTransmitterResp) pak).getSystemId()
+ "\".\n\tSubmitting message...");
send(myConnection);
break;
case SMPPPacket.SUBMIT_SM_RESP:
if (pak.getCommandStatus() != 0) {
+ pak.getCommandStatus());
} else {
+ ((SubmitSMResp) pak).getMessageId());
try {
myConnection.unbind();
} catch (IOException x) {
synchronized (blocker) {
blocker.notify();
break;
// Unbind response..
case SMPPPacket.UNBIND_RESP:
logger.info("Unbound.");
synchronized (blocker) {
blocker.notify();
break;
default:
logger
+ pak.getCommandId());
if (ev.getReason() != ReceiverExitEvent.EXCEPTION) {
if (ev.getReason() == ReceiverExitEvent.BIND_TIMEOUT) {
} else {
Throwable t = ev.getException();
logger.warn("Exception", t);
synchronized (blocker) {
try {
GSMConstants.GSM_NPI_UNKNOWN, "3456789");
sm.setDestination(destination);
sm.setMessageText("message");
myConnection.sendRequest(sm);
} catch (IOException x) {
} catch (SMPPException x) {
myConnection.addObserver(this);
myConnection.autoAckLink(true);
myConnection.bind(
Connection.TRANSMITTER,
systemID,
password,
systemType,
sourceTON,
sourceNPI,
sourceAddress);
synchronized (blocker) {
blocker.wait();
} catch (Exception x) {
x.getMessage(), x);
9. WEBOGRAPHIE :
http://java.developpez.com/
http://codes-sources.commentcamarche.net/
https://openclassrooms.com/courses?q=java