Exposé de Système - Informatique et Réseau Présentation de JSP et comparaison à PHP Exposé Système Informatique et Réseau Cédric Jourdan – IR5
PLAN Introduction JSP PHP Lequel choisir entre JSP et PHP
INTRODUCTION Les sites Internet sont de plus en plus riches Interaction avec l’utilisateur Connexions avec des Bases de données et d’autres applications Langage script côté serveur
JSP - (Java Server Pages) Présentation Exécution
JSP Présentation Standard Java permettant de développer des Applications Web interactives Intégrable au sein d’une page HTML Langage script exécuté du côté serveur Répartition des tâches de développement
JSP Présentation - Modèle Demande de fichier JSP
JSP Présentation – Syntaxe (1) Exemple de code dans une page HTML <html> <body> <% String visitor = request.getParameter("name"); if (visitor == null) visitor = " World"; %> Hello, <%= visitor %>! </body> </html> Affichage “Hello, World !” pour une requête http://serveur.fr/helloScript.jsp “Hello, Java !” pour une requête http://serveur.fr/helloScript.jsp?name=Java
JSP Présentation – Syntaxe (2) Les Balises: Les Directives Pour transmettre au conteneur de JSP des informations de traitement spécifiques à une page Les éléments scripts Code JAVA compilé par le serveur Web Les Commentaires Pour ajouter du texte explicatif à une page JSP Les actions Elles permettent de réaliser plusieurs comportements différents (appel Applet, Servlet, JavaBean…)
JSP Présentation - Implémentation Séparation de la présentation et de l’implémentation Implantation Présentation Balises des JSP HTML et style HTML Composants Java Servlets Java Bean Classes … Balises JSP personnalisées
JSP Exécution - Conditions Serveur Web HTTP (Apache, Netscape Enterprise Server …) Conteneur de JSP (Tomcat … ) JDK (Java Development Kit) contient un “Java Runtime Environment” (machine virtuelle), un compilateur …
JSP Exécution - Servlets Programme exécuté sur le serveur Web Peut recevoir et émettre des requêtes HTTP Les JSP sont transformées en Servlet Application Web GET http://www/servlets/HelloWord Conteneur de Servlets Servelet HelloWord Requête Réponse JVM Client (Navigateur) <HTML>….<HelloWord></b></body></html> Serveur API Java “javax.servlet” et “javax.servlet.http”
JSP Exécution - Fonctionnement Serveur HTTP Réception de la requête Conteneur de JSP Servelet du compilateur de page Servelet JSP courante? Analyse les JSP Non Oui Servelet JSP chargée? Génère le source de la servelet Oui Non Charge la servlet Compile la servlet JSP Servlet de page JSP Génère la réponse Envoie de la réponse
JSP Exécution – Fonctionnement (Étape 1) client serveur + moteur 2 façons: - le client charge une URL http:// www. univ-mlv. fr/ prog. Jsp le navigateur construit une commande HTTP GET GET /prog. jsp HTTP/ 1.1 - le client saisit des informations dans un formulaire et clique sur envoi le navigateur construit une commande HTTP POST avec les données du formulaire (chaîne de caractères) POST /prog. jsp HTTP/ 1.1 Nom= Jourdan&Prenom= Cedric
JSP Exécution – Fonctionnement (Étape 2) serveur + moteur JSP Le "moteur": - à la 1ère invocation, crée une classe, la compile et l' instancie. Si la classe existe déjà, et elles aussi récente que la page HTML, on l’utilise. - crée un thread - invoque une méthode de la classe contenant le code à exécuter La JSP: - s'exécute sur le serveur Web Prog.jsp Serveur HTTP Conteneur JSP Nom=Jourdan&Prenom=Cedric 2 JVM
JSP Exécution – Fonctionnement (Étape 3&4) 1) JSP serveur + moteur La JSP: - produit son résultat 2) Serveur + moteur Client Le serveur: - propage le résultat au client dans une réponse HTTP Prog.jsp Réponse HTML Serveur HTTP Réponse HTML Conteneur JSP 4 3 JVM Client (Navigateur) Serveur Web
JSP Exécution – Mise en cache des sorties Fonctionnement HTTP Le client (Navigateur) 1) réception de l’en-tête HTTP 2) réception du corps de la réponse Le Serveur 1) envoie de l’en-tête HTTP (informations, cookies…) 2) émission de la page HTML
JSP Exécution – Mise en cache des sorties (2) Problème du protocole HTTP avec JSP Envoie de l’en-tête HTTP avant d’avoir traité le code JSP On ne peut pas par exemple gérer les cookies avec JSP, car ils sont envoyés dans l’en-tête Solution apportée par JSP Mise en cache des résultats du traitement des pages JSP On envoie la réponse au client une fois le code Java traite On peut ainsi modifier l’en-tête HTTP Caractéristiques du cache Par défaut la mémoire tampon est de 8Ko Un tampon par Servelet
PHP – (Personal Home Page) Langage script interprété du cote serveur Intégrable au sein d’une page HTML Simplicité d’écriture des scripts
Réception de la requête PHP PHP - Exécution Serveur HTTP Réception de la requête PHP Activation du processus PHP Processus PHP Génération de la réponse Réception des sorties PHP Envoie de la requête
JSP ou PHP? JSP PHP Utilise le langage Java qui est totalement objet Langage procédurale avec la possibilité de faire de l’objet Grand nombre d’API Moins de possibilités de développement Peut ce connecter à tout type de bases de données (avec JDBC) Peut ce connecter à tout type de bases de données (avec ODBC) Fonctionne “in process” et “out process” Ajout d’un module pour supporter le “out process” Les temps de réponses sont équivalents Plus gourmand en ressources à cause de la JVM Langage interprète à chaque appel Processus léger, utilise les Threads Nouveaux processus pour l’exécution des scripts Programmes portables Problèmes de portabilités
JSP ou PHP? – Le meilleur choix JSP demande une plus grande complexité d’apprentissage que PHP JSP est plus oriente pour s’interfacer sur de gros applicatifs comme les systèmes d’informations PHP est plus adapté à de petits applicatifs, qui demandent peux de développement
FIN Bibliographie Livre “JSP JavaServer Pages”, Duane K. FIELDS, Mark A. KOLB, édition Eyrolles. java.sun.com/jsp/ www.php.net www.commentcamarche.net http://deneau.multimania.com/ - Veille Technologique JAVA ET INTERNET, G. ROUSSEL, E. DURIS, édition Vuibert