Développement Web. Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. 24 janvier 2011



Documents pareils
Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

OpenPaaS Le réseau social d'entreprise

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Alfstore workflow framework Spécification technique

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Once the installation is complete, you can delete the temporary Zip files..

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Application web de gestion de comptes en banques

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Les frameworks au coeur des applications web

Cours en ligne Développement Java pour le web

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

calls.paris-neuroscience.fr Tutoriel pour Candidatures en ligne *** Online Applications Tutorial

Architecture Orientée Service, JSON et API REST

Projet de programmation (IK3) : TP n 1 Correction

WEB page builder and server for SCADA applications usable from a WEB navigator

Configurer la supervision pour une base MS SQL Server Viadéis Services

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

CREATION WEB DYNAMIQUE

Devenez un véritable développeur web en 3 mois!

Tutoriel de formation SurveyMonkey

Paginer les données côté serveur, mettre en cache côté client

Rapport de Mini-Projet en ArcGIS Engine

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

How to Login to Career Page

Java Aspect Components (JAC)

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

les techniques d'extraction, les formulaires et intégration dans un site WEB

Paris Airports - Web API Airports Path finding

Programmation en Java IUT GEII (MC-II1) 1

DOM - Document Object Model

TP JAVASCRIPT OMI4 TP5 SRC

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

Création d une application JEE

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Dans l'article précédent, vous avez appris

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

TP LINUX : LINUX-SAMBA SERVEUR DE FICHIERS POUR UTILISATEURS WINDOWS

Acronymes et abréviations. Acronymes / Abbréviations. Signification

Installer Enterprise Miner 5.1 en SAS environnement Windows

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Programmer en JAVA. par Tama

Cours Bases de données 2ème année IUT

Développement Web - Object Relational Mapping and Hibernate

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Attaques applicatives

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

WDpStats Procédure d installation

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

SYSTÈMES D INFORMATIONS

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Serveur d Applications Web : WebObjects

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

Programmation Web. Madalina Croitoru IUT Montpellier

CQP Développeur Nouvelles Technologies (DNT)

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Chapitre VI- La validation de la composition.

Censio Tutorial Sharepoint Cloud Connector exporter les données d un fichier plat dans Sharepoint Online. Version 1.

Vanilla : Virtual Box

Notes de cours : bases de données distribuées et repliquées

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Trixbox: Asterisk packagé. Unité Réseaux du CNRS

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

Module BD et sites WEB

et Active Directory Ajout, modification et suppression de comptes, extraction d adresses pour les listes de diffusion

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Plateforme PAYZEN. Définition de Web-services

Guide d installation de SugarCRM Open Source version 4.5.1

Formation : WEbMaster

PLUGINS Guide du Développeur STEPHANE FERRARI. P l u X m l 5.4

Héritage presque multiple en Java (1/2)

as Architecture des Systèmes d Information

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Résoudre les problèmes PHP, les meilleures (et les pires) techniques

Content Switch ou routage de niveau HTTP

Open Source Job Scheduler

Accès aux bases de données

BES WEBDEVELOPER ACTIVITÉ RÔLE

INTRODUCTION À PYRAMID Gaël Bearstech. Crédits: Blaise Laflamme

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

LOGICIEL D'ADMINISTRATION POUR E4000 & G4000 MANAGEMENT SOFTWARE FOR E4000 & G4000

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Création d un service web avec NetBeans 5.5 et SJAS 9

Génie Logiciel avec Ada. 4 février 2013

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Transcription:

1 / 56 Développement Web Le modèle MVC Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer 24 janvier 2011

2 / 56 Objectif Objectif du cours Se familiariser avec l architecture MVC comment est organisée l architecture MVC comment peut on l appliquer pour le Web

3 / 56 Plan Plan 1 Le modèle MVC 2 le modèle la vue le contrôleur la persistence

4 / 56 Le modèle MVC Le modèle MVC Le modèle MVC

Le modèle MVC L architecture MVC Du modèle 1 au MVC une plus grande maîtrise du développement web requiert le passage du modèle 1 au modèle MVC Le modèle 1 Tous les traitements sont réalisés dans la même page 5 / 56

6 / 56 Le modèle MVC L architecture MVC Definition (Model View Controller) 1 design pattern (orienté objet) 2 élaboré par Trygve Reenskaug en 1979 au Xerox PARC 3 dédié initialement au langage Smalltalk 4 formalisé par Steve Burbeck 5 repose sur une séparation des concepts (couches) 6 différentes interprétations et implantations

7 / 56 Le modèle MVC Patron de conception Definition (Design Pattern - Wikipedia) un patron de conception est un concept destiné à résoudre les problèmes récurrents suivant le paradigme objet décrivent des solutions standard pour répondre à des problèmes d architecture et de conception des logiciels on encourage les développeurs à les appliquer même si c est parfois contraignant

8 / 56 Le modèle MVC MVC schématique Model Business Logic Controller Application Flow View Presentation Logic

9 / 56 Le modèle MVC La couche modèle Definition (Model) représente le fond (sujet d étude) s intéresse à la représentation des données de la couche métier (business logic), i.e. données spécifiques à l application

10 / 56 Le modèle MVC La couche vue Definition (View) concerne la forme (représentation) elle interagit avec le modèle la vue concerne principalement la représentation des données du modèle à l écran (ou sur tout autre périphérique de sortie) il peut donc exister plusieurs vues

11 / 56 Le modèle MVC La couche contrôleur Definition (Controller) Le contrôleur gère les interactions avec l utilisateur : s occupe de la réécriture des URL détermine quels traitements doivent être réalisés

12 / 56 Le modèle MVC Avantages Avantages de l architecture MVC adaptée aux applications graphiques (non web) séparation des tâches : diminution de la complexité lors de la conception répartition suivant les développeurs maintenance et modification facilitées

13 / 56 Le modèle MVC Inconvénients Inconvénients de l architecture MVC moins bien adaptée aux applications web séparation des tâches : augmentation de la complexité lors de l implantation éventuel cloisonement des développeurs

14 / 56 Le modèle MVC Problèmes liés au MVC pour le web Application Web prendre en compte la persistence des données prendre en compte la distribution des objets (cas des applications distribuées) la couche contrôleur doit-il prendre en compte les traitements?

15 / 56 Le modèle MVC Persistence Definition (Persistence) la couche persistence traite de l échange de l information avec les bases de données. Persistence et MVC certains considèrent qu elle fait partie du modèle il est préférable de l extraire du modèle afin de réaliser de l ORM (Object Relational Mapping) (ex. Hibernate pour Java)

16 / 56 Le modèle MVC Distribution Definition (Distributivité) certaines applications web sont dites distribuées, i.e. les classes du modèle ne sont pas toutes stockées sur la même machine. Distribution et MVC il est pnécessaire de prendre ce facteur en compte lors de la conception et l implantation

Le modèle MVC Contrôleur et traitements Le contrôleur doit-il réaliser les traitements? c est le cas pour les applications standard (non web) on peut ajouter une nouvelle partie à l architecture MVC : Exécution qui se charge de réaliser les traitements l objectif est de simplifier l implantation nouvelle architecture : MPD-V-CE 17 / 56

18 / 56 Le modèle MVC MPD-V-CE schématique Persistence Storage Logic ORM DAO CRUD Controller Execution Model Application Flow repost Process Flow Business Logic View Distributed Presentation Logic Spreading Logic javascript, AJAX

19 / 56 Le modèle MVC L architecture M(PD)-V-C(E) en action

20 / 56

21 / 56 Répertoires Elaboration du système de fichiers Un crée un répertoire par couche de l architecture model view controller persistence

22 / 56 le modèle Le modèle

23 / 56 le modèle Le modèle Model On crée une classe mère CoreObject dont hériteront tous les autres objets. Cette classe a pour but de réaliser les tâches de base : obtention de la valeur d un attribut fixer la valeur d un attribut transformation de format (String, JSON)

24 / 56 le modèle La classe CoreObject prototype Object 1 class CoreObject { 2 // default empty constructor 3 public function construct(); 4 // return attributes names and values 5 private function getproperties(); 6 // return value of a gicen attribute name 7 public function get($attribtuename); 8 // transform into string 9 public function tostring(); 10 // JSON representation 11 public function exportasjson(); 12 }

25 / 56 le modèle Autres classes Autres classes Elles sont construites à la manière des JavaBean : constructeur sans argument on implante les getters et setters

26 / 56 la vue La Vue

27 / 56 la vue La Vue Architecture de la vue la partie mise en forme est composée de plusieurs classes pour le rendu XHTML : Document qui est chargée de la structure de la page XHTML et de la gestion de l authentification des utilisateurs Forms (et les classes dérivées) qui gèrent les formulaires

28 / 56 la vue La classe Document La classe Document La page est décomposée en 4 parties : l entête (header) header logo header menu : accessible à tous le menu contextuel : différent en fonction du niveau d accès de l utilisateur le sujet : relatif à la page le bas de page (footer)

29 / 56 la vue La classe Document La classe Document Elle comporte deux attributs liés à la session pour gérer l authentification des utilisateurs : userid (int) : identifiant de l utilisateur (lorsqu il est connecté) userlevel (int) : le niveau d accès de l utilisateur connecté

30 / 56 la vue La classe Document prototype Page 1 class Document { 2 private $userid; 3 private $userlevel; 4 5 // default constructor : calls htmlheader 6 public function construct($css="",$dojorequire="",$meta=""); 7 // start the <body> part of the page 8 public function begin($level=0); 9 // display the <head> part of the page 10 private function htmlheader($css="",$dojorequire="",$meta=""); 11 // header section 12 protected function header() ; 13 // contextual menu 14 public function menu(); 15 // end <body> and display footer 16 public function end() { 17 // begin a subject section 18 public function beginsection($title); 19 // end a subject section 20 public function endsection(); 21 }

31 / 56 la vue utilisation de la classe Page la classe Page en action 1 session start(); 2 require once( config.php ); 3 require once( view/document.php ); 4 $document=new Document(); 5 if (!$document->begin(0)) die(); 6 $document->beginsection("welcome!"); 7 bla bla bla 8 $document->endsection(); 9 $document->end();

la vue La classe FormField La classe FormField classe de base pour la construction des champs des formulaires dérivée en : FormFieldText, FormFieldEmail, FormFieldPassword FormFieldTextArea FormFieldSelect, FormFieldRadio, FormFieldCheckbox 32 / 56

33 / 56 la vue La classe FormField prototype FormField 1 define( FORM FIELD TEXT,1); 2 define( FORM FIELD PASSWORD,2); 3 define( FORM FIELD TEXTAREA,3); 4 define( FORM FIELD SELECT,4); 5 abstract class FormField { 6 //name of field 7 protected $name; 8 //label that will be displayed 9 protected $label; 10 // type of field (see constants defined above) 11 protected $type; 12 // boolean required, if needs to be filled 13 protected $required; 14 // message to display under the field for information 15 protected $message; 16 // value filled by user 17 protected $value; 18 // constructor 19 function construct($name,$label,$type,$required,$message); 20 /** 21 * check if field is filled or value is chosen 22 * @return null if ok, the field otherwise 23 */ 24 function check(); 25 }

34 / 56 la vue La classe FormFieldText La classe FormFieldText gère les champs de type text dérivée en : FormFieldPassword pour les mots de passe FormFieldEmail pour les emails

35 / 56 la vue La classe FormFieldText prototype FormFieldText 1 class FormFieldText extends FormField { 2 // size of text 3 protected $size; 4 // maxlength 5 protected $maxlength; 6 // constructor 7 function construct($name,$label,$required,$message,$size,$maxlength) { 8 parent:: construct($name,$label,form FIELD TEXT,$required,$message); 9 $this->size=$size; 10 $this->maxlength=$maxlength; 11 } 12 }

36 / 56 la vue La classe FormFieldSelect La classe FormFieldSelect gère les champs de type select dérivée en : FormFieldPassword pour les mots de passe FormFieldEmail pour les emails

37 / 56 la vue La classe FormFieldSelect prototype FormFieldSelect 1 class FormFieldSelect extends FormField { 2 protected $options; 3 function construct($name,$label,$required,$message,$options) { 4 parent:: construct($name,$label,form FIELD SELECT,$required,$message); 5 $this->options=$options; 6 } 7 function get options() { 8 return $this->options; 9 } 10 function get option value($key) { 11 return $this->options[$key]; 12 } 13 function check() { 14 if ($this->required==true) { 15 if (empty($this->value)) return $this; 16 if ($this->value==-32768) return $this; 17 } 18 return null; 19 } 20 }

38 / 56 la vue Utilisation de la classe FormFieldSelect utilisation de FormFieldSelect 1 $options=array(1=>"rouge", 2=>"vert", 3=>"bleu"); 2 $fields=new FormFieldSelect("couleur","",true, 3 "couleur préférée",$options);

39 / 56 la vue La classe FormFieldSet La classe FormFieldSet classe abstraite qui regroupe plusieurs champs corrélés dérivée en : FormFieldSetInputs : pour les champs à saisir FormFieldSetButtons : pour les boutons

40 / 56 la vue La classe FormFieldSet prototype FormFieldSet 1 abstract class FormFieldSet { 2 // array of fields that compose the fieldset 3 protected $fields; 4 // constructor 5 function construct() { 6 $this->fields=array(); 7 } 8 // add new field 9 function add field($field); 10 // generate part of the form 11 function generate(); 12 // set fields values from given array 13 function set($array); 14 // set fields values from $ POST 15 function get fields from post(); 16 // check if all fields of the set are valid 17 // return null if true, or the field if not valid 18 function check(); 19 }

41 / 56 la vue La classe Form La classe Form classe chargée de gérer le formulaire, dont : initialisation des champs vérification que les champs requis sont saisis

la vue La classe Form prototype Form 1 class Form { 2 // name of Form 3 protected $name; 4 // action executed on submit 5 protected $action; 6 // method (POST or GET) 7 protected $method; 8 // array of fieldsets 9 protected $fieldsets; 10 // javascript 11 protected $js; 12 /** constructor 13 * @param $name name of the form 14 * @param $action script called on submit 15 * @param $method post or get 16 * @param $js javascript */ 17 function construct($name,$action,$method="post",$js=""); 18 // add a new fieldset 19 function add fieldset($fieldset); 20 /** generate form 21 * @param $highlight highlight required fields which are not set (true 22 * or false) */ 23 function generate($highlight=false); 24 /** check that all fields are set properly 25 *return null if ok, or the first field that is not set properly */ 26 function check(); 27 } 42 / 56

43 / 56 la vue La vue en UML Form FormFieldSetInputs FormFieldSet FormFieldSetButtons FormFieldSetButtonsSubmitReset FormFieldTextArea FormField FormFieldText FormFieldSelect FormFieldRadio FormFieldEmail Page FormFieldCheckbox FormFieldPassword

44 / 56 le contrôleur Le Contrôleur

le contrôleur Le Contrôleur Architecture du contrôleur Controller classe de base on crée un contrôleur par classe du modèle un ou plusieurs contrôleurs? on pourrait créer un seul contrôleur plusieurs : conception facilitée, réutilisabilité 45 / 56

le contrôleur La classe Controller La classe Controller classe abstraite comportant les attributs suivants : action (string) : action à exécuter destination (string) : page de destination après exécution du traitement repost data (array) : données éventuelles à reposter 46 / 56

47 / 56 le contrôleur La classe Controller prototype Controller 1 abstract class Controller { 2 // action to process 3 protected $action; 4 // php destination page 5 protected $destination; 6 // data to repost (if needed) 7 protected $repost data; 8 // constructor 9 public function construct() { 10 $this->action=""; $this->destination="index.php"; 11 $this->repost data=array(); 12 } 13 // process 14 public function process() { 15 $this->action=$ GET[ control ]; $this->execute(); 16 $url= http://.$ SERVER[ HTTP HOST ]. /pub/richer/bibliotheque/. 17 $this->destination; 18 if (count($this->repost data)==0) header( Location:.$url); 19 else $this->repost($url); 20 } 21 // execute algorithms 22 protected function execute(); 23 // repost data to $this->destination 24 protected function repost($url); 25 26 }

48 / 56 le contrôleur Utilisation de Controller utilisation de Controller <li><a href= controller/uneclasse_controller.php?action=create >ajouter</a></li> <form name= user_login action= controller/uneclasse_controller.php?action=login >

49 / 56 la persistence La Persistence

50 / 56 la persistence La couche Persistance (Persistence layer) Definition (Persistence) chargée de gérer les objets persistants i.e. gère les interactions avec une base de données Technologies associées ORM (Object Relational Mapping) DAO (Data Access Object) CRUD (Create Retrieve Update Delete)

51 / 56 la persistence L ORM Definition (ORM - Object Relational Mapping) technique dédiée à la mise en relation entre les attributs de la classe avec les champs des tables de la base de données

52 / 56 la persistence Le CRUD Definition (CRUD - Create Retrieve Update Delete) Opérations de base à implanter pour gérer l échange d information entre objets et tables de la base de données le CRUD peut être vu comme une interface

53 / 56 la persistence Le DAO Definition (DAO - Data Access Object) implante le CRUD en gérant l accès à la base de données

54 / 56 la persistence La persistance en UML

55 / 56 la persistence La persistance en UML

56 / 56 la persistence Fin Fin