Les architectures à composants. Jean-Marc Farinone



Documents pareils
TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

JavaServer Pages (JSP)

Web Tier : déploiement de servlets

Utilisation de Jakarta Tomcat

Java pour le Web. Cours Java - F. Michel

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.

Java ME : une présentation. Jean-Marc Farinone

Application Web et J2EE

Les architectures 3-tiers Partie I : les applications WEB

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

Machine virtuelle Java pour Palm TX

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

TP architecture N-tiers en Java EE ou Java EE, Android : la synthèse. Le serveur GereCompteBancaireServlet

Environnements de Développement

Projet Java EE Approfondi

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

Mise en œuvre des serveurs d application

Groupe Eyrolles, 2005, ISBN :

RMI le langage Java XII-1 JMF

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

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

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

A. Architecture du serveur Tomcat 6

Application web de gestion de comptes en banques

Manuel d installation de l application Dimona New via SMS

contact@nqicorp.com - Web :

CQP Développeur Nouvelles Technologies (DNT)

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

2 Chapitre 1 Introduction

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)

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

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

Compte Rendu d intégration d application

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Formation en Logiciels Libres. Fiche d inscription

Architecture Orientée Service, JSON et API REST

Module BD et sites WEB

JOnAS 5. Serveur d application d

JOnAS Day 5.1. Outils de développements

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

contact@nqicorp.com - Web :

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Encadré par : Michel SIMATIC

Application de lecture de carte SESAM-Vitale Jeebop

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

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

Initiation à JAVA et à la programmation objet.

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

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Hébergement de sites Web

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Introduction à la plateforme J2EE

Applications distribuées: le retour du client "riche"

Java DataBaseConnectivity

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Installation et prise en main

Catalogue des Formations Techniques

Architecture distribuée

TD/TP 1 Introduction au SDK d Android

TP1 : Initiation à Java et Eclipse

Le développement d applications Web

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

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

Vulgarisation Java EE Java EE, c est quoi?

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

Java Naming and Directory Interface

COURS 5 Mettre son site en ligne! Exporter son site avec WordPress Duplicator Installer un logiciel FTP Faire le suivi des visites de son site avec

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Programmation Internet Cours 4

Assistance à distance sous Windows

Création d une application JEE

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

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

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Programmation Internet en Java

Nouvelles Plateformes Technologiques

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)

SITE WEB E-COMMERCE ET VENTE A DISTANCE

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

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

Documentation CAS à destination des éditeurs

Bases Java - Eclipse / Netbeans

Les tableaux de bord de pilotage de nouvelle génération. Copyright PRELYTIS

MMSCam. Travail de diplôme Pilotage à distance d un téléphone MMS. Département d électricité et d informatique. Auteur : Jeanmonod David

Remote Method Invocation (RMI)

Cours en ligne Développement Java pour le web

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

Joomla! Création et administration d'un site web - Version numérique

FileMaker Server 14. Guide de démarrage

Quick Start Installation de MDweb version 2.3

Présentations personnelles. filière IL

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

Urbanisation des SI Conduite du changement IT 20/03/09. Patrick CHAMBET

Standard. Manuel d installation

Transcription:

Les architectures à composants Jean-Marc Farinone 1

Années 80 : Les architectures réparties : Du client-serveur aux N-tiers un programme demandeur : le client, un programme qui reçoit la requête et y répond : le serveur. Mais, le serveur (ou le client) devient trop gros voire parfois, ne remplit plus sa fonction initiale mais d'autres fonction beaucoup plus lourde. Exemples : serveur web qui interroge par CGI des BD (années 93 ), client trop lourd qui traite le format d'affichage des résultats D'où architecture 3 tiers (client, niveau intermédiaire, le système d'information de l'entreprise = SIE) Puis architecture N-tiers 2

Mais Dans une architecture simple client-serveur, c'est à l'application à gérer des problèmes comme : la confidentialité, l'intégrité des données, l'authentification des entités bref la sécurité les accès concurrents à des données communes les transactions... Alors que ces problèmes sont connus et bien résolus depuis longtemps (moteurs transactionnels, transferts cryptés, ) 3

Les technologies de composants Construire des entités qui répondent à certaines (petites?!) contraintes qui vont leur permettre : de bien s'intégrer à un environnement d'exécution de bien s'intégrer avec d'autres entités de même "type" environnement d'exécution = ce qui permet de traiter (exécuter?) ces entités + tout ce que l'environnement peut amener de services connus (gestion des mises à jour, un contexte commun à toutes ces entités, transaction, sécurité, ) entités = composants (souvent des instances ou des classes ou...) environnement d'exécution = conteneurs Exemple de conteneurs : conteneur web (pour servlets, JSP) conteneur EJB (EJB) conteneur de programmes pour téléphones portables (MIDlet de Java ME) 4

Comment utiliser tous ces outils? Des règles de bons fonctionnements (bonnes écritures, bonnes utilisations,...) ont été érigées Ce sont des «règles de conception» ou design pattern Design pattern = une solution à un problème (connu et récurrent) dans un certain contexte Cf. Gof Book Design Pattern Erich Gamma et al. Premières règles Si l interaction est simple (questions réponses) et nécessite pas d architecture sécurisée importante (cryptage, transaction, ) utiliser seulement servlet + JSP Si l interaction est intrinsèquement complexe et nécessite obligatoirement un service d authentification, de confidentialité, transactionel, utiliser les EJB (avec éventuellement servlet et JSP) 5

INTRODUCTION AUX ARCHITECTURES N-TIER Les différentes couches d une architecture 4-tier :

Les composants d'après Fabrice Objectif des composants : avoir des briques de bases réutilisables. Définition d un composant : module logiciel, exporte différents attributs, propriétés et méthodes, est prévu pour être configuré, est prévu pour être installé, fournit un mécanisme lui permettant de s auto-décrire. Composant = objet + configurateur + installateur.

Un peu de technique Architecture d une application Java EE : 3 couches : Les composants. Les modules regroupant les composants Les applications regroupant les modules Les modules et les applications correspondent physiquement à des fichiers d'archives : archive EJB JAR (.jar) pour un module EJB, archive WAR pour un module web, archive EAR pour une application.

Le sujet de cet exposé

Les composants de cet exposé On va faire des composants coté client MIDlet et coté serveur (application web) Puis architecture d'une application web avec ses composants : servlets et JSP Arborescence d'une appli web et son web.xml Architecture MVC d'une application web Connexion entre un téléphone portable et un serveur (application web) 10

Le monde des mobiles Jean-Marc Farinone 11

Les téléphones mobiles au 26.11.11 Il y a plusieurs "mondes", quasiincompatibles entre eux : l'iphone (Objective C, environnement Apple,...) Android de Google (Java, notions et type de programmation différente de Java ME) Symbian Windows CE Et Java ME avec ses sous catégories : MIDP DoCoMo Et cela ne se simplifie pas au fil des ans! 12

Java ME : une présentation Jean-Marc Farinone 13

But de cette partie Comprendre, définir, situer les termes : Java ME, J2ME, CDC, CLDC, Configuration, Profiles, MIDP (1.0, 2.0), MIDlet, etc. Donner des références Donner des exemples de programmes 14

Les concepts fondamentaux de Java ME 15

Java ME =? Java ME = Java Micro Edition Site de référence = http://java.sun.com/javame/index.jsp S'appelait anciennement J2ME : terme encore très souvent employé. Famille de spécifications pour développer des logiciels pour des objets électroniques (device = périphérique) comme : les téléphones portables, les assistants personnels (PDA) «téléphones intelligents» (smart phones) 16

Java ME = Configuration et Profiles Le monde des périphériques électroniques est vaste, divers et varié. => Pas de possibilités d'avoir un seul environnement uniforme pour tous (!= Java SE) => Architecture en couche : Bibliothèques de base : les configurations Les ajouts à ces bibliothèques : les profiles 17

Configuration = Spécifications pour un ensemble de périphériques ayant des caractéristiques similaires comme : Le type et la quantité mémoire disponible Le type de processeur (vitesse, etc.) Le type de réseau disponible pour ce périphérique Configuration = plate-forme minimale pour cet ensemble. Pas d extension ni de retrait possible => portabilité 18

Les deux configurations fondamentales CLDC (Connected Limited Device Configuration), CDC (Connected Device Configuration) CLDC ~ wireless Java. Pour téléphone cellulaire, PDA ayant 192 Ko de mémoire minimum (CLDC 1.1) pour la JVM Téléchargement de programmes Java 2 versions 1.0 (JSR-30 Mai 2000), 1.1 (JSR-139 Mars 2003) 19

Les deux configurations fondamentales (suite) CDC = entre CLDC et Java SE Périphériques ayant 2Mo ou plus de mémoire : smart phone, web téléphone, boitier TV (set-top boxes). 20

Profile = un complément à une configuration. Apporte des classes supplémentaires pour un domaine ou un marché spécifique Les profiles au dessus de CLDC : MIDP (Mobile Information Device Profile) PDA Profile Les profiles au dessus de CDC : Foundation Profile RMI Profile 21

Configuration et Profile : conclusion RMI Profile MIDP PDA Profile Foundation Profile CLDC CDC 22

MIDP = Mobile Information Device Profile Amène : la partie réseau ( + HTTP 1.1) des composants d'ihm le stockage local 23

MIDP 24

Introduction Pas d'apis d'interaction utilisateur, de stockage, de réseau, dans CLDC d'où MIDP applications MIDP = MIDlets réseau par HTTP 1.1 au moins (pas forcément TCP/IP) 25

MIDlet Dérive de la classe abstraite javax.microedition.midlet.midlet Doit avoir un constructeur par défaut (éventuellement donné par le compilateur) La MIDlet minimale : // pour la classe abstraite MIDlet import javax.microedition.midlet.*; public class TrameJMFMIDlet extends MIDlet { // les 3 méthodes abstraites de MIDlet } public void destroyapp(boolean condition) throws MIDletStateChangeException {} public void pauseapp() { } public void startapp() throws MIDletStateChangeException {} public TrameJMFMIDlet(){ } 26

Développer une MIDlet Installer Java SE. Charger gratuitement l'environnement "Wireless toolkit" à partir de http://java.sun.com/products/j2mewtoolkit/index.html Eventuellement être inscrit au Download Center. 27

Développer une MIDlet (suite) Lancer la Ktoolbar (soit par windows soit par des commandes en ligne) Créer un projet (New Project). Donner un nom de projet, le nom de la classe MIDlet (ici PremiereJMFMIDlet, cf. diapo suivante) Cliquer "Create Project". => 1 ) Les infos du.jad sont affichées. 2 ) un répertoire du nom du projet a été créé sous l'environnement wireless toolkit. On placera sources, ressources, etc. dans ce répertoire. Début de la demo 28

Développer une MIDlet (suite) Code de la MIDlet à sauvegarder dans src import javax.microedition.midlet.*; // pour CommandListener import javax.microedition.lcdui.*; public class PremiereJMFMIDlet extends MIDlet implements CommandListener { // les 3 méthodes abstraites de MIDlet } public void destroyapp(boolean condition){} public void pauseapp(){} public void startapp(){ Display.getDisplay(this).setCurrent(mMainForm); } // La methode de l'interface CommandListener public void commandaction(command c, Displayable d) {} public PremiereJMFMIDlet() { mmainform = new Form("Ma Premiere MIDlet JMF"); mmainform.append(new StringItem(null, "Bonjour à tous")); mmainform.addcommand(new Command("Exit", Command.EXIT, 0)); mmainform.setcommandlistener(this); } private Form mmainform; 29

Développer une MIDlet (fin) Cliquez Build. L'environnement a : Créer les répertoires classes, tmpclasses. Compiler les sources Java, résultat dans tmpclasses Prévérifier ces.class et mis dans classes Construit les.jar et ajuste le.jad 30

Exécuter la MIDlet Cliquer "Run" Changer de périphérique par Device (QwertyDevice) Une demo : OK! Plus de code... au chapitre suivant (programmation réseau avec MIDP) 31

Programmation réseau pour Java ME (CLDC, MIDP) Jean-Marc Farinone 32

Présentation Java SE contient des classes pour les protocoles TCP, UDP, IP (java.net) et aussi RMI, CORBA, JINI, etc. En Java ME, CLDC/MIDP 1.0, on ne peut avoir tout cela. La programmation réseau de CLDC est gérée par le Generic Connection Framework (GCF) GCF utilise le package javax.microedition.io 33

Classes, interfaces, exceptions de javax.microedition.io source J2ME in a nutshell (Kim Topley, ed O'Reilly) Donc finalement essentiellement des interfaces! 34

Les protocoles de communication pour mobiles Les mobiles (en fait les fournisseurs de réseau pour mobiles) ne fournissent pas toujours de connexion socket ou TCP (les émulateurs si ;-)) Mais cela peut exister sur les PDA en payant (très?) cher Ce qui est supporté est l'accès HTTP. 35

Le protocole HTTP Le seul protocole réellement supporté dans MIDP Car en général, les mobiles n'ont pas de communication directe à "l'internet (TCP)" rappel : HTTP est un protocole requête réponse Il suffit d'indiquer l'url et chaque getxxx() récupère immédiatement la réponse. 36

Plan pour une communication socket 1 ) Obtenir une connexion 2 ) Récupérer les canaux d'écriture et de lecture sur cette connexion 3 ) Envoyer une requête, récupérer et traiter la réponse 4 ) Fermer la connexion Remarque : ce plan fonctionne si c'est le mobile qui est initiateur de la connexion 37

1 ) Obtenir une connexion StreamConnection socket; try { String server =... String port =... String name = "socket://" + server + ":" + port; socket = (StreamConnection)Connector.open(name, Connector.READ_WRITE); } catch (Exception ex) {... } 2 ) Récupérer les canneaux d'écriture et de lecture sur cette connexion OutputStream os = null; InputStream is = null; os = socket.openoutputstream(); is = socket.openinputstream(); 38

3 ) Envoyer une requête, récupérer et traiter la réponse String request = "GET /index.html HTTP/1.0\n\n"; os.write(request.getbytes());... // On lit au plus 128 octets final int MAX_LENGTH = 128; byte[] buf = new byte[max_length]; int total = 0; while (total < MAX_LENGTH) { int count = is.read(buf, total, MAX_LENGTH - total); if (count < 0) { break; } total += count; } String reply = new String(buf, 0, total); 39

4 ) Fermer la connexion et demo os.close(); is.close(); socket.close(); source J2ME in a Nutshell, Kim Topley demo Socket dans le WTK, projet Chapter 6, MIDlet socket. Le vérifier : en lançant tomcat localement en se connectant dans la MIDlet socket sur le serveur localhost port 8080, en le vérifiant par telnet localhost 8080 et lancée de la requête GET /index.html HTTP/1.0\n\n 40

Programmation pour le protocole HTTP HttpConnection hc = null; InputStream in = null; String url = "http://localhost:8080/midp/hits"; try { hc = (HttpConnection)Connector.open(url); in = hc.openinputstream(); int contentlength = (int)hc.getlength(); byte[] raw = new byte[contentlength]; int length = in.read(raw); in.close(); hc.close(); // traite la réponse String s = new String(raw, 0, length);... } catch (IOException ioe) {... } 41

Programmation réseau et multithreading De manière classique, le code de la partie réseau est (doit être!) mis dans une thread à part (sinon toute cette partie peut bloquer la MIDlet ou son IHM). On a plutôt un code comme : public void commandaction(command c, Displayable d) {... if (c == cmdtransaction) { Thread t = new Thread(this); t.start(); Display.getDisplay(this).setCurrent(connectForm); } public void run() { envoirequete(); } public void envoirequete() {... } 42

Bibliographie Java development on PDAs. Daryl Wilding-McBride ; éditions Addison-Wesley J2ME in a nutshell. Kim Topley ; éditions O Reilly J2ME Wireless Toolkit 2.1 Download à http://java.sun.com/products/j2mewtoolkit/download-2_1.html J2ME, applications pour terminaux mobiles. Bruno Delb ; éditions Eyrolles Excellent tutorial des divers APIs de MIDP 2.0 à http://developers.sun.com/mobility/lear n/midp/midp20/ 43

Et le coté serveur? Une application web (servlets, JSP, HTML, etc.) Donc supposé connu pour cette UE SMB111 du CNAM! 44

Déploiement d'application web Jean-Marc Farinone 45

application web =? Les servlets sont une des techniques utilisées pour construire des applications web. "A web application is a dynamic extension of a web or application server. There are two types of web applications: Presentation-oriented: A presentation-oriented web application generates interactive web pages containing various types of markup language (HTML, XML, and so on) and dynamic content in response to requests. Service-oriented: A service-oriented web application implements the endpoint of a web service." [http://java.sun.com/javaee/5/do cs/tutorial/doc/bnadr.html] JMF 46

application web =? Euh en français : "Une application web est une extension dynamique d'un serveur web ou applicatif. Il y a deux types d'applications web : les application web orientées présentation qui génèrent des pages web (HTML, XML) dynamiquement les applications web orientées service : ce sont les web services [http://java.sun.com/javaee/5/do cs/tutorial/doc/bnadr.html] JMF 47

servlet =? Une servlet est un programme (plug-in) à ajouter à un serveur (quel qu'il soit). Ce cours a trait à la programmation Java coté serveur (Java EE) Pour l'instant les serveurs acceptant des servlets sont plutôt des serveurs Web. Contre-exemple : une servlet pour un serveur de mail qui détruit les mails contenant des virus. JMF 48

Rappel : une servlet import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MaPremiereServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // Etape 1. Spécifier le type MIME du contenu de la réponse response.setcontenttype("text/html"); // Etape 2. Récupère le PrintWriter pour envoyer des données au client PrintWriter out = response.getwriter(); } // Step 3. Envoyer l information au client out.println("<html>"); out.println("<head><title>bonjour Servlet</title></head>"); out.println("<body>"); out.println("<h1> Bonjour à tous </h1>"); out.println("il est : " + new java.util.date()); out.println("</body></html>"); } public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { doget(request, response); } 49

Moteurs de servlets (et de JSP) Pour exécuter des servlets (resp. des JSP), il faut un moteur de servlets (resp. de JSP) dans le serveur Web. Ces moteurs sont des plug-in pour des serveurs Web existants Souvent des serveurs Web eux mêmes Un bon candidat plug-in : tomcat (http://tomcat.apache.org/) JMF 50

Serveurs Web et servlets Il existe des serveurs Web qui traitent les servlets (et JSP) : IBM WebSphere BEA WebLogic Server 10 JBoss Voir à java.sun.com/products/servlet JMF 51

Tomcat Développé par la communauté qui implémente les spécifications des servlets et JSP. Téléchargeable (en version d'utilisation élémentaire) gratuitement à http://tomcat.apache.org/download-60.cgi Plug-in de Apache, Microsoft IIS, Est aussi un mini-serveur Web. "Apache Tomcat 6.x is the current focus of development. It implements the Servlet 2.5 and JSP 2.1 specifications." JMF 52

Démonstration On lance le serveur Web La servlet compilée est rangée sous REP_INSTAL_TOMCAT\webapps\examples\WEB- INF\classes correspond à l'url : http://localhost: 8080/examples/servlet/MaPremiereServlet Euh + bidouilles dans le fichier REP_INSTAL_TOMCAT\webapps\exam ples\web-inf\web.xml JMF 53

Rappel : architecture d'une application web Une application web doit avoir la structure suivante : RACINE_DE_L_APPLI_WEB WEB-INF web.xml classes lib *.html, *.jsp On peut mettre tout cela dans un fichier compressé : un.war 54

Un exemple de web.xml <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>servlet d'accueil</display-name> <description>la toute première servlet d'accueil du site</description> <servlet> <servlet-name>unnomquelconque</servlet-name> <servlet-class>exoservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>unnomquelconque</servlet-name> <url-pattern>/exoservlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>debut.html</welcome-file> </welcome-file-list> </web-app> 55

Compilation des servlets On compile les servlets par : javac -d../classes ExoServlet.java Mais il faut avoir les classes servlets (HttpServlet,...) donc positionner avant : set CLASSPATH=%TOMCAT_HOME%\lib\servletapi.jar;%CLASSPATH% Se faire un script! 56

Déploiement des servlets (1/3) C'est un peu plus complexe que les pages JSP et HTML car il faut les placer sous WEB-INF/classes D'abord construire le web.xml (qui sera dans WEB-INF) : Voir celui distribué <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>appli Web Certificat CNAM</display-name> <description>description de votre application web</description> <servlet> <servlet-name>unnomquelconque</servlet-name> <servlet-class>unnomdeclasseservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>unnomquelconque</servlet-name> <url-pattern>/unearborescencepourlurl</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>debut.html</welcome-file> </welcome-file-list> </web-app> 57

Déploiement des servlets (2/3) Ce qui est important pour la servlet sont les lignes : <servlet> <servlet-name>unnomquelconque</servlet-name> <servlet-class>unnomdeclasseservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>unnomquelconque</servlet-name> <url-pattern>/unearborescencepourlurl</url-pattern> </servlet-mapping> 58

Déploiement des servlets (3/3) Il ne reste plus qu'à construire le.war par exemple par jar cvf exo1.war *.html WEB-INF\classes\*.class WEB-INF\lib WEB-INF\web.xml Puis à déployer ce.war par "Tomcat Manager" 59

Déployer l'application web avec Tomcat Manager (1/2) Il faut construire un.war par jar cvf NOTRE_SITE.war repetressources Se connecter sur http://localhost:8080/ et cliquer sur le lien "Tomcat Manager". 60

Déployer l'application web avec Tomcat Manager (2/2) Dans la page "Gestionnaire d'applications WEB Tomcat" obtenue, "descendre" jusqu'à "WAR file to deploy", puis suivre les indications (Parcourir puis Deploy) pour déployer le.war. Si le fichier déployé a pour nom NOTRE_SITE.war, on accède à ce site par des URL commençant par http://localhost:8080/notre_site 61

JavaServer Pages (JSP) JMF 62

Notre première JSP fichier MaDate.jsp <html><head><title>obtenu par une JSP</title></head> <body> <h3>bonjour de ma part </h3> <hr> La date courante est : <%= new java.util.date() %> </body> </html> Traité quand le client demande l URL de la JSP : http://serveurweb:<port>/.../madate.jsp JMF 63

Comment ça marche? Concrêtement : toute la page JSP est convertie en une servlet cette servlet est traitée par le moteur Java intégré au serveur Web (technologie des servlets) et retourne la page HTML construite JMF 64

JSP vs. Servlets Servlet = du code Java contenant de l'html JSP = une page HTML contenant du code Java Concrètement avec les JSP : les parties statiques de la page HTML sont écrites en HTML les parties dynamiques de la page HTML sont écrites en Java JMF 65

Exécution de JSP Il faut mettre les pages JSP dans un endroit particulier du serveur Web Cet endroit dépend du serveur Web et de sa configuration Pour tomcat en configuration standard, http://localhost: 8080/examples/jsp/MaDate.jsp ~ REP_INSTAL_TOMCAT\webapps\examples\jsp\ MaDate.jsp pour tomcat 6.0 Et sans bidouille!! JMF 66

Exécution de JSP (suite) Une démo: Le résultat de MaDate.jsp est : Une autre exécution donne une autre date => dynamicité JMF 67

Que s'est il passé? Le moteur de JSP a construit une servlet (MaDate_jsp.java sous l'arborescence work pour Tomcat 6.0) Cette phase est parfois appelée la traduction de la JSP (en servlet) Puis a compilé et exécuté la servlet JMF 68

La servlet construite package org.apache.jsp;... public class MaData_jsp extends HttpJspBase {... public void _jspservice(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException {... pagecontext = _jspxfactory.getpagecontext(...); session = pagecontext.getsession(); out = pagecontext.getout(); // HTML // begin [file="c:\\...\\examples\\jsp\\madate.jsp";from=(0,0);to=(4,24)] out.write("<html><head><title>obtenu par une JSP</title></head>\r\n <body>\r\n\r\n<h3>bonjour de ma part</h3> <hr>\r\n La date courante est : "); // end //begin [file="c:\\...\\examples\\jsp\\madate.jsp";from=(4,27)to=(4,49)] out.print( new java.util.date() ); // end // HTML // begin [file="c:\\...\\examples\\jsp\\date.jsp";from=(4,51);to=(6,7)] out.write("\r\n</body>\r\n</html>"); // end... } } JMF 69

Algorithme d'exécution de la JSP Requête client Conteneur de JSP La servlet associée à la JSP demandée est-elle chargée en mémoire du moteur de servlets? Non Oui Oui servlet à jour précompilée disponible? Non Traduire en servlet et compiler Oui Le fichier JSP a- t-il été modifié depuis la dernière traduction en servlet? Charger la servlet Non Réponse au client Exécuter la servlet JMF 70

3 parties d'une JSP scriptlets <% %> déclarations <%! %> expressions <%= %> JMF 71

En fait, servlet vs. JSP? A priori deux outils pour répondre aux mêmes besoins D ailleurs on pourrait tout faire avec, pour chaque interaction une seule JSP à consulter : le modèle 1 Ou, pour chaque interaction, consulter une page JSP construite à l aide d autres pages JSP (ou HTML) : le modèle 3 En fait complémentaires : le modèle 2 (MVC) 72

Architecture MVC modèle = les données accédées par un code Java (JDBC, RMI, EJB, etc.) vues = JSP contrôleur = servlets JMF 73

L architecture MVC coté serveur Le modèle 2 modèle = les données accédées par un code Java (JDBC, RMI, EJB, etc.) vues = JSP contrôleur = servlets 74

Communication téléphone - application web JMF 75

= Dialogue MIDlet-servlet : une démo Voir à http://developers.sun.com/mobility/midp/articl es/tutorial2/ d'une communication mobile sur une servlet par Jonathan Knudsen Retranscrit avec la MIDlet HitMIDlet de la suite HelloSuite se connectant à l'application web (la servlet) d'url http://localhost:8080/midp/hits Le vérifier avec un navigateur Code de la MIDlet dans le répertoire...\j2mewtk\2.5.2\apps\hellosuite\src Code de la servlet dans le fichier HitServlet.java dans le répertoire...\smb111...\annee1011\conf2javameets erveurs\servletpourexemplehttp 76

Fin 77