Applications orientées données (NSY135)



Documents pareils
Web Tier : déploiement de servlets

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.

Architecture Orientée Service, JSON et API REST

JavaServer Pages (JSP)

Documentation CAS à destination des éditeurs

Aspects techniques : guide d interfaçage SSO

Programmer en JAVA. par Tama

1. Installation d'un serveur d'application JBoss:

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Groupe Eyrolles, 2005, ISBN :

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

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

Mise en œuvre des serveurs d application

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

Cours 1: Java et les objets

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Programmation Par Objets

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

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

Les architectures 3-tiers Partie I : les applications WEB

Remote Method Invocation Les classes implémentant Serializable

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

10. Base de données et Web. OlivierCuré

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

Corrigé des exercices sur les références

Implementing a simple RMI Application over the Internet (using and comparing HTTP tunneling, RMI Proxy)

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Cours en ligne Développement Java pour le web

Alfstore workflow framework Spécification technique

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

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

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Refonte front-office / back-office - Architecture & Conception -

Application web de gestion de comptes en banques

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Le développement d applications Web

Projet Java EE Approfondi

Applications et Services WEB: Architecture REST

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Projet de programmation (IK3) : TP n 1 Correction

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

Développement Logiciel

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Cloud. Définition? 08/11/2012. James Urquhart The Wisdom of Clouds

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Calcul Parallèle. Cours 5 - JAVA RMI

Traitement de données

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Traitement des données de formulaires. Accès aux BD avec JDBC Servlets - M. Baron - Page

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Bases de données documentaires et distribuées Cours NFE04

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Serveur d'archivage 2007 Installation et utilisation de la BD exist

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

Remote Method Invocation en Java (RMI)

La base de données XML exist. A. Belaïd

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Développement des Systèmes d Information

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Création d objet imbriqué sous PowerShell.

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

4. Groupement d objets

Programmation Web. Madalina Croitoru IUT Montpellier

Environnements de développement (intégrés)

Auto-évaluation Programmation en Java

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Rafraichissement conditionné d'une page en.net

Remote Method Invocation (RMI)

Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures

Le stockage local de données en HTML5

RMI le langage Java XII-1 JMF

Synchro et Threads Java TM

Le développement d applications Web. François Charoy Pascal Molli Pascal Urso

Bases de données documentaires et distribuées Cours NFE04

Serveur d Applications Web : WebObjects

Java DataBaseConnectivity

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Méta-annuaire LDAP-NIS-Active Directory

ACTIVITÉ DE PROGRAMMATION

LOG4430 : Architecture logicielle et conception avancée

TP1 : Initiation à Java et Eclipse

Programmation Objet Java Correction

2009/2010 LICENCE PRO-SIL : PROJET TUTORE

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

Authentification et contrôle d'accès dans les applications web

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Point sur les solutions de développement d apps pour les périphériques mobiles

Modèle à composants. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP TOULOUSE CEDEX 7. Remerciements

Best Practices : Utilisation des APIs de Lotus Web Content Management

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Premiers Pas en Programmation Objet : les Classes et les Objets

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

Transcription:

Applications orientées données (NSY135) 4 Applications Web Dynamiques Auteurs: Raphaël Fournier-S niehotta et Philippe Rigaux (philippe.rigaux@cnam.fr,fournier@cnam.fr) Département d informatique Conservatoire National des Arts & Métiers, Paris, France

Un embryon de MVC 1 / 9 Plan du cours S3 Un embryon de MVC

Un embryon de MVC 2 / 9 Notre implémentation et les principes du MVC Dans la séquence S2, on a respecté les principes : le modèle, sous forme de classes Plain Old Java, est bien indépendant du contexte (une application Web) il se charge de l implantation de la logique "métier"; les classes du modèle pourraient très bien être développées par un programmeur totalement ignorant de la programmation Web; le contrôleur est implanté par des servlets qui font parfaitement l affaire car elles sont justement conçues pour être au centre des échanges HTTP gérés par le serveur; il n y a pas de texte en dur : le contrôleur, c est de la coordination de composants les vues, c est le point le plus délicat car rien dans le langage Java de base ne correspond au besoin d intégrer des éléments dynamiques dans des fragments HTML; nous avons intégré directement les tag libraries les JSP pour obtenir une syntaxe moderne, assez propre, qui n inclut aucune programmation java.

Un embryon de MVC 3 / 9 Lacunes actuelles et améliorations Contrôleurs, actions, sessions un contrôleur se décompose en actions, ce qui donne une structure à notre application MVC chaque contrôleur gère une partie bien définie des fonctionnalités (ex. : gestion des utilisateurs) il est constitué d actions correspondant aux tâches élémentaires, par exemple le formulaire d identification, le formulaire de création d un compte utilisateur, l édition d un compte. Problème : Les servlets ne sont pas nativement équipées pour une décomposition en actions notre contournement avec doget et dopost ne se généralisera pas pour davantage d actions nous n avons pas vu le paramétrage de la requête, de la réponse, et surtout gestion des sessions

Un embryon de MVC 4 / 9 Lacunes actuelles et améliorations Vues nous n avons que des choses élémentaires avec les JSTP (JSP étendues aux tag libraries) nous ne traitons ni les tableaux par exemple, et l on n utilise pas de conditions ( si cette variable vaut plus que 2, j affiche ceci, sinon cela ) on aimerait aussi pouvoir combiner des fragments HTML, par exemple pour utiliser un template pour notre site, que nous appliquerions à chaque contrôleur.

Un embryon de MVC 5 / 9 Lacunes actuelles et améliorations Modèle autre lacune : nous ne savons pas rendre les instances d un modèle persistantes la persistance est la capacité d une information à survivre à l interruption de l application ou à l arrêt de la machine en pratique, la persistance repose sur le stockage sur support non volatil (ie.: pas en mémoire vive) : SSD, disque dur c est la base de données qui se charge de ce stockage ici, notre convertisseur n a pas besoin de persistance car la règle de conversion est immuable. dans la majorité des applications, le recours à une base de données est indispensable c est un des points de conception et de réalisation les plus délicats pour chaque modèle, certains objets doivent être rendus persistants, d autres non pour chacun d entre eux, cela doit être un service, que les contrôleurs actionnent (sans y toucher en détail) les vues ne doivent rien savoir de la persistance

Un embryon de MVC 6 / 9 Framework pour répondre à ces besoins, on utilisera évidemment des frameworks c est une boîte à outil, reposant sur des standards technologiques offrant la possibilité d appliquer des bonnes pratiques dans notre contexte, ils reposeront l environnement JEE il faut donc consacrer un peu de temps à l étude de JEE

Un embryon de MVC Notre framework MVC minimal 7 / 9 Organisation du code nous avons presque toutes les connaissances nécessaires pour étudier comment combiner une application Web et un framework de persistance Quelques règles organiser notre code : Répertoires : deux packages controleurs contiendrait tous les contrôleurs, chacun implanté par une servlet; modeles contiendra toutes les classes du modèle. un répertoire vues dans WebContent, avec un sous-répertoire par contrôleur (du nom du contrôleur, en minuscules) ce répertoire des vues d un contrôleur contiendra au moins une vue, nommée index.jsp, qui présentera le contrôleur et ses actions. Contrôleurs et actions on passera un paramètre HTTP action, en mode GET, au contrôleur, pour déclencher l action correspondante si ce paramètre est absent ou s il ne correspond pas à une action, le contrôleur affichera index.jsp

Un embryon de MVC Notre framework MVC minimal 8 / 9 Exemple de squelette de contrôleur package controleurs; /** * Servlet implementation class Convertisseur */ @WebServlet("/convertisseur") public class Convertisseur extends HttpServlet { private static final String VUES="/vues/convertisseur/", DEFVUE="index.jsp"; protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // On devrait récupérer l'action requise par l'utilisateur String action = request.getparameter("action"); // La vue par défaut String mavue = VUES + DEFVUE; try { if (action == null) { // Rien à faire, la vue est celle par défaut } else if (action.equals("formulaire")) { // Action + vue formulaire de saisie mavue = VUES + "formulaire.jsp"; } else if (action.equals("conversion")) { mavue = VUES + "conversion.jsp"; } else if (action.equals(...)) { // Etc. } } catch (Exception e) { mavue = VUES + "exception.jsp"; request.setattribute("message", e.getmessage()); } // On transmet à la vue RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher(mavue); dispatcher.forward(request, response); } }

Un embryon de MVC Notre framework MVC minimal 9 / 9 Résumé de la séquence les contrôleurs sont les composants qui réagissent aux requêtes HTTP, ils ne contiennent ni code métier, ni aucun élément de présentation; le modèle implante les fonctionnalités métiers; une classe du modèle doit être totalement indépendante d un contexte d exécution (application web ou autre) ou de critères de présentation; les vues se chargent de l affichage, et c est tout. On va les aborder plus en détail dans le chapitre suivant