http://www.sigl.epita.net Struts Struts Romain Couturier Aurélia Fermé Frédéric Lung Tung Matthieu Nicolas 17/06/2002 17/06/2002 ACO slide 1



Documents pareils
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.

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

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

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

Module BD et sites WEB

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

Mise en œuvre des serveurs d application

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

Introduction à la plateforme J2EE

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Compte Rendu d intégration d application

Cours en ligne Développement Java pour le web

Architecture Orientée Service, JSON et API REST

Auto-évaluation Aperçu de l architecture Java EE

Application Web et J2EE

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

Messagerie asynchrone et Services Web

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

JavaServer Pages (JSP)

Formation en Logiciels Libres. Fiche d inscription

2 Chapitre 1 Introduction

Projet Java EE Approfondi

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)

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

- Rapport de stage Étude de solutions pour l intégration de fonctionnalités

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Environnements de Développement

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

Introduction aux «Services Web»

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)

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

7 villa de la citadelle Né le 13 mai Arcueil Nationalité : Française. Développeur Web JEE COMPÉTENCES

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

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Web Tier : déploiement de servlets

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

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

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

TP JAVASCRIPT OMI4 TP5 SRC

Java pour le Web. Cours Java - F. Michel

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Web Application Models

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

Création d une application JEE

Serveur d Applications Web : WebObjects

Les architectures 3-tiers Partie I : les applications WEB

Intranet et les Bases de Données

Nouvelles Plateformes Technologiques

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Datalift. + + Architecture Modularité Déploiements. d j = 09/04/2015 Laurent BIHANIC

CQP Développeur Nouvelles Technologies (DNT)

Catalogue des Formations Techniques

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

J2EE - Introduction. Développement web - Java. Plan du chapitre

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Plan. Department of Informatics

Evaluation Idéopass Cahier d analyse technique

Attaques applicatives

Application web de gestion de comptes en banques

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

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

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

PHP 5.4 Développez un site web dynamique et interactif

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

Formulaire pour envoyer un mail

Alfstore workflow framework Spécification technique

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

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

Le développement d applications Web

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

Programmation Web. Introduction

Applications et Services WEB: Architecture REST

SYSTÈMES D INFORMATIONS

RMI le langage Java XII-1 JMF

Développement des Systèmes d Information

4. SERVICES WEB REST 46

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

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

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Diplôme Universitaire Technologique Spécialité Informatique. Période du stage: 05 Avril Juin 2004

Guide d implémentation Interface avec la plateforme de paiement

Java Naming and Directory Interface

Utilisation de Jakarta Tomcat

Automatisation de l administration système

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Programmation Web. Madalina Croitoru IUT Montpellier

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

JOnAS 5. Serveur d application d

Hébergement de sites Web

Introduction aux concepts d ez Publish

NFP111 Systèmes et Applications Réparties

Les frameworks au coeur des applications web

CAS, la théorie. R. Ferrere, S. Layrisse

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Transcription:

http://www.sigl.epita.net Romain Couturier Aurélia Fermé Frédéric Lung Tung Matthieu Nicolas slide 1

Plan Rappels Servlet JSP JavaBean MVC (1 & 2) Présentation Vue Contrôleur Modèle Exemple d application slide 2

Servlet Rappel(1/8) Programme java permettant d étendre les fonctionnalités d une page Web Application côté serveur Utilisé pour générer du contenu dynamique Chargée dynamiquement Avantages Indépendance issue de la plateforme java Modèle de sécurité issu du serveur Web Support dans la plupart des serveurs Web Exploite toute l'api Java (+ protocoles) slide 3

JSP Rappel(2/8) Séparent la présentation du contenu Les fichiers JSP contiennent: un code pour le traitement du serveur (JSP et Java) un code pour le traitement du client (HTML et Javascript) Avantages génère une page vers le client est portable (Write Once, Run EveryWhere) met en avant l'approche par composants permet la mise en œuvre facile des sites dynamiques Inconvénients difficile à manier en raison du mélange de code codes difficiles à réutiliser documentation difficile Equivalents : ASP, PHP slide 4

JavaBean Rappel(3/8) Environnement d exécution distribué intégrant : Moniteur transactionnel Support de persistance Permettent : le développement des solutions métier Lier des entités autonomes sur une plate forme L architecture EJB réutilise des technologies Java : RMI-IIOP : invocation de méthodes distantes JNDI : accès à un service de nommage JDBC : connexion à des bases de données JTS : gestion des transactions (spec. basées sur CORBA OTS) JMS : communications asynchrones JSP/servlet : clients web slide 5

MVC Rappel(4/8) Origine : SmallTalk-80 Le design pattern MVC permet de séparer la logique métier (Modèle) de l interface utilisateur (Vue) et des flux (Contrôleur) Avantages : Modularité Plusieurs vues possibles pour un même Modèle Réutilisabilité slide 6

MVC Rappel(5/8) MVC divise le système en 3 parties : Modèle Vue Représente les données et les règles d accès et d actualisation de ces données Présente le contenu du modèle, comment les données sont présentées à l utilisateur Contrôleur Fait le lien entre la Vue et le Modèle. Contrôle les flux de l application. Traduit les interactions avec la Vue des actions qui doivent être réalisées slide 7

MVC Rappel(6/8) Modèle Etat de recherche Notification De changement Etat muet Vue Sélection de la vue Action de l utilisateur Contrôleur Invocation de méthode Evènement slide 8

MVC 1 Rappel(7/8) NAVIGATEUR 1 4 JSP 2 JavaBean 3 Serveur d applications Base de données slide 9

MVC 2 Rappel(8/8) Client (navigateur) 1 6 Contrôleur (Servlet) 2 4 Vue (JSP) Modèle (JavaBean) 5 3 Serveur d applications Base de données slide 10

Présentation (1/3) Projet initié en mai 2000 par Craig R. McClanahan Sortie de version 1.0 en juin 2001 Implémentation open source du framework MVC par le groupe Jakarta (jakarta.apache.org) Développement très actif Version stable 1.0.2 slide 11

Présentation (2/3) Les composants MVC avec : La vue : JSP ou page HTML qui renvoie la réponse HTTP Le modèle : des objets Java (JavaBean) Le contrôleur : Servlet qui dispatche toutes les requêtes. Utilise le fichier struts-config.xml pour son initilisation slide 12

Présentation (3/3) Client (navigateur) web.xml Contrôleur (Servlet) Vue (JSP) Tag Libraries struts-config.xml Modèle (JavaBean) Resource Properties Serveur d applications slide 13

Vue (1/3) Séparation des rôles : maquettage IHM à l aide de pages JSP Utilisation des taglibs pour les éléments du formulaire Donne accès aux pages Web du côté serveur Représente les informations du modèle slide 14

Vue (2/3) La librairie de tags struts : -bean fait de la manipulation pure des beans <bean:write name="personne" property="prenom" /> affiche le prénom contenu dans un objet à l aide de la méthode getprenom() -html manipule des formulaires et des éléments de formulaires html pour la création d IHM dynamique <html:form action="/logon"> User name : <html:text property="username" size="16"/> <br> Password : <html:password property="password" size="16"/> <html:submit property="submit" value="submit"/> slide 15

Vue (3/3) La librairie de tags struts : -logic met en place des traitements conditionnels et/ou itératifs : <logic:greaterthan name="utilisateur" property="age" value="17"> Vous êtes majeur </logic:greaterthan> Pour afficher tous les prénoms des enfants d une personne <logic:iterate name="user" property="enfants" id="enfant"> <bean:write name="enfant"/><br> </logic:iterate> -template propose un mécanisme de gestion de modèles de JSP Barre de navigation, zone de copyright slide 16

Contrôleur (1/3) Dirige l utilisateur sur la vue approprié Le mapping est effectué avec ActionServlet http://myhost/authorize.do Le serveur est configuré pour passer les extensions *.do extensions à org.apache.struts.action.actionservlet via un fichier de configuration web.xml Les objets ActionServlet inspectent les URI et essayent de les matcher avec un ActionMapping situé dans le fichier struts-config.xml. L instance appropriée de la classe Action est trouvée et la méthode perform() est appelée L objet Action traite la requête et retourne le contrôle à la vue slide 17

Contrôleur (2/3) Servlet ActionServlet Reçoit toutes les requêtes au travers d un mapping avec le fichier web.xml Lit le fichier struts-config.xml à l initialisation et développe ActionMappings Avec la base de l URI de chaque requête, dispatche le traitement pour la classe Action adéquate slide 18

Contrôleur (3/3) Classe Action Aide à contrôler les flux de l application En accord avec la requête, traite la logique implémentée dans le Modèle Actualise les JavaBeans qui seront utilisés pour développer la prochaine page Dispatche le contrôle pour le composant Vue adéquate Bon endroit pour valider la session de l utilisateur slide 19

Modèle (1/2) Code indépendant des framework JavaBeans enregistre l état du système et implémente les actions qui peuvent être réutilisées sur cet état (logique de négociation) System State Beans Business Logic Beans ActionForm Beans slide 20

Modèle (2/2) ActionForm Beans Enregistre les données d une formule automatiquement Définissent une propriété et les méthodes getxxx() et setxxx() pour chaque élément du formulaire Possède un mécanisme de validation Sont passés à la classe Action slide 21

Exemple d application avec slide 22

Structure du projet joinmvc.jsp : page appelée -config.xml : contient le mapping des actions joinaction.java : classe de traitement appelée joinform.java : classe relative au formulaire welcome.jsp : page résultante slide 23

Exemple JSP simple <%@ page language="java" %> <%@ page import="business.util.validation" %> <%@ page import="business.db.mailinglist" %> <% String error = ""; String email = request.getparameter("email"); // do we have an email address if( email!=null ) { // validate input... if( business.util.validation.isvalidemail(email) ) { // store input... try { business.db.mailinglist.addemail(email); } catch (Exception e) { error = "Error adding email address to system. " + e; } if( error.length()==0 ) { %> // redirect to welcome page... <jsp:forward page="welcome.html"/> <% } } else { // set error message and redisplay page error = email + " is not a valid email address, please try again."; } } else { email = ""; } %> <html> <head> <title>join Mailing List</title> </head> <body> <font color=red><%=error%></font><br> <h3>enter your email to join the group</h3> <form action="join.jsp" name="joinform"> <input name="email" id="email" value=<%=email%>></input> <input type=submit value="submit"> </form> </body> </html> slide 24

par l exemple Tags <form:form action="join.do" focus="email" > <form:text property="email" size="30" maxlength="30"/> <form:submit property="submit" value="submit"/> </form:form> HTML résultant envoyé au navigateur <form name="joinform" method="post" action="join.do;jsessionid=ndj71hjo01"> <input type="text" name="email" maxlength="30" size="30" value=""> <input type="submit" name="submit" value="submit"> </form> <script language="javascript"> <!-- document.joinform.email.focus() // --> </script> slide 25

Fichier JSP revisité <%@ page language="java" %> <%@ taglib uri="/web-inf/struts.tld" prefix="struts" %> <%@ taglib uri="/web-inf/struts-form.tld" prefix="form" %> <html> <head> <title><struts:message key="join.title"/></title> </head> <body bgcolor="white"> <form:errors/> <h3>enter your email to join the group</h3> <form:form action="join.do" focus="email" > <form:text property="email" size="30" maxlength="30"/> <form:submit property="submit" value="submit"/> </form:form> </body> </html> slide 26

Contrôleur struts-config.xml Définition et configuration de l origine des données des forms-beans des termes globaux des mapping d action ActionMapping Evènement respectif de chaque classe d action Path : URI Type : nom de la classe qui met ces actions en œuvre Name : FormBean qui utilise ces Action slide 27

JoinAction Résulte du dispatch des actions Surcharge la méthode perform() Retourne une classe ActionForward qui indique au contrôleur où aller ensuite slide 28

JoinForm Contient toutes les données du formulaire Surcharge la méthode validate() pour la validation du formulaire Contient des setters et des getters slide 29

Pour résumé joinform est utilisé pour contenir les informations du formulaire Si la validation est activée, joinform essaiera de se valider lui-même web.mailinglist.joinaction est la classe utilisée pour traiter les requêtes pour ce mapping Si tout fonctionne, welcome.jsp est appelé S il y a une erreur dans la logique businee, le flux retourne à joinmvc.jsp qui est la page original qui fait la requête slide 30

Conclusion slide 31

Les forces Intégration avec J2EE Open Source Support des taglib Cohabite avec les applications existantes Gestion des erreurs (via ActionError) Maintenance à long terme modulaire slide 32

Les problèmes Connaissances approfondies pour l apprentissage et la maintenance (peu intéressant pour les petits projet) Quelques problèmes d intégration avec les environnements non-tomcat Framework encore jeune slide 33

Dans le futur Java Server Faces Standardisation du modèle MVC Création d un framework GUI standard Promouvoir le modèle de JavaBeans pour «dispatché» les évènements côté client vers le code côté serveur slide 34

Ressource homepage http://jakarta.apache.org/struts/ Sun s Servlet Specification http://java.sun.com/products/servlet/download.html#specs Sun s JSP Specification http://java.sun.com/products/jsp/download.html slide 35

Questions slide 36