Généralités sur JEE Les servlets Java Server Page > Présentation de JEE Jean-Yves Didier Université d’Evry-Val-d’Essonne Jean-Yves Didier M1GI option programmation avancée (JEE) 1/15 Généralités sur JEE 1 Généralités sur JEE 2 Les servlets 3 Java Server Page Jean-Yves Didier Les servlets Java Server Page M1GI option programmation avancée (JEE) > 2/15 Généralités sur JEE Les servlets Java Server Page > JEE JEE – Java Entreprise Edition • Extension de Java ; • Fournit un cadre applicatif pour les logiciels et systèmes d’information d’entreprise ; • Apporte : I I Des bibliothèques supplémentaires ; Un environnement d’exécution particulier. Jean-Yves Didier M1GI option programmation avancée (JEE) 3/15 Généralités sur JEE Les servlets Java Server Page > Contexte d’utilisation/d’application Fonctionnalités apportées • Fonctionnalités réseau ; • Services Web ; • Liens objet – base de données relationnelle ; • Architectures multi-tiers ; • Architecture Modèle-Vue-Contrôleur ; • ... Jean-Yves Didier M1GI option programmation avancée (JEE) 4/15 Généralités sur JEE Les servlets Java Server Page > JEE : une spécification / plusieurs implémentations • JEE est une spécification d’environnement donné par Oracle ; • Spécifications fournies par la Java Community Process ; • Différentes implémentations plus ou moins fidèles existent : I Glassfish (Oracle) ; I JBoss/WildFly (RedHat) ; I Geronimo (Apache) ; I Tomcat (Apache) – incomplète, support servlets et jsp uniquement . . . Jean-Yves Didier M1GI option programmation avancée (JEE) 5/15 Généralités sur JEE Les servlets Java Server Page > Les grands principes architecturaux Architecture client/serveur service (HTTP) servlet HTML + fichiers requêtes navigateur Client JVM Serveur (Schéma de principe approximatif) Jean-Yves Didier M1GI option programmation avancée (JEE) 6/15 Généralités sur JEE Les servlets Java Server Page > Les servlets (1/2) Définition • programme Java qui s’exécute dans un serveur Web ; • reçoit et répond aux requêtes de clients Web ; • interface définie dans le paquetage javax.servlet ; • implémentée dans la classe abstraite HttpServlet ; • définit un cycle de vie. Cycle de vie d’une servlet Associé à des opérations à implémenter : 1 init : construction et initialisation de la servlet ; 2 service : traitement des requêtes client ; 3 destroy : mise hors service et destruction de la servlet. Jean-Yves Didier M1GI option programmation avancée (JEE) 7/15 Généralités sur JEE Les servlets Java Server Page > Les servlets (2/2) Méthodes additionnelles getServletConfig donne les paramètres d’initialisation de la servlet ; getServletInfo donne des informations sur la servlet (auteur, . . .) Utilisation privilégiée – HttpServlet • classe de base abstraite à dériver pour créer sa servlet ; • doit redéfinir une méthode parmi les suivantes : I I I I I doGet, pour le support des requêtes HTTP GET ; doPost, pour le support des requêtes HTTP POST ; doPut, pour le support des requêtes HTTP PUT ; doDelete, pour le support des requêtes HTTP DELETE ; init, destroy et getServletInfo, cf interface servlet. Jean-Yves Didier M1GI option programmation avancée (JEE) 8/15 Généralités sur JEE Les servlets Java Server Page > Exemple de servlet Servlet Hello World ! // B i b l i o t h è q u e s j a v a r e q u i s e s import j a v a . i o . ∗ ; import j a v a x . s e r v l e t . ∗ ; import j a v a x . s e r v l e t . h t t p . ∗ ; // E x t e n s i o n de l a c l a s s e H t t p S e r v l e t p u b l i c c l a s s HelloWorld extends H t t p S e r v l e t { p u b l i c v o i d doGet ( H t t p S e r v l e t R e q u e s t r e q u e s t , HttpServletResponse response ) throws S e r v l e t E x c e p t i o n , I O E x c e p t i o n { // L o g i q u e de t r a i t e m e n t P r i n t W r i t e r out = r e s p o n s e . g e t W r i t e r ( ) ; o u t . p r i n t l n ( " <h1 > Hello World ! </ h1 >" ) ; } } Jean-Yves Didier M1GI option programmation avancée (JEE) 9/15 Généralités sur JEE Les servlets Java Server Page > Déploiement d’une servlet (1/2) Exemple dans Tomcat Étapes – cas d’une classe appelée HelloWorld • Compiler la servlet ; • Placer la classe compilée dans le répertoire : rep install tomcat/webapps/ROOT/classes/ • Modifier le fichier web.xml placé dans le répertoire : rep install tomcat/webapps/ROOT/WEB-INF/ • Lancer tomcat : rep install tomcat/bin/startup.{bat|sh} • Tester dans le navigateur à l’adresse : http://localhost:8080/HelloWorld Jean-Yves Didier M1GI option programmation avancée (JEE) 10/15 Généralités sur JEE Les servlets Java Server Page > Déploiement d’une servlet (2/2) Exemple dans Tomcat Sections à rajouter dans le fichier web.xml < s e r v l e t> < s e r v l e t −name>H e l l o W o r l d</ s e r v l e t −name> < s e r v l e t −c l a s s>H e l l o W o r l d</ s e r v l e t −c l a s s> </ s e r v l e t> < s e r v l e t −mapping> < s e r v l e t −name>H e l l o W o r l d</ s e r v l e t −name> <u r l −p a t t e r n>/ H e l l o W o r l d</ u r l −p a t t e r n> </ s e r v l e t −mapping> Jean-Yves Didier M1GI option programmation avancée (JEE) 11/15 Généralités sur JEE Les servlets Java Server Page > Les JSP JSP – Java Server Page • format dont la syntaxe est conforme au standard XML (à partir de JSP 2.0) ; • permettent de créer dynamiquement du code HTML/XML/autre ; • permettent de meler code statique et code Java ; • définissent des directives JSP à intercaler dans le code de la page web. Jean-Yves Didier M1GI option programmation avancée (JEE) 12/15 Généralités sur JEE Les servlets Java Server Page > Quelques directives JSP (1.x) • <%@ include file="..." %> inclusion de fichier • <%@ page import="..." %> importation de paquetage java • <%! int var=0; %> déclaration de variable • <% ... %> scriptlet (généralement tout code Java) • <%= expression %> remplace l’expression par son résultat • et bien d’autres ... Jean-Yves Didier M1GI option programmation avancée (JEE) 13/15 Généralités sur JEE Les servlets Java Server Page > Exemple de page JSP Hello World avec date <html> <head> < t i t l e>H e l l o World</ t i t l e> </ head> <body> <h1>H e l l o World</h1> <p> A u jo u r d ’ h u i nous sommes l e : <%= new j a v a . u t i l . Date ( ) . t o S t r i n g ( ) %> </p> </ body> </ html> Jean-Yves Didier M1GI option programmation avancée (JEE) 14/15 Généralités sur JEE Les servlets Java Server Page > Pour aller plus loin • Page d’Oracle sur JEE : http://www.oracle.com/technetwork/java/javaee/ overview/index.html • Site de JCP Java Community Process : http://jcp.org • Site d’Apache Tomcat : http://tomcat.apache.org/ • Eclipse IDE for Java EE Developers http://www.eclipse.org/downloads/packages/ eclipse-ide-java-ee-developers/mars1 • API de Java EE 7 : https://docs.oracle.com/javaee/7/api/toc.htm Jean-Yves Didier M1GI option programmation avancée (JEE) 15/15