Rapport Stage Armee Air-2007

30
Développement d’une application web de gestion de l’instruction professionnelle des opérateurs et contrôleurs aériens utilisant Java et Struts Auteur Cyril Mottier Maître De Stage Sgt Michel Gavois Entreprise Armée de l’Air Etablissement INSA de Rennes Année 3 Département Informatique Période 02.07.07 – 31.08.07 Version : 07 septembre 2007

Transcript of Rapport Stage Armee Air-2007

Page 1: Rapport Stage Armee Air-2007

 

 

 

 

 

Développement d’une application web de  

gestion  de l’instruction professionnelle des  

opérateurs et contrôleurs aériens utilisant Java et 

Struts  

 

 

Auteur  Cyril MottierMaître De Stage  Sgt Michel Gavois

Entreprise  Armée de l’AirEtablissement  INSA de Rennes

Année  3Département  Informatique

Période  02.07.07 – 31.08.07 

Version : 07 septembre 2007   

Page 2: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

2 | P a g e   

Table des matières Remerciements ....................................................................................................................................... 3 

I.  Introduction ..................................................................................................................................... 4 

A.  Présentation de l’entreprise ........................................................................................................ 4 

B.  Le réseau SIGAPAIR ..................................................................................................................... 5 

C.  Le sujet du stage .......................................................................................................................... 6 

II.  Giproca : une application web utilisant Struts ................................................................................ 6 

A.  Présentation du besoin ............................................................................................................... 6 

B.  Etude de l’existant ....................................................................................................................... 7 

C.  Analyse du problème ................................................................................................................... 8 

D.  Développement de l’application ................................................................................................. 8 

1.  Choix des technologies utilisées .............................................................................................. 8 

2.  Préparation de l’environnement de travail ............................................................................. 9 

3.  Réalisation d’un template complet ......................................................................................... 9 

4.  Développement de l’application ........................................................................................... 10 

i.  Le framework Struts .......................................................................................................... 10 

ii.  La démarche de développement d’une application utilisant Struts .................................. 11 

iii.  Exemple de développement d’un formulaire de recherche ............................................... 11 

iv.  Notions supplémentaires utilisées ..................................................................................... 12 

III.  Conclusion ................................................................................................................................. 13 

IV.  Annexes ..................................................................................................................................... 14 

Diagramme des classes UML de l’application (Fig 1) ........................................................................ 15 

Diagramme des classes UML de la partie ressources humaines (Fig 2) ............................................ 16 

Copie d’écran de l’interface graphique de Giproca (Fig 3) ................................................................ 17 

Diagramme de Gantt de mon stage (Fig 4) ....................................................................................... 18 

Diagramme des cas d’utilisation (Fig 5) ............................................................................................ 18 

RechercheActionServlet.java (Code 1) ............................................................................................... 19 

Les différents JavaBean (Code 2) ....................................................................................................... 21 

RechercheMulticriteresAction.java (Code 3) ..................................................................................... 23 

Les vues de la recherche (Code 4) ...................................................................................................... 28 

Struts‐config.xml (Code 5) ................................................................................................................. 29 

V.  Références ..................................................................................................................................... 29 

VI.  Glossaire .................................................................................................................................... 30 

 

Page 3: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

3 | P a g e   

Remerciements  

Mes remerciements vont aux personnes suivantes : 

Tout d’abord  le Lcl  (Lieutenant Colonel) Wulfran Vanneron sans  lequel ce stage n’aurait pu être réalisé. Il m’a sympathiquement accueilli dans son unité et m’a confié une part non négligeable de la réalisation d’un projet conséquent. Il a été d’un grand soutien lors de la relecture de ce rapport de stage. 

Le Sgt (Sergent) Michel Gavois pour son attention lors de la réalisation du projet. Sa réactivité et la qualité de son écoute ont été motivantes et instructives. Il a su répondre à mes questions, tant techniques que conceptuelles ou fonctionnelles, et a examiné mes codes sources et mes écrits. 

Le Cdt  (Commandant)  Lerousseau,  le Cne  (Capitaine)  Lajoie et  le Maj  (Major) Valade pour leur présentation de l’existant et leurs réponses aux questions sur le projet final souhaité. 

L’ensemble des membres de l’ASSI 01.617 qui m’ont gentiment accueilli. Ils ont également su répondre à mes  interrogations concernant  leurs activités sur  le réseau SIGAPAIR en conservant une atmosphère de travail conviviale et détendue. 

Page 4: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

4 | P a g e   

I. Introduction 

A. Présentation de l’entreprise  

L’Armée de  l’Air fait partie, au même titre  que  la Gendarmerie Nationale,  l’Armée de Terre et la Marine Nationale, du Ministère de  la  Défense.  Créée  en  1933,  elle  dispose aujourd’hui  de  plusieurs  bases  aériennes  en métropole  ainsi  qu’en  outre‐mer  et  à l’étranger. 

Mon stage s’est déroulé sur le site de Cinq Mars La Pile rattaché à la BA 705 (Base Aérienne) de Tours. Situé à 25km à l’Ouest de Tours, ce site regroupe sur 25 hectares, 2 missions principales : 

La surveillance et le contrôle aérien,  La gestion des entrepôts de l’Armée de l’Air ; 

Cette première mission est garantie par le CDC 07.927 (Centre de Détection et de Contrôle). Il as‐sure  les missions de sûreté aérienne ainsi que  le contrôle de  la circulation aérienne militaire.  Il est également chargé de la coordination des sauvetages en cas d’accidents d’aéronefs civils ou militaires. 

L’EAA 00.609  (Entrepôt de L’Armée de  l’Air)  réceptionne, stocke et  redistribue en  fonction des besoins et demandes, une partie des matériels servant aux unités de l’Armée de l’Air : pneumatiques d’aéronefs, matériels électroniques et informatiques… 

Le site de Cinq Mars La Pile est également chargé, depuis 1994, de la zone aérienne de défense Nord. 

L’ASSI  01.617  de  Cinq  Mars  La  Pile  (Antenne  de  Soutien  des  Systèmes d’Informations) m’a donc accueilli pendant 2 mois. Depuis 2001, l’Armée de l’Air s’est dotée d’un  système d’information des  ressources humaines  appelé  SIGA‐PAIR (Système de Gestion et d’Administration du Personnel de l’armée de l’AIR). Ce système relie les organismes de direction des ressources humaines des bases 

aériennes, des commandements et de  l’administration centrale. L’ASSI a pour missions prioritaires d’assurer la cohérence et la mise à jour du système d’information global et de veiller à la disponibilité et à  la performance des  serveurs  informatiques SIGAPAIR. Pour  ce  faire,  l’antenne est  séparée en deux sections : 

la section « Données » qui tente de conserver la pertinence et la cohérence des informations en corrigeant les collisions de données détectées sur le réseau SIGAPAIR. Elle a donc un rôle d’administrateur de données en assurant le suivi et la réplication des lignes, 

la section « Système » qui soutient et administre  l’ensemble des serveurs et assure  le sup‐port technique national SIGAPAIR. Elle est aussi chargée de distribuer et d’appliquer toutes évolutions des applications de production et d’interrogation sur les serveurs et sur les postes 

 

Page 5: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

5 | P a g e   

clients. Elle joue enfin le rôle de développeur logiciel ou système lorsque le commandement a besoin d’une application d’importance raisonnable à l’opposé des projets importants géné‐ralement sous‐traité à des industriels. C’est donc dans le cadre du développement d’une ap‐plication de taille moyenne que mon stage a été effectué. 

 

Organigramme de l’ASSI 

B. Le réseau SIGAPAIR  

SIGAPAIR représente un ensemble de bases de données distribuées et répliquées. 

 

Représentation du réseau SIGAPAIR 

Page 6: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

6 | P a g e   

Ce  réseau met ainsi à disposition des 2500 cadres chargés de  la gestion et de  l’administration d’environ 100 000 personnes (militaires actifs ou de réserve), un outil présentant toutes les garanties de fiabilité, de sécurité et de disponibilité. 

Sur le plan fonctionnel, il s’agit de : 

Disposer d’informations individuelles et collectives complètes et fiables,  Réaliser les travaux d’administration, de gestion ou des études prévisionnelles. 

Sur le plan technique, il s’agit de : 

Mieux utiliser les ressources (matérielles, logicielles, personnelles),  Responsabiliser les utilisateurs. 

Le  mode  de  fonctionnement  de  SIGAPAIR  est  de  type  client/serveur  en  mode  client  léger. L’ensemble  du  système  est  déployé  sur  62  sites  et  comprend  60  bases  de  données,  60  serveurs d’application, 120 serveurs de réseaux et 1500 postes clients répartis en France et à  l’étranger (Dji‐bouti, Sénégal, La Réunion …). Les systèmes d’exploitation sont de type UNIX (AIX 4.3) pour  les ser‐veurs de données et Windows NT pour  les serveurs bureautiques. Enfin, le SGBD utilisé est Ingres II 2.0  (Intelligent Graphic RElational System). Ce dernier est considéré comme un SGBD de classe en‐treprise (au même titre que le très renommé Oracle). 

C. Le sujet du stage  

Le CDC de la base de Cinq Mars La Pile est composé de deux escadrons constitués d’une centaine de personnes chacun. Afin de mieux gérer les informations sur chacun des militaires de l’unité (une unité est  le regroupement de plusieurs escadrons),  le commandement a demandé à  l’ASSI de déve‐lopper  une  application  permettant  d’accéder  facilement  à  l’ensemble  des  informations  propres  à chaque contrôleur et opérateur (informations générales, grades, licences, stages effectués …). 

L’application, dans un souci de portabilité, a été développée en utilisant le langage Java et le ser‐veur applicatif Tomcat  le tout étant monté sur une plateforme Linux. Le regroupement de ces deux technologies permet de créer une application fonctionnant par interface web. 

La réalisation d’une telle application était un projet assez conséquent. Ce dernier était également voué à être modifié régulièrement afin de satisfaire aux demandes du commandement et de suivre les évolutions des différentes modalités de  la banque de ressources humaines militaires  (migration de SIGAPAIR vers sa version 6 prévue pour début 2008). Afin de faciliter le développement et de sa‐tisfaire aux contraintes précédemment citées, le framework Struts (version 1.3.8) a donc été utilisé. 

II. Giproca : une application web utilisant Struts 

A. Présentation du besoin  

Page 7: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

7 | P a g e   

L’unité du CDC est composée d’environ 200 hommes et  femmes se relayant chaque  jour et 24 heures sur 24 afin d’effectuer le contrôle et la surveillance de l’espace nord aérien français. Le com‐mandement du CDC s’occupe donc d’effectuer le management de l’ensemble de ces militaires. Cha‐cun d’entre eux sont munis d’informations personnelles qui définissent son niveau au sein de l’unité (grade, licences obtenues, statut, stages effectués, …). Ces informations étant modifiées assez régu‐lièrement  (une  licence doit en moyenne être mise à  jour tous  les ans),  il devenait  indispensable au commandement de se procurer une application unique donnant accès à l’ensemble des informations des contrôleurs et opérateurs aériens présents sur le site de détection de Cinq Mars La Pile. 

Suite à un entretien d’environ 3 heures avec les intéressés (Cdt Lerousseau et Cne Lajoie), il a été décidé de réaliser cette application en utilisant une interface web. Cela permettait  une visualisation efficace  et  simple  sur  un  navigateur web.  Le  client web  Firefox  2.x  étant  disponible  sur  de  nom‐breuses machines, autorisé par l’Armée de l’Air et simple à installer, il a été choisi comme plateforme client.  L’application de Gestion de  l’Instruction PRofessionnelle des Opérateurs et Contrôleurs Aé‐riens  (Giproca) devait  fournir au commandement des  informations déjà existantes sur  le réseau SI‐GAPAIR  (nom, prénom, situation familiale, visite médicale, passeport, …) et en  inclure de nouvelles (licences, stages, formation militaire, …). 

Le commandement du CDC étant soucieux du parcours de leurs membres, il avait également de‐mandé une historisation de la plupart des propriétés des militaires (escadron, grade, situation fami‐liale, statut, …). 

Pour  des  raisons  de  sécurité  et  de  secret militaire  (données  classées  confidentielles  person‐nelles),  le  commandant  Lerousseau avait demandé que  l’application permette de définir plusieurs niveaux d’accès. Certains profils devaient par exemple avoir  tous  les droits  (écriture et  lecture de l’ensemble des informations) alors que d’autres ne devait accéder qu’en lecture à certaines informa‐tions  (un  sous‐officier  ne  devait  accéder  qu’à  ses  propres  informations  par  exemple).  Dans  une même optique de sécurité,  il a été décidé de séparer totalement  les  informations entre  la base de données de l’Armée de l’Air (SIGAPAIR) et Giproca. La saisie des informations dites générales ne res‐tait donc faisable qu’à partir du réseau SIGAPAIR alors que  l’ensemble des  informations propres au CDC devait se faire à l’aide de la nouvelle application. Enfin, une comparaison des deux tables aurait lieu de manière quotidienne afin de conserver  la cohérence entre  les deux systèmes d’informations (au jour près). 

B. Etude de l’existant  

Comme expliqué ci‐dessus, l’application de suivi peut être séparée en deux parties distinctes. La première  regroupe  l’ensemble  des  informations  personnelles  et  communes  à  chaque militaire  de l’Armée de  l’Air  (nom, prénom, grade, date d’entrée en service …). Ces  informations étaient dispo‐nibles sur le réseau des ressources humaines de l’Armée de l’Air. La seconde partie s’occupe quant à elle  de  données  propres  aux militaires  du  CDC  (licences,  stages,  statut,  formation militaire, …).  Il n’existait en revanche aucune donnée numérique concernant cette partie. Afin de saisir  l’ensemble des informations, il avait donc été demandé de créer une interface de saisie pour remplir et modifier ces informations. 

Page 8: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

8 | P a g e   

D’un point de vue applicatif, le projet est parti de zéro : en effet, aucune application de suivi des informations concernant les militaires du CDC à interface web n’existait lors de la création de Gipro‐ca. Il a tout de même était possible de réutiliser une partie du modèle conceptuel de donnée de SI‐GAPAIR afin de modéliser la première partie du projet. 

C. Analyse du problème  

Suite à l’entretien avec le commandement du CDC et à l’étude de l’existant, nous avons débuté l’analyse du problème. Cette analyse consistait simplement à créer le diagramme de classe UML des données nécessaires à  l’application Giproca. Ce diagramme devait néanmoins présenter une archi‐tecture permettant un développement propre et facile de notre interface web. Comme le montre le schéma de  la  figure 1  (voir Annexe),  le modèle de  l’application comportait un ensemble  important d’objets différents. Mon  stage ne durant que 9  semaines,  il m’a donc été demandé de ne  réaliser qu’une partie de  l’application. Cette partie est représentée sur  la  figure 2  (voir Annexe) et ne con‐cerne en  réalité que  les données directement  rattachées à une personne disponibles sur  le  réseau des ressources humaines de l’Armée de l’Air. 

A l’aide d’un logiciel de génie logiciel (PowerAMC), ce diagramme UML a ensuite été transformé en un modèle conceptuel de donnée (MCD). Ce même logiciel a finalement permis de générer d’une part les tables de la base de données et d’autre part les classes Java (classes métiers) permettant le développement  de Giproca. 

D. Développement de l’application 

1. Choix des technologies utilisées  

Giproca a été réalisée à l’aide du langage Java. Cette technologie qui jouit en outre d’une noto‐riété  indéniable dispose d’un modèle objet parmi  les meilleurs du marché. Elle permet également aux logiciels d’être exportables sur n’importe quelle plateforme (Windows Nt, Linux, …). Le Java dis‐pose ensuite d’un framework conséquent et permettant l’accès aux bases de données relationnelles telle que PostgreSQL grâce au JDBC (Java DataBase Connectivity). Enfin, le projet ne nécessitait abso‐lument pas de manipulation système.  Il s’en suit donc que  l’utilisation d’un  langage dit bas niveau comme le C ou C++ n’était pas utile ou bénéfique. 

Le SGBD (Système de Gestion de Base de Données) choisit était donc PostgreSQL. Cette base de donnée est autorisée par l’Armée de l’Air est fait figure d’exemple parmi les différents SGBD libres du marché. Pour finir, PostgreSQL est toujours maintenu par une communauté active d’informaticiens. 

Le  serveur applicatif exploité pour  réaliser Giproca  se nomme Tomcat.  Il a été utilisé pour  les même raisons que PostgreSQL. 

Enfin, dans le but d’obtenir un code dit propre et séparant au mieux le design du contenu dyna‐mique,  le développement  s’est posé  sur  le  framework Struts dans  sa version 1.3.8. L’utilisation de cette technologie permet par la suite une modification simple de l’application puisqu’elle suit le mo‐dèle MVC (voir explication plus bas). 

Page 9: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

9 | P a g e  

2. Préparation de l’environnement de travail  

Afin de réaliser le projet, il a fallu installer un environnement de travail complet puisque l’équipe de développement de l’ASSI ne programmait principalement ses applications web qu’en PHP‐MySQL. La préparation de notre environnement de travail s’est donc décomposée en deux étapes : 

la création d’un serveur web,  l’installation d’un IDE sur station de développement. 

L’installation du serveur a débuté par la mise en place de l’OS Linux (distri‐bution Mandriva 2006) sur une machine de la marque Bull. Il a ensuite été né‐cessaire de  créer  le  serveur applicatif  Java. Nous avons donc  commencé par installer  la machine virtuelle Java. L’application Tomcat a ensuite été mise en 

place. Couplée à la machine virtuelle Java, elle permet, à l’instar d’Apache, de faire office de serveur Java (et non PHP ou http comme le fait couramment Apache).  

 

Nous étions maintenant pourvu d’un serveur applicatif mais sans grand inté‐rêt puisque ce dernier ne disposait d’aucune base de donnée relationnelle. Nous avons  donc  intégrer  le  SGBD  PostgreSQL  à  notre  plateforme  Linux.  Suite  à l’installation de cette base de données,  la création d’identifiants et de mots de passe de connexion a été réalisée afin de gérer les droits d’accès au SGBD de notre serveur applicatif. 

Enfin, dans le but de faciliter notre travail au sein de l’équipe, j’ai pro‐posé un utilitaire de  travail collaboratif utilisé  lors du projet de  fin de  troisième année: Subversion (successeur de CVS). Les membres de  l’équipe ont alors décidé d’essayer cette application facilitant le  travail en groupe et  facilitant  les  retours et  changements de version. Pour  ce  faire, nous avons installé le serveur Subversion sur notre machine Linux. 

Dans un deuxième  temps,  j’ai débuté  l’installation des  stations de développement. Dans  le but de  faciliter  et d’optimiser  le déve‐loppement, j’ai monté un serveur local Tomcat sur chacune des ma‐chines de travail. Cela évitait des pertes de temps inutiles de connexion ftp ou ssh et de redémarrage du serveur. 

Finalement,  l’interface de développement utilisée a été  le célèbre IDE Eclipse. Cet IDE a fait ses preuves dans  le monde professionnel et est également autorisé par  l’Armée de  l’Air. Afin d’orienter  l’interface de développement vers  la  création d’applications web,  j’ai  intégré  le plugin WTP  (Web  Tools  Platform)  ainsi  que  Struts  à  l’ensemble  des 

stations de travail. Le plugin Subclipse faisant office de client Subversion a été installé afin d’autoriser le travail collaboratif. 

 

3. Réalisation d’un template complet  

 

Page 10: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

10 | P a g e   

Contrairement à une entreprise dite classique, l’Armée de l’Air se doit de créer intégralement ces applications. L’ensemble des technologies utilisées dans  l’Armée de  l’Air ont, au préalable, été vali‐dées par un organisme spécial. C’est  la raison pour  laquelle  il a fallu créer  l’esthétique complète du site. Etant déjà accoutumé à ce genre de développement et puisque l’analyse du problème (création des diagrammes de  classes UML, MCD, …) était en  cours, on m’a demandé de  créer un  template complet. Ce template devait présenter une interface web ergonomique et claire. Vu l’importance de l’application,  il semblait  indispensable que  l’interface soit munie d’un grand nombre de menus. J’ai donc choisi de créer un menu horizontal constitué d’onglet eux même munis de sous menus. La réali‐sation de  ce  template a été effectuée en  suivant  les normes XHTML Strict 1.1 et CSS 2.1 du W3C (World Wide Web  Consortium).  Fonctionnant  sous  Opera  9  et  Internet  Explorer  7,  ce  template n’avait  besoin  d’être  compatible  qu’avec  le  navigateur  Firefox  2.x.  Pour  satisfaire  aux  différentes résolutions des écrans du CDC, le template s’adapte à la résolution de l’écran sur lequel il s’affiche à condition que cette dernière soit supérieure ou égale à 800x600 pixels. Une copie d’écran est dispo‐nible en annexe sur la figure 3. 

4. Développement de l’application i. Le framework Struts 

Struts  est  un  framework  du  développement  d’application  web  du  projet  Jakarta  Struts  de l'Apache Software Foundation.  Il cherche à  fournir un cadre standard de développement d'applica‐tion  web  en  Java  respectant  l'architecture  dite MVC  (Modèle‐Vue‐Contrôleur).  Struts  utilise  des technologies standards : Java Servlets, JavaBeans, ResourceBundles, et XML. 

Le modèle MVC  cherche à définir une méthode de programmation permettant de  séparer  les trois  aspects principaux  d’un projet  :  le modèle  qui  représente  l’ensemble  des bases de données et/ou objets contenant l’information utile à l’application, la vue qui représente l’esthétique du site et l’ensemble des données graphiques fournies à l’utilisateur par l’interface web et le contrôleur qui fait office de passerelle entre le modèle et la vue en effectuant les opérations de connexion nécessaires. On peut donc représenter ce modèle à l'aide du schéma représenté ci‐dessous. 

 

Schéma de l’architecture type d’une application utilisant Struts 

Page 11: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

11 | P a g e   

Le développement d’une application à  l’aide de Struts s’effectue par héritage de classes. Le fra‐mework  fournit  un  ensemble  de  classes  qui  sont  facilement  extensibles.  Pour  créer  une  nouvelle action personnalisée,  il suffit donc de créer une nouvelle classe héritant de  la classe définie dans  le framework Struts et nommé de façon évidente "Action". 

En  ce  qui  concerne  le modèle,  le  framework  peut  interagir  avec  les  technologies  standards d’accès aux données comme JDBC (technologie utilisée  lors de mon stage) ou EJB ainsi que tous  les packages tierce partie comme Hibernate, iBATIS ou Object Relational Bridge. Enfin, la vue fonctionne en utilisant XML, XSLT, XHTML, CSS, Java Server Pages (ces trois dernières technologies ont été utili‐sées lors de mon stage), et d’autres systèmes de présentation. 

ii. La démarche de développement d’une application utilisant Struts  

Le développement d’une application utilisant Struts suit, en général, la démarche décrite ci‐dessous : 

la définition des vues. On distingue les vues qui sont des formulaires et les autres. 

• chaque  vue  formulaire  donne  naissance  à  une  définition  dans  le  fichier  struts‐config.xml. On y définit les informations suivantes :  le nom de la classe Bean qui contiendra les données du formulaire ainsi que l'in‐

dication d’état de validation des données (vérifiées ou non). Si elles doivent être vérifiées et qu'elles s'avèrent  invalides, on doit  indiquer  la vue à envoyer en ré‐ponse au client dans ce cas. 

le nom de la classe Action chargée de traiter le formulaire.  le nom de toutes les vues susceptibles d'être envoyées en réponse au client une 

fois que la requête a été traitée. La classe Action choisira l'une d'elles selon le ré‐sultat du traitement. 

• chaque vue  fait  l'objet d'une page  JSP. Les exemples de vues, notamment  les vues formulaires, illustrent l’utilisation d’une bibliothèque de balises propres à Struts. 

l'écriture des classes Javabean correspondant aux vues formulaires  l'écriture des classes Action chargées de traiter les formulaires  l'écriture des éventuelles classes métier ou d'accès aux données  

iii. Exemple de développement d’un formulaire de recherche 

Dans le but de présenter succinctement le développement d’une application web utilisant Struts, étudions l’exemple suivant. Cet exemple traite d’un formulaire de recherche de militaires  et adopte l’architecture représentée sur ce schéma : 

Page 12: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

12 | P a g e   

 

Schéma de la partie recherche de Giproca 

Il y avait trois vues (voir Code 5)  Le contrôleur est défini manuellement. Cela permet de définir des constantes extraites de la base de données comme  les grades ou  les escadrons existants  (qui sont des critères de re‐cherche).  Le  servlet n’étant  instancié qu’une  seule  et unique  fois,  cela  limite  les  accès  au SGBD comme le montre le code source Code 1 

ListePersonneBean présent en annexe Code 2 est la classe qui mémorise la réponse dite mul‐tiple : l’ensemble des personnes correspondant aux critères de recherche. 

InfosPersonneBean, en annexe Code 3, mémorise  les  informations propres à une  seule et unique personne (cas d’une recherche à réponse unique) 

Enfin RechercheMulticriteresAction  (Code 4) est  la classe analysant  les données du  formu‐laire présent sur Recherche.Multicriteres.jsp et redirige sur :  

• Affichage.Infos.Unique.jsp si réponse unique 

• Recherche. Multicriteres.jsp si réponse multiple ou aucun résultat 

• Erreurs.Systeme.jsp si une erreur système survient (erreur SQL ou exception Java) 

Les sources Code6 donnent  l’extrait du  fichier struts‐config.xml permettant  la coordination des trois entités : modèle, vue et contrôleur. 

 iv. Notions supplémentaires utilisées 

Durant la création de Giproca, j’ai également utilisé différentes technologies adjacentes à Struts. Ces plugins additionnels apportaient plusieurs avantages sur le développement et sur l’utilisation de notre application : 

Utilisation des Tiles : ce plugin a permis d’approfondir et de faciliter la séparation de l’esthétique et de la programmation interne. Cette technologie permettait de définir un template réutilisable pour l’ensemble du site. Il n’était ainsi plus nécessaire de dé‐finir une entête de page (contenant le menu et le titre de la page) et un pied de page à  chaque  vue,  le modèle  de  chaque  page  étant  défini  dans  un  fichier  XML :  tiles‐defs.xml 

Page 13: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

13 | P a g e   

Utilisation  de  Validator :  ce  plugin  permet  de  générer  automatiquement  les mé‐thodes de  validation d’un  formulaire.  Il  autorise  également  la  génération  automa‐tique  d’une  pré‐validation  JavaScript  du  coté  client.  Cela  évite  ainsi  des  transferts inutiles d’informations avec  le  serveur applicatif et  soulage  le  réseau.  La définition des  formats s’effectue à  l’aide d’expressions régulières également dans des  fichiers XML : validator.xml et validator‐rules.xml. 

III. Conclusion  

Ces neuf semaines au sein de l'Armée de l'Air française ont été plus qu'enrichissantes pour moi. En  tant que  futur  ingénieur,  il me paraissait  indispensable d'effectuer un  stage me permettant de découvrir de nouvelles technologies, de nouvelles méthodes de travail et un nouvel environnement de développement. Mon séjour à  l'ASSI a concrétisé mes attentes en  répondant à ces contraintes. Cela fut d'autant plus facile que l'équipe a su m'intégrer et m'aider dans ma progression sur le projet Giproca. Tout en me supervisant, Michel GAVOIS, mon maître de stage, m'a laissé une marge de ma‐nœuvre importante (résolution de problèmes, implémentation de solutions personnelles). 

Le projet de ce stage était composé d'un ensemble de technologies actuelles. Bien que la plupart de ces technologies soient déjà acquises (CSS, XHTML, Java, ...) cela m'a permis de me perfectionner dans des domaines assez peu utilisés lors de ma formation (JDBC). J'ai également découvert de nou‐velles  technologies  telles que Struts ou  les  JavaServerPages. Ces  technologies ayant une approche entrepreneuriale d'un développement d'application, j'ai découvert une toute autre manière de déve‐lopper. Je me suis donc retrouvé confronté à une programmation beaucoup plus globale et divisée en couches. Cela permet une modification plus aisée et une  retouche du code plus  facile pour  les successeurs reprenant le projet. 

J'ai  également  approfondi mes  connaissances  sur  certains  logiciels de développement  comme Eclipse, Notepad++ ou Firefox. En effet,  je pense  réellement être devenu beaucoup plus productif avec  l'environnement  de  développement  intégré  Eclipse  qu'avant  ce  stage.  J'ai  découvert  un  en‐semble de fonctionnalités totalement inconnues à mon arrivée dans l'équipe de développement. Ce stage a bien sûr été  l'occasion de découvrir de nouveaux  logiciels.  J'ai notamment utilisé  le  logiciel propriétaire de génie logiciel PowerAMC. Ce dernier nous a permis de créer les diagrammes de classe et de générer le MCD, le MLD et le framework de Giproca. 

Ce stage m'a ensuite permis d'avoir une nouvelle approche du développement logiciel industriel. En effet,  je ne pensais pas qu'autant d'applications étaient développées en utilisant une  interface web. J'ai également eu  la chance de réaliser ce projet en passant par toutes  les phases de dévelop‐pement  (analyse  des  besoins,  étude  de  l'existant,  analyse  du  problème,  développement,  tests  et rédaction de documentation). 

Enfin, d'un point de vue un peu plus technique, ce stage m'a permis de découvrir une "autre" in‐formatique. J'ai eu l'occasion d'assister et d'aider à l'installation d'un serveur de production utilisant le système d'environnement Linux (Mandriva 2006). Les visites de la base lors de mon arrivée m'ont également montré un environnement qui m'était totalement  inconnu  :  les gros systèmes ou  le sys‐

Page 14: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

14 | P a g e   

tème UNIX.  En  effet,  j'ai pu découvrir des  serveurs  totalement différents  (au niveau hardware  et software) de nos machines classiques. Ils utilisaient des OS comme AIX 4.3.3 ou GCOS 7. 

En conclusion, je suis très satisfait d'avoir participé à la création d'une application en assistant à l'ensemble des phases de développement. La découverte du framework Struts m'a également beau‐coup plu  car  c'est une approche  très  industrielle et  très ordonnée d'un projet. Ce  stage m'a donc permis de toucher à des notions que je n'aurais probablement jamais abordé dans le cadre d'un pro‐jet personnel ou scolaire. 

IV. Annexes  

Page 15: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

15 | P a g e   

 

Diagramme des classes UML de l’application (Fig 1) 

Page 16: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

16 | P a g e   

 

Diagramme des classes UML de la partie ressources humaines (Fig 2) 

Page 17: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

17 | P a g e   

 

 

Copie d’écran de l’interface graphique de Giproca (Fig 3) 

   

Page 18: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

18 | P a g e   

 

 

Diagramme de Gantt de mon stage (Fig 4) 

 

 

Diagramme des cas d’utilisation (Fig 5) 

Page 19: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

19 | P a g e   

package assi.struts.eots.recherche;  import javax.servlet.ServletException; import org.apache.struts.action.*; import assi.struts.eots.globals.VariablesGlobales; import assi.struts.eots.sql.*;  @SuppressWarnings("serial") public class RechercheActionServlet extends ActionServlet{    private ActionErrors erreursServlet = new ActionErrors();      public void init() throws ServletException{     super.init();     //On initialise l'ensemble des informations nécessaire     //à la partie recherche de l'application     try {              GradeSQL graSQL = new GradeSQL();       EscadronSQL escSQL = new EscadronSQL();       SituFamilleSQL sitSQL = new SituFamilleSQL();       SexeSQL sexSQL = new SexeSQL();              VariablesGlobales.ensGrades = graSQL.getEnsembleGrades();       VariablesGlobales.ensEscadrons = escSQL.getEnsembleEscadrons();       VariablesGlobales.ensSituations = sitSQL.getEnsembleSituationDeFamille();       VariablesGlobales.ensSexes = sexSQL.getEnsembleSexes();        getServletContext().setAttribute("g_listeGrades", VariablesGlo‐bales.ensGrades);       getServletContext().setAttribute("g_listeEscadrons", VariablesGlo‐bales.ensEscadrons);       getServletContext().setAttribute("g_listeSituations", VariablesGlo‐bales.ensSituations);       getServletContext().setAttribute("g_listeSexes", VariablesGlo‐bales.ensSexes);            } catch (Exception e) {       erreursServlet.add(ActionMessages.GLOBAL_MESSAGE, new ActionMes‐sage("InitServletError", e.toString()));     }   }      public ActionErrors getErreursServlet() { return erreursServlet; } } 

 

RechercheActionServlet.java (Code 1) 

ListePersonneBean.java :  package assi.struts.eots.recherche;  

Page 20: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

20 | P a g e   

import java.util.*; import assi.struts.eots.metiers.Personne;  public class ListePersonneBean implements java.io.Serializable {    //Cette table contiendra plusieurs lignes   //Chaque ligne sera composée des propriétés suivantes   // et dans cet ordre :  grade, nom d'usage, prénom, nia   private String[][] table = null;      public ListePersonneBean(LinkedList<Personne> ens) {     table = new String[ens.size()][4];     //Enfin, on remplit avec les infos de la personne     Iterator<Personne> it = ens.iterator();     int i = 0;     while (it.hasNext()) {       int j = 0;       Personne current = it.next();       table[i][j++] = current.getGradeActuel().lcGrade;       table[i][j++] = current.nomUsage;       table[i][j++] = current.prenom;       table[i][j++] = current.nia + " " + current.cle_nia;       i++;     }   }    public String[][] getTable() { return table; }      public String[] getTable(int i) { return table[i]; } }  InfosPersonneBean.java : package assi.struts.eots.recherche;  import assi.struts.eots.metiers.PersonneInfosSimple;  public class InfosPersonneBean implements java.io.Serializable {    private String[] infosPersonne;   private String referer;      public InfosPersonneBean(PersonneInfosSimple pers, String ref) {     infosPersonne = pers.toArray(false);;     referer = ref;   }    public String getInfosPersonne(int i) { return infosPersonne[i]; }   public String[] getInfosPersonne() { return infosPersonne; }   public String getReferer() { return referer; } }  

Page 21: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

21 | P a g e   

Les différents JavaBean (Code 2) 

package assi.struts.eots.recherche;  import java.io.IOException; import javax.servlet.ServletException; import java.sql.*; import java.util.LinkedList; import javax.servlet.http.*; import org.apache.struts.action.*; import assi.struts.eots.exception.SQLConnectionBaseException; import assi.struts.eots.metiers.Personne; import assi.struts.eots.sql.*;  public class RechercheMulticriteresAction extends Action {    public ActionForward execute(ActionMapping mapping, ActionForm form,       HttpServletRequest request, HttpServletResponse response)   throws IOException, ServletException {     //Récupération et vérification des erreurs de la servlet     ActionErrors errors = ((RechercheActionServlet)this.getServlet()).getErreursServlet();          if (!errors.isEmpty()) {       this.saveErrors(request, errors);       return mapping.findForward("afficherErreursSysteme");     }          // Déclaration d'un tableau d'erreurs permettant de les enregistrer     // si une erreur survient.     ActionErrors tabErreurs = new ActionErrors();          // Récupération des données du formulaire     String nom = (String) ((RechercheMultiForm) form).get("nom");     String prenom = (String) ((RechercheMultiForm) form).get("prenom");     String grade = (String) ((RechercheMultiForm) form).get("grade");     String escadron = (String) ((DynaActionForm) form).get("escadron");     String sexe = (String) ((DynaActionForm) form).get("sexe");     String situation = (String) ((DynaActionForm) form).get("situation");          // On nettoie les chaines de caractères ci‐dessus afin qu'elles     // ne provoque pas d'erreur SQL. (attention au apostrophes simples     // par exemple).     nom.replaceAll("'","''");     prenom.replaceAll("'","''");      // On se connecte à la base maintenant et on effectue une recherche     // en fonction des paramètres non nulls.     PersonneSQL persSQL = null;     try {       persSQL = new PersonneSQL();     } catch (ClassNotFoundException exc1) { 

Page 22: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

22 | P a g e   

      tabErreurs.add(ActionErrors.GLOBAL_MESSAGE, new ActionMes‐sage("ProgError", "ClassNotFoundException lancée"));       saveErrors(request, tabErreurs);       return mapping.findForward("afficherErreursSysteme");            } catch (SQLConnectionBaseException exc2) {       tabErreurs.add(ActionErrors.GLOBAL_MESSAGE, new ActionMes‐sage("SQLConnectionError"));       saveErrors(request, tabErreurs);       return mapping.findForward("afficherErreursSysteme");            } catch (SQLException exc3) {       tabErreurs.add(ActionErrors.GLOBAL_MESSAGE, new ActionMes‐sage("ProgError", "SQLException lancée par la création du statement"));       saveErrors(request, tabErreurs);       return mapping.findForward("afficherErreursSysteme");            }          try {       // Suivant le nombre de résultat on affiche une vue différente       // En effet, si on a un seul résultat on affiche les infos de la       // personne en question, sinon (on a plusieurs résultats) on reste       // sur la vue recherche multicritères et on affiche le tableau des       // personnes correspondantes aux critères.       LinkedList<Personne> ensPersonne = persSQL.getEnsemblePersonnesParCriteres(nom, prenom, grade, escadron, sexe, situation);       persSQL.setHistoriqueGrades(ensPersonne);              int nb_lignes = persSQL.getNbPersonnesParCriteres(nom, prenom, grade, escadron, sexe, situation);              if (nb_lignes == 0) {         tabErreurs.add(ActionErrors.GLOBAL_MESSAGE, new ActionMes‐sage("NoResultsFound"));         saveErrors(request, tabErreurs);         return mapping.findForward("afficherErreursRecherche");       }       else if (nb_lignes == 1) {         String nia_personne = ensPersonne.getFirst().nia;         request.setAttribute("infosPersonne", new InfosPersonne‐Bean(persSQL.getPersonneParNIA(nia_personne), "multi"));         return mapping.findForward("afficherInfoUnique");       } else {         request.setAttribute("listePersonnes", new ListePersonne‐Bean(ensPersonne));         return mapping.findForward("afficherInfosMultiples");       }     } catch (SQLException e) {       tabErreurs.add(ActionErrors.GLOBAL_MESSAGE, new ActionMes‐sage("SQLQueryError",e.toString())); 

Page 23: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

23 | P a g e   

      e.printStackTrace();       saveErrors(request, tabErreurs);       return mapping.findForward("afficherErreursSysteme");     }   }  } 

 

RechercheMulticriteresAction.java (Code 3) 

Recherche.Multicriteres.jsp : <%@ page language="java" contentType="text/html; charset=ISO‐8859‐1" pageEncoding="ISO‐8859‐1"%> <%@ taglib uri="/WEB‐INF/struts‐html.tld" prefix="html" %> <%@ taglib uri="/WEB‐INF/struts‐bean.tld" prefix="bean" %> <%@ taglib uri="/WEB‐INF/struts‐logic.tld" prefix="logic" %>      <p>Le formulaire ci‐dessous vous permet d'accéder à une recherche s'effectuant sur l'ensemble du personnel. L'ensemble des informations à renseigner sont bien entendu faculta‐tives.</p>     <p class="warning">La recherche sur les noms et prénoms s'effectue en suivant une régle simple et précise : seul les noms/prénoms contenant le mot donné sont conservés à l'issue de la recherche. Ainsi si vous tapez seulement 'AL' dans la champ 'NOM', vous obtiendrez tous les noms contenant par 'AL' (par exemple 'ALBERT' ou 'RIALBET'). La recherche est également insensible à la casse des caractères.</p>          <html:form action="/rechercheMulticriteres" styleId="boite_recherche">       <html:xhtml/>       <table class="left">         <tr>           <td class="titre_champ">Nom :</td>           <td class="champ"><html:text name="rechercheMultiForm" property="nom" /><span class="exemple">ex : MARTIN, dup ...</span></td>         </tr>         <tr>           <td class="titre_champ">Prénom :</td>           <td class="champ"><html:text name="rechercheMultiForm" property="prenom" /><span class="exemple">ex : Céline, Mic ...</span></td>         </tr>         <tr>           <td class="titre_champ">Grade :</td>           <td class="champ">             <html:select name="rechercheMultiForm" proper‐ty="grade">               <html:option value="Sans Importance">Sans Importance</html:option>               <html:options collection="g_listeGrades" property="nomGrade"/>             </html:select>           </td>         </tr> 

Page 24: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

24 | P a g e   

        <tr>           <td class="titre_champ">Escadron :</td>           <td class="champ">             <!‐‐<select size="3">               <option selected>Sans importance</option>               <option>Premier escadron</option>               <option>Second escadron</option>             </select>‐‐>             <html:select name="rechercheMultiForm" proper‐ty="escadron">               <html:option value="Sans Importance">Sans Importance</html:option>               <html:options collection="g_listeEscadrons" property="nomEscadron"/>             </html:select>           </td>         </tr>         <tr>           <td class="titre_champ">Sexe :</td>           <td class="champ">             <table style="width:auto">               <tr>                 <td>Sans importance : </td>                 <td><html:radio property="sexe"  value="I" /></td>               </tr>               <tr>                 <td>M : </td>                 <td><html:radio property="sexe"  value="M" /></td>               </tr>               <tr>                 <td>F : </td>                 <td><html:radio property="sexe"  value="F" /></td>               </tr>             </table>           </td>         </tr>         <tr>           <td class="titre_champ">Situation familiale :</td>           <td class="champ">             <!‐‐<select>               <option selected>Sans importance</option>               <option>Célibataire</option>               <option>En Concubinage</option>               <option>Pacsé</option>               <option>Marié</option>               <option>Divorcé</option>             </select>‐‐>             <html:select name="rechercheMultiForm" proper‐

Page 25: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

25 | P a g e   

ty="situation">               <html:option value="Sans Importance">Sans Importance</html:option>               <html:options collection="g_listeSituations" property="lcSituation"/>             </html:select>           </td>         </tr>          <tr><td style="text‐align:center" cols‐pan="2"><html:submit>Rechercher</html:submit></td></tr>       </table>     </html:form>          <html:errors/>          <logic:present name="listePersonnes">     <div class="box">       <h2>Résultats de la recherche</h2>       <table style="width: 100%;">         <tr>           <td>             <strong>Grade</strong>           </td>           <td>             <strong>Nom</strong>           </td>           <td>             <strong>Prénom</strong>           </td>           <td>             <strong>Nia</strong>           </td>         </tr>                  <logic:iterate id="indice_i" name="listePersonnes" proper‐ty="table">           <tr>             <logic:iterate id="indice_j" name="indice_i">               <td>                 <bean:write name="indice_j"/>               </td>             </logic:iterate>           </tr>         </logic:iterate>       </table>     </div>     </logic:present>  Affichage.Infos.Personne.jsp : <%@ page language="java" contentType="text/html; charset=ISO‐8859‐1" pageEncoding="ISO‐

Page 26: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

26 | P a g e   

8859‐1"%> <%@ taglib uri="/WEB‐INF/struts‐html.tld" prefix="html" %> <%@ taglib uri="/WEB‐INF/struts‐bean.tld" prefix="bean" %> <%@ taglib uri="/WEB‐INF/struts‐logic.tld" prefix="logic" %> <%@ page import="assi.struts.eots.recherche.InfosPersonneBean" %>           <div class="box">       <h2>Informations générales sur         <bean:write name="infosPersonne" property="infosPersonne[0]" />         <%          String[] tab = ((InfosPersonne‐Bean)request.getAttribute("infosPersonne")).getInfosPersonne(1).split(" ");         out.print(tab[0]);         %>       </h2>       <img src="http://annuv2.air.defense.gouv.fr/images/anonyme.jpg" style="float:right;height:150px;width:120px;"/>       <div class="sous_bloc">         <h3>Noms</h3>         <div class="forma_ligne">           <span class="titre_ligne">Nom d'usage ::</span>           <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[0]" /></span>         </div>         <div class="forma_ligne">           <span class="titre_ligne">Nom patronymique ::</span>           <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[3]" /></span>         </div>         <div class="forma_ligne">           <span class="titre_ligne">Prénoms ::</span>           <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[1]" /></span>         </div>       </div>       <div class="sous_bloc">         <h3>Identifiants</h3>         <div class="forma_ligne">           <span class="titre_ligne">NIA ::</span>           <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[2]" /></span>         </div>         <div class="forma_ligne">           <span class="titre_ligne">Clé NIA ::</span>           <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[4]" /></span>         </div>         <div class="forma_ligne">           <span class="titre_ligne">NID ::</span>           <span class="valeur_ligne"><bean:write 

Page 27: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

27 | P a g e   

name="infosPersonne" property="infosPersonne[5]" /></span>         </div>         <div class="forma_ligne">           <span class="titre_ligne">Badge ::</span>           <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[6]" /></span>         </div>       </div>       <div class="sous_bloc">         <h3>Contact</h3>         <div class="forma_ligne">           <span class="titre_ligne">Numéro téléphone fixe ::</span>           <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[8]" /></span>         </div>         <div class="forma_ligne">           <span class="titre_ligne">Numéro teléphone portable ::</span>           <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[9]" /></span>         </div>         <div class="forma_ligne">           <span class="titre_ligne">Courriel ::</span>           <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[10]" /></span>         </div>       </div>       <div class="forma_ligne">         <span class="titre_ligne">Date de naissance ::</span>         <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[7]" /></span>       </div>       <div class="forma_ligne">         <span class="titre_ligne">Volantaire OPEX ::</span>         <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[11]" /></span>       </div>       <div class="forma_ligne">         <span class="titre_ligne">Volantaire OPIN ::</span>         <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[12]" /></span>       </div>       <div class="forma_ligne">         <span class="titre_ligne">Volantaire Outre‐Mer ::</span>         <span class="valeur_ligne"><bean:write name="infosPersonne" property="infosPersonne[13]" /></span>       </div>     </div>          <logic:equal name="infosPersonne" property="referer" value="nia">       <html:link page="/retourRechercheNIA.do">Retour à la recherche 

Page 28: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

28 | P a g e   

NIA</html:link>     </logic:equal>     <logic:equal name="infosPersonne" property="referer" value="multi">       <html:link page="/retourRechercheMulticriteres.do">Retour à la recherche multicritères</html:link>     </logic:equal>  Erreurs.Sytemes.jsp : <%@ page language="java" contentType="text/html; charset=ISO‐8859‐1" pageEncoding="ISO‐8859‐1"%> <%@ taglib uri="/WEB‐INF/struts‐html.tld" prefix="html" %>       <p>Les erreurs système suivantes se sont produites :</p>       <html:errors/>       <html:link page="/retourRechercheMulticriteres.do">Retour à la re‐cherche</html:link>  

Les vues de la recherche (Code 4) 

<?xml version="1.0" encoding="iso‐8859‐1" ?>  <!DOCTYPE struts‐config PUBLIC   "‐//Apache Software Foundation//DTD Struts Configuration 1.3//EN"   "http://36.74.12.66:8080/projet/dtds/struts‐config_1_3.dtd">    <struts‐config>    <form‐beans>     <form‐bean name="rechercheMultiForm" type="assi.struts.eots.recherche.RechercheMultiForm">       <form‐property name="nom" type="java.lang.String" />       <form‐property name="prenom" type="java.lang.String" />       <form‐property name="grade" type="java.lang.String" />       <form‐property name="escadron" type="java.lang.String" />       <form‐property name="sexe" type="java.lang.String" />       <form‐property name="situation" type="java.lang.String" />     </form‐bean>   </form‐beans>         <global‐forwards>     <forward name="aller_vers_index_recherches" path="indexRecherches.do" />   </global‐forwards>         <action‐mappings>     <!‐‐ Début des actions pour la recherche multicritères ‐‐>          <action       path="/rechercheMulticriteres"       name="rechercheMultiForm"  

Page 29: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

29 | P a g e   

      validate="false"       scope="session"       type="assi.struts.eots.recherche.RechercheMulticriteresAction">       <forward name="afficherErreursSysteme" path="erreurs.systeme" />       <forward name="afficherInfoUnique" path="infos.personne" />       <forward name="afficherInfosMultiples" path="recherche.multicriteres" />       <forward name="afficherErreursRecherche" path="recherche.multicriteres" />     </action>     <action       path="/retourRechercheMulticriteres"       parameter="recherche.multicriteres"       type="org.apache.struts.actions.ForwardAction" />     <action       path="/accesRechercheMulticriteres"       parameter="recherche.multicriteres"       type="org.apache.struts.actions.ForwardAction" />          <!‐‐ Fin des actions pour la recherche multicritères ‐‐>   </action‐mappings>        <message‐resources parameter="assi.struts.eots.recherche.AppsResources" null="false" />      <plug‐in className="org.apache.struts.tiles.TilesPlugin">     <set‐property property="definitions‐config" value="/WEB‐INF/tiles‐defs.xml" />     <set‐property property="moduleAware" value="true" />     <set‐property property="definitions‐parser‐validate" value="true" />   </plug‐in>   <plug‐in className="org.apache.struts.validator.ValidatorPlugIn">     <set‐property property="pathnames" value="/WEB‐INF/validator‐rules.xml,/WEB‐INF/validator.xml" />   </plug‐in>    </struts‐config>  

Struts‐config.xml (Code 5) 

V. Références  

Apache Software Foundation (http://www.apache.org)  Le framework Struts (http://struts.apache.org)  Site officiel de l'Armée de l'Air ‐ Ministère de la Défense (http://www.defense.gouv.fr/air/)  PostgreSQL, le SGBD Open Source de référence (http://www.postgresqlfr.org)   Subversion : Tigris.org (http://subversion.tigris.org)  Apache Tomcat (http://tomcat.apache.org)  W3C, The World Wide Web Consortium (http://www.w3c.org) 

Page 30: Rapport Stage Armee Air-2007

Rapport de stage – Cyril Mottier 

3INFO – année 2006/2007  

30 | P a g e   

VI. Glossaire  

ASSI : Antenne de Soutien des Systèmes d’Informations  CDC : Centre de Détection et de Contrôle  Cdt : Commandant  Cne : Capitaine  Giproca : Gestion  de l’Instruction PRofessionnelle des Opérateurs et Contrôleurs Aériens (nom donnée à l’application permettant cette gestion) 

JDBC : Java DataBase Connectivity  JSP : Java Server Pages  Lcl : Lieutenant Colonel  Maj : Major  MCD : Modèle Conceptuel de Données  MVC : Modèle – Vue – Contrôleur  OS : Operating System (système d’exploitation)  SGBD : Système de Gestion de Base de Données  Sgt : Sergent  SIGAPAIR : Système d’Information de Gestion et d’Administration du Personnel de l’armée de l’AIR (Nom du réseau des ressources humaines de l’Armée de l’Air) 

W3C : World Wide Web Consortium  WTP : Web Tools Platform