Carrefour de l’information Applet, Servlet et JSP : des pages Web en action Philippe Mabilleau ing. 5 novembre 2002 Des pages Web en action ? Le Web ? Des pages Web interactives ? Applet : de l’action du coté du client ? Servlet : de l’action du coté du serveur ? JSP (Java Sever Pages) : un développement simplifié ? Que choisir ? 2002-12-03 © Philippe Mabilleau ing. 2 Des pages Web en action ? Le Web ? Des pages Web interactives ? Applet : de l’action du coté du client ? Servlet : de l’action du coté du serveur ? JSP (Java Sever Pages) : un développement simplifié ? Que choisir ? 2002-12-03 © Philippe Mabilleau ing. 3 Le Web ? Le Web ou la toile ? Origine historique – Un outil de documentation ? Un ensemble planétaire de pages liées par des liens hypertextes – Un maillage d’hyper -liens ? Un langage : HTML – Description et mise en forme des pages ? Un protocole : HTTP – Supporte les échanges entre le serveur et le client 2002-12-03 © Philippe Mabilleau ing. 4 Une requête HTTP Requête HTTP Internet Document HTML Client (Navigateur) 2002-12-03 Pages HTML Serveur (Site Web) © Philippe Mabilleau ing. 5 Requêtes et documents ? Les requêtes – GET ? Lecture d’un document – POST ? Envoi d’informations et lecture d’un document ? Les documents – Documents HTML ? Affichés par le navigateur – Autres ? ? 2002-12-03 Affichés par le navigateur (JPEG…) Affichés avec l’application ad hoc (PDF…) © Philippe Mabilleau ing. 6 Identification des documents ? URL ? ? = Uniform Resource Locator http://www.usherbrooke.ca/accueil/facultes.html Un protocole http:// – Indique le moyen utilisé pour aller chercher le document ? Un site www.usherbrooke.ca – Un nom sur Internet ? Un chemin /accueil/ – Souvent associé à un chemin dans une arborescence de fichiers sur le serveur ? Un document facultes.html – – ? 2002-12-03 Peut être absent Peut comporter un signet Des paramètres peuvent être transmis avec l’URL © Philippe Mabilleau ing. 7 Des pages Web en action ? Le Web ? Des pages Web interactives ? Applet : de l’action du coté du client ? Servlet : de l’action du coté du serveur ? JSP (Java Sever Pages) : un développement simplifié ? Que choisir ? 2002-12-03 © Philippe Mabilleau ing. 8 Des pages en action… ? Animer les pages Web par de l’interaction avec l’usager ? Les actions de l’usager vont conditionner les contenus affichés ? Les pages ont un « comportement » plus ou moins complexe – Réaction simple ? Animation graphique – Action complexe ? ? 2002-12-03 Passer une commande en ligne Consulter une base de données © Philippe Mabilleau ing. 9 … par différents moyens Par un langage « interprété » Au niveau du serveur JSP Servlet Par un programme compilé Au niveau du client Applet Par un langage interprété 2002-12-03 © Philippe Mabilleau ing. Script 10 Script client ? Interprétation de commandes au sein des pages HTML ? JavaScript, VBScript ? Langage supporté par le navigateur ? Performance limitée ? Environnement contrôlé par le navigateur ? Code complètement accessible au client – Aucune protection du code 2002-12-03 © Philippe Mabilleau ing. 11 Des pages Web en action ? Le Web ? Des pages Web interactives ? Applet : de l’action du coté du client ? Servlet : de l’action du coté du serveur ? JSP (Java Sever Pages) : un développement simplifié ? Que choisir ? 2002-12-03 © Philippe Mabilleau ing. 12 Applet ? Programme Java intégré dans un document HTML ? L’applet est référencé par le document HTML et est téléchargé à partir du serveur – Balise applet ? <applet code="…" width="…" hight="…" /> ? Les classes Java sont exécutées dans l’environnement du client – – 2002-12-03 Machine virtuelle Java du client Accès sécurisé à l’environnement © Philippe Mabilleau ing. 13 Exécution d’un applet Page HTML <applet … > Requête HTTP Page HTML Document HTML Internet Requête HTTP Fichier Classe Fichier Classe Serveur (Site Web) Applet 2002-12-03 © Philippe Mabilleau ing. 14 Des pages Web en action ? Le Web ? Des pages Web interactives ? Applet : de l’action du coté du client ? Servlet : de l’action du coté du serveur ? JSP (Java Sever Pages) : un développement simplifié ? Que choisir ? 2002-12-03 © Philippe Mabilleau ing. 15 Servlet ? Une requête HTTP provoque l’exécution de code Java – Une correspondance doit être établie entre la partie locale de l’URL et le code à invoquer ? « mapping » du servlet ? Le code exécuté engendre une réponse qui est retournée au client – Page HTML ou document – Autres actions possibles au niveau du serveur ? ? 2002-12-03 Accès à une base de données Interaction avec le matériel © Philippe Mabilleau ing. 16 Exécution d’un servlet Fichier Classe Requête HTTP Internet Document HTML Généré dynamiquement Client (Navigateur) 2002-12-03 Exécution Document généré Machine Virtuelle Java Serveur (Site Web) © Philippe Mabilleau ing. 17 Exemple de code d’un servlet 2002-12-03 © Philippe Mabilleau ing. 18 Des pages Web en action ? Le Web ? Des pages Web interactives ? Applet : de l’action du coté du client ? Servlet : de l’action du coté du serveur ? JSP (Java Sever Pages) : un développement simplifié ? Que choisir ? 2002-12-03 © Philippe Mabilleau ing. 19 JSP ? Java Server Page ? Script inséré dans le texte de la page – En apparence seulement ? Le script est compilé par le serveur pour construire un servlet ? Ce servlet va engendrer le code HTML initial de la page ainsi que les actions du script 2002-12-03 © Philippe Mabilleau ing. 20 Exemple de contenu J S P 2002-12-03 <% if (numguess (numguess. .getSuccess getSuccess()) ()) { %> Congratulations! You got it. And after just <%= numguess numguess. .getNumGuesses getNumGuesses() () %> tries.<p> <% numguess numguess.reset(); .reset(); %> Care to <a href href=" ="numguess numguess. .jsp jsp"> ">try try again</a>? again</a>? <% } else if (numguess (numguess. .getNumGuesses getNumGuesses() () == 0) { %> Welcome to the Number Guess game.<p> game.<p> I'm thinking of a number between 1 and 100.<p> <form method= method=get get> > What's your guess? guess? <input type=text type= text name= name=guess guess> > <input type=submit type=submit value=" value="Submit Submit"> "> </form </ form> > <% } else { %> Good guess, guess, but nope nope. . Try <b><%= numguess numguess. .getHint getHint() () %></b>. You have made <%= numguess numguess. .getNumGuesses getNumGuesses() () %> guesses guesses.<p> .<p> I'm thinking of a number between 1 and 100.<p> <form method= method=get get> > What's your guess? guess? <input type=text type= text name= name=guess guess> > <input type=submit type=submit value=" value="Submit Submit"> "> </form </ form> > © Philippe Mabilleau ing. 21 <% } %> Des pages Web en action ? Le Web ? Des pages Web interactives ? Applet : de l’action du coté du client ? Servlet : de l’action du coté du serveur ? JSP (Java Sever Pages) : un développement simplifié ? Que choisir ? 2002-12-03 © Philippe Mabilleau ing. 22 Applet, J S P ou servlet ? ? L’applet s’exécute sur le client – Protection limité du code – Performance du client – Interaction avec le serveur via le réseau – Interaction directe avec l’usager ? Le servlet et la J S P s’exécutent sur le serveur – – – – 2002-12-03 Le code reste sur le serveur Performance du serveur Interaction avec le serveur directe Interaction avec l’usager via le réseau © Philippe Mabilleau ing. 23 Servlet ou J S P ? ? Le servlet est exécuté – Le code est indépendant de toute page HTML – L’aspect « présentation » est traité séparément ? Dans d’autres pages HTML par exemple – Le modèle de multiprogrammation utilisé pour exécuter les servlets est le plus performant ? Idéal pour les « petits systèmes » ? La J S P est compilée et exécutée – Le code et la page HTML sont liés – Intégration de la présentation et des données – Ressources de compilation requises sur le serveur ? 2002-12-03 Mise au point plus facile © Philippe Mabilleau ing. 24 En conclusion ? Applet : interaction intensive avec l’usager ? Servlet : interaction intensive avec l’environnement du serveur ? J S P : servlet au développement simplifié mais moins efficace 2002-12-03 © Philippe Mabilleau ing. 25