Java EE Approfondi. Cours 1. Cours de 2 e année ingénieur Spécialisation «Génie Informatique»

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.

Projet Java EE Approfondi

Web Tier : déploiement de servlets

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

JavaServer Pages (JSP)

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

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

Cours en ligne Développement Java pour le web

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

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Documentation CAS à destination des éditeurs

Première coupe : Introduction à la plateforme Java EE JAVA JAVA. Introduction à la plateforme Java EE. Introduction à la plateforme Java EE

Les architectures 3-tiers Partie I : les applications WEB

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

Alfstore workflow framework Spécification technique

Architecture Orientée Service, JSON et API REST

Aspects techniques : guide d interfaçage SSO

Une introduction à la technologie EJB (2/3)

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

Compte Rendu d intégration d application

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

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

WebSSO, synchronisation et contrôle des accès via LDAP

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

Le Modèle de Sécurité dans JAVA

Projet de programmation (IK3) : TP n 1 Correction

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

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

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

Création d une application JEE

Programmer en JAVA. par Tama

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

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

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)

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)

Gestion du cache dans les applications ASP.NET

JOnAS 5. Serveur d application d

Proxies,, Caches & CDNs

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

Création d objet imbriqué sous PowerShell.

SYSTÈMES D INFORMATIONS

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

Application Web et J2EE

Programmation en Java IUT GEII (MC-II1) 1

Application de lecture de carte SESAM-Vitale Jeebop

Java pour le Web. Cours Java - F. Michel

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

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

Guide d implémentation Interface avec la plateforme de paiement

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Architectures Web Services RESTful

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

Développement d un réseau social modulaire

Package Java.util Classe générique

4. SERVICES WEB REST 46

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

Construction d'une application MVC distribuée avec Spring Remoting. Partie 1 : HttpInvoker, Hessian, Burlap, RMI

Plateforme Systempay Descriptif de l interface avec la page de paiement

Programmation Par Objets

Utilisation de Jakarta Tomcat

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Introduction aux «Services Web»

Projet Android (LI260) Cours 2

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Tutoriel d installation de Hibernate avec Eclipse

Le développement d applications Web

Jahia CMS ET Portal Version 5.0

Technologies serveur. Benjamin Canou - Christian Queinnec Cours 4 du 10/12/2012. Architecture des Applications Réticulaires

Les frameworks au coeur des applications web

Module : programmation site Web dynamique Naviguer entre les pages via site map

SOAP Concepts Application à Glassfish

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

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

Mysql avec EasyPhp. 1 er mars 2006

RAPPORT DE STAGE GWT PRISE EN MAIN SERVLET - TEST DES DAO TELOSYS PLUGIN ECLIPSE WIZARD DATASET TELOSYS

Bases Java - Eclipse / Netbeans

Mise en œuvre des serveurs d application

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

Messagerie asynchrone et Services Web

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

Groupe Eyrolles, 2005, ISBN :

Formation en Logiciels Libres. Fiche d inscription

MANUEL D INSTALLATION de GEONETWORK sur un serveur LINUX CentOS 4

OpenPaaS Le réseau social d'entreprise

Introduction à la plateforme J2EE

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Industrialisation des développements AJAX - J2EE

Server-side XML. PAS FINI... mais ok pour un début. Originaux. Auteurs et version. Prérequis: Java de base, servlets, GUI et XML

RMI le langage Java XII-1 JMF

Développement Web. Les protocoles

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

Conception Pascal Cauquil. Modifications Fabrice Benedet. Diffusion : IS, formateurs et participants à la formation Bases de données scientifiques

Module BD et sites WEB

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

Applications et Services WEB: Architecture REST

Transcription:

Java EE Approfondi Cours 1 Cours de 2 e année ingénieur Spécialisation «Génie Informatique»

Présentation du cours Pôle GL-I2«Génie logiciel avancé» 20h sur 8 semaines Objectifs Initiation aux frameworks Java EE Semaine 1 : Framework MVC : Struts Semaine 2 : Framework Persistance : Hibernate Etude et apprentissage de nouveaux frameworks Semaine 3-8 : Projet en mini-groupes pendant les créneaux Prérequis Java SE, Java EE (Servlet, JSP, EL/JSTL, MVC), XML, SQL 2

Frameworks MVC Struts 1 ( http://struts.apache.org/1.x/ ) Struts 2 ( http://struts.apache.org/2.x/ ) Stripes( http://www.stripesframework.org ) Spring ( http://www.springsource.org/ ) JavaServer Faces ( http://jcp.org/en/jsr/detail?id=127 ) Tapestry ( http://tapestry.apache.org/ ) Seam ( http://www.seamframework.org/ ) LifeRay ( http://www.liferay.com/ ) JetSpeed ( http://portals.apache.org/jetspeed-2/ ) SiteMesh( http://www.opensymphony.com/sitemesh/ ) 3

Frameworks persistance/xml Hibernate ( https://www.hibernate.org/ ) JAXB( https://jaxb.dev.java.net/ ) ibatis ( http://ibatis.apache.org/ ) TopLink (http://www.oracle.com/technology/ products/ias/toplink/index.html ) Cayenne ( http://cayenne.apache.org/ ) XStream( http://xstream.codehaus.org/ ) 4

Rappel MVC

Ex : AREL V6 liste des promos 6

Ex : AREL V6 liste des promos 7

MVC : étape 1 Le client récupère un formulaire (form.html) pour passer une requête avec paramètres (1, 2, puis 3) Client 1 Conteneur Controller Servlet 3 <html> </html> form.html 2 SelectPromo <html> JSP </html> View Model POJO result.jsp Promo.class 8

Formulaire : form.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html;charset=iso-8859-1"> <title>arel V6.0</title> </head> <body> <h1align="center">arel: L'école virtuelle de l'eisti</ h1> <form method="get" action="http://localhost:8080/mvc/selectpromo"> Sélectionner la promo à afficher: <select name="promo" size="1"> <option>ing1</option> <option>ing2</option> </select><input type="submit" /> </form> </body> </html> 9

MVC : étape 2 1. Le client envoie son formulaire (GET/POST avec paramètres) 2. Le conteneur transmet au servlet correspondant (le controller) GET?promo=ing2 1 doget(rq,rp) 2 Controller Servlet SelectPromo <html> JSP </html> View Model POJO result.jsp Promo.class 10

Controller : SelectPromo.java package arel; import ; public class SelectPromo extends javax.servlet.http.httpservlet implements javax.servlet.servlet{ // protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException{ String promoname = request.getparameter( "promo" ); } } // 11

Configuration : web.xml <?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="webapp_id" version="2.5"> <display-name>mvc</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <servlet> <description></description> <display-name>selectpromo</display-name> <servlet-name>selectpromo</servlet-name> <servlet-class>arel.selectpromo</servlet-class> </servlet> <servlet-mapping> <servlet-name>selectpromo</servlet-name> <url-pattern>/selectpromo</url-pattern> </servlet-mapping> </web-app> 12

MVC : étape3 3. Le servlet controller interroge le model sur «ing2» 4. Le model retourne au controller le résultat correspondant GET?promo=ing2 1 doget(rq,rp) 2 Servlet 3 new Promo(); getpromo("ing2") result:list 4 <html> JSP </html> POJO 13

Model : Promo.java package arel; import ; public class Promo{ public List<String> getpromo(string promo){ List<String> promolist = new ArrayList<String>(); if(promo.equals("ing1")){ promolist.add("donald Duck"); promolist.add("minnie Mouse"); promolist.add("pluto"); // } else if (promo.equals("ing2")){ promolist.add("mickey Mouse"); promolist.add("daisy Duck"); promolist.add("goofy"); // } else{ return null;} } } return promolist; 14

MVC : étape 4 5. Le controller utilise les données du model pour sa réponse 6. Le controller transmet sa réponse à la view (JSP) GET?promo=ing2 1 doget(rq,rp) 2 Servlet 3 new Promo(); getpromo("ing2") setattribute5 ("promo",result) result:list 4 <html> JSP </html> 6 forward(rq,rp) Rq POJO 15

Controller : SelectPromo.java package arel; import ; public class SelectPromo extends javax.servlet.http.httpservlet implements javax.servlet.servlet{ // protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException{ String promoname = request.getparameter("promo"); Promo promo = new Promo(); List<String> result = promo.getpromo(promoname); request.setattribute("promo", result); RequestDispatcher view= request.getrequestdispatcher("result.jsp"); view.forward(request, response); } } 16

MVC : étape5 7. La JSP (view) traite la réponse transmise par le controller 8. La page HTML résultante est reçue par le client GET?promo=ing2 1 8 doget(rq,rp) 2 setattribute5 ("promo",result) Servlet 3 result:list 4 new Promo(); getpromo("ing2") 7 getattribute("promo") <html> JSP </html> 6 forward(rq,rp) Rq POJO 17

View : result.jsp <%@ page import="java.util.*" %> <%@ page language="java" contenttype="text/html; charset=iso-8859-1" pageencoding="iso-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type«content="text/html; charset=iso-8859-1"> <title>result</title> </head> <body> <% List<String> promolist=(list<string>)request.getattribute("promo"); Iteratorit= promolist.iterator(); while(it.hasnext()){ out.print("<br />"+it.next()); } %> </body> </html> 18

Struts http://struts.apache.org/1.3.10/index.html

Une composition de patterns Mise en œuvre d un design pattern pour Java EE : «Front Controller» Un seul servlet pour traiter toutes les requêtes Cf. http://java.sun.com/blueprints/patterns/catalog.html Le Front Controller, appelé ActionServlet, permet de mettre en œuvre le pattern MVC de façon générique 22

Architecture Struts 1. Envoi d une requête http:///myaction.do struts-config.xml 2. Traitement de l action«myaction» <xml> <mapping> </mapping> </xml> Form Bean MyForm.java 3. Récupère et traite les paramètres 6. Envoi de la réponse au client Action Servlet 5. Expédie le résultat à la vue 4. Invoque le traitement du modèle Action object MyAction.java <html> JSP </html> POJO MyPojo.java 23

Configuration : web.xml <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE web-app PUBLIC > <web-app> <display-name>struts Blank Application</display-name> <!-- Standard Action Servlet Configuration --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.actionservlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/web-inf/struts-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Standard Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern> *.do </url-pattern> </servlet-mapping> </web-app> 24

Étapes 1 & 2 struts-config.xml <xml> <mapping> </mapping> </xml> SelectPromoForm.java Form Bean GET SelectPromo.do?promo=ing2 1 doget(rq,rp) 2 <html> JSP </html> Action Servlet POJO Action object SelectPromoAction.java Promo.java 25

Configuration : struts-config.xml <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE struts-config PUBLIC struts-config_1_3.dtd"> <struts-config> <!-- Form Bean Definitions --> <form-beans> <form-bean name="selectpromoform" type="arel.selectpromoform" /> </form-beans> <!-- Action Mapping Definitions --> <action-mappings> <action path="/selectpromo" type="arel.selectpromoaction" name="selectpromoform" scope="request" validate="true" input="/form.jsp"> < forward name="show_results" path="/pages/result.jsp" /> </action> </action-mappings> <!-- Other Definitions --> </struts-config> 26

Étape 3 GET SelectPromo.do?promo=ing2 1 struts-config.xml doget(rq,rp) 2 <html> JSP </html> <xml> <mapping> </mapping> </xml> 3.a Action Servlet Auto set() + validate() 3.b SelectPromoForm.java Form Bean POJO Promo.java Action object SelectPromoAction.java 27

Form bean : SelectPromoForm.java package arel; import ; public class SelectPromoForm extends ActionForm{ private String promoname; public void setpromoname(string pn) {promoname=pn;} public String getpromoname (){ return promoname;} private static final String VALID_PROMOS = "ing1,ing2"; } public ActionErrors validate (ActionMapping mapping, HttpServletRequest request){ ActionErrors errors = new ActionErrors(); if(valid_promos.indexof(promoname) == -1){ errors.add("promo", new ActionMessage("error.promoField.notValid")); } return errors; } 28

Formulaire : form.jsp <%@ page language="java" contenttype="text/html; charset=iso-8859-1" pageencoding="iso-8859-1"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <title>arelv6.0</title> </head> <body> <h1 align="center">arel:l'école virtuelle de l'eisti</h1> <html:errors/> <form method="get" action="selectpromo.do">sélectionner la promo à afficher:<select name="promoname" size="1"> <option>ing1</option> <option>ing2</option> </select><input type="submit"/></form> </body> </html> 29

Étape 4 GET SelectPromo.do?promo=ing2 1 struts-config.xml doget(rq,rp) 2 <html> JSP </html> <xml> <mapping> </mapping> </xml> Auto set() 3.a + validate() 4.a 3.b 5.a Action Servlet Form Bean 4.b execute() 4.d setattribute("promo") return ActionMapping SelectPromoForm.java POJO getpromoname() Action object 4.c getpromo() SelectPromoAction.java Promo.java 30

package arel; import ; Action object: SelectPromoAction.java public class SelectPromoAction extends Action{ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ } SelectPromoForm myform=(selectpromoform)form; Promo promo = new Promo(); List<String> result=promo.getpromo( myform.getpromoname() ); request.setattribute("promo", result); return mapping.findforward("show_results"); } 31

Étapes 5 & 6 GET SelectPromo.do?promo=ing2 1 6 5.c getattribute("promo") struts-config.xml doget(rq,rp) 2 <html> JSP </html> <xml> <mapping> </mapping> </xml> Auto set() 3.a + validate() 4.a 3.b 5.a 5.b Action Servlet Form Bean 4.b execute() 4.d setattribute("promo") return ActionMapping SelectPromoForm.java POJO Promo.java getpromoname() Action object 4.c getpromo() 32 SelectPromoAction.java

Notion supplémentaire Les fichiers properties

Localisation : les fichiers properties Struts supporte nativement le mécanisme d'internationalisation et de localisation offert par la plateforme Java : Le ResourceBundle et la Locale. Un fichier.properties permet de stocker des informations sous la forme Parametre = Valeur Avec Struts, ils sont chargés automatiquement en fonction de la langue préférée définie dans le browser (elles sont définies par ordre de préférence => cf. Mozilla ou IE). Si cette locale (le fichier.properties associé à cette langue) n est pas présente, c est la suivante (dans l ordre des préférences ) qui est choisie, etc Si aucune n est présente, on utilise le fichier.properties par défaut. Exemple : MessageResources.properties (fichier par défaut) error.promofield.notvalid=invalid promo entered. MessageResources_fr.properties (fichier pour la locale _fr) error.promofield.notvalid=la promo entrée est invalide. 20

Localisation : les fichiers properties Il en sera de même pour toutes les langues et vous aurez autant de fichiers.properties que de langues que vous supporterez. Il vous faudra ensuite déclarer ces ressources dans le descripteur de configuration de votre application (struts-config.xml) : <message-resources parameter="messageresources" /> Pour l utiliser dans une JSP : <bean:message key="error.promofield.notvalid"/> 20