Les Servlets. Thierry Lecroq (merci à Alexandre Pauchet (INSA Rouen)) Université de Rouen FRANCE. Thierry Lecroq (Univ. Rouen) Servlets 1 / 69

Dimension: px
Commencer à balayer dès la page:

Download "Les Servlets. Thierry Lecroq (merci à Alexandre Pauchet (INSA Rouen)) Université de Rouen FRANCE. Thierry Lecroq (Univ. Rouen) Servlets 1 / 69"

Transcription

1 Les Servlets Thierry Lecroq (merci à Alexandre Pauchet (INSA Rouen)) Université de Rouen FRANCE Thierry Lecroq (Univ. Rouen) Servlets 1 / 69

2 Plan 1 Introduction 2 API 3 Paramètres 4 Encodage 5 Filtrage 6 Partage du contrôle 7 Session 8 Authentication Thierry Lecroq (Univ. Rouen) Servlets 2 / 69

3 Introduction (1/8) Description Que sont les Servlets? Application java Exécutée côté serveur Traitement de requêtes HTTP et génération de réponses dynamiques comparable aux CGI Permet d'étendre les fonctionnalités de base d'un serveur HTTP Quelques avantages : portabilité (java) puissance avec l'accès à la totalité de l'api java rapidité (la Servlet est chargée une seule fois) Thierry Lecroq (Univ. Rouen) Servlets 3 / 69

4 Introduction (2/8) Fonctionnement des CGI Thierry Lecroq (Univ. Rouen) Servlets 4 / 69

5 Introduction (3/8) Fonctionnement des Servlets Thierry Lecroq (Univ. Rouen) Servlets 5 / 69

6 Introduction (4/8) Application Web Une application web est composée de Servlets/JSP de bibliothèques de classes annexes, de ressources statiques (images, HTML, XHTML,... ), un descripteur de déploiement (chier XML) Thierry Lecroq (Univ. Rouen) Servlets 6 / 69

7 Introduction (5/8) Vocabulaire J2EE J2EE et les applications Web Composant Web : Servlets et JSP Application Web : ensemble de composants web, bibliothèques et ressources statiques dont l'organisation est décrite dans un descripteur de déploiement Conteneur Web : environnement d'exécution et de distribution des composants web et des ressources statiques gère le cycle de vie des Servlets (intanciation, initialisation,... ) Thierry Lecroq (Univ. Rouen) Servlets 7 / 69

8 Introduction (6/8) Exemple de Servlet : le chier appelant Hello.html <? xml version=" 1.0 " encoding="iso "? > <!DOCTYPE html PUBLIC " -// W3C // DTD XHTML 1.0 Strict // EN " "DTD /xhtml1 - strict.dtd "> <html xmlns ="http :// /1999/ xhtml " xml :l a n g ="fr "> <head > < t i t l e >Ma premi & eacute ; re Servlet </ t i t l e > </head > <body > <h1> Bonjour </h1> <form action ="/ Hello / Servlet / Coucou " method="post "> < label >Pr & eacute ;nom : </ label ><input type="text " name=" prenom " size ="30 "> < input type=" submit " value =" envoyer "> </ form > < hr / > < address ><a href =" mailto : Thierry. - rouen.fr ">Thierry. Lecroq</a></ address > </body > </ html > Thierry Lecroq (Univ. Rouen) Servlets 8 / 69

9 Introduction (7/8) Exemple de Servlet : la Servlet Hello.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s Hello extends HttpServlet { p u b l i c v o i d dopost ( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { String prenom = requete. getparameter (" prenom "); reponse. setcontenttype ("text /html "); PrintWriter out = reponse. getwriter () ; out. println ("<html >"); out. println ("<body >"); out. println ("<h1 > Bonjour " + prenom + "! </h1 >"); out. println ("<p>ceci est ma premi & egrave ;re Servlet... </p>"); out. println (" </body >"); out. println (" </html >"); Thierry Lecroq (Univ. Rouen) Servlets 9 / 69

10 Introduction (8/8) Exemple de Servlet : le chier de déploiement web.xml <?xml version =" 1.0 " encoding="iso "? > <!DOCTYPE web - app PUBLIC " -// Sun Microsystems, Inc.// DTD Application web 2.3// EN " " file: /// opt / j2sdkee /conf /web - app_2_3.dtd "> <web - app> < servlet > <servlet - name>bonjour</ servlet - name> <servlet - class>hello</servlet - class> </ servlet > <servlet - mapping> <servlet - name>bonjour</ servlet - name> <url - pattern>/ Servlet / Coucou</url - pattern> </servlet - mapping> </web - app> Appel L'appel à la Servlet se fait par : Remarque : ici la Servlet ne supporte que le POST Thierry Lecroq (Univ. Rouen) Servlets 10 / 69

11 API (1/13) Application Web Arborescence d'une archive WAR (Web ARchive) ApplicationWeb.war _ fichiers.html _ fichiers.jsp _ repertoires\fichiers _ src _ sourcesservlets.java _ sourcesbibliotheques.java _ META-INF _ MANIFEST.MF _ WEB-INF _ web.xml _ classes _ Servlets.class _ lib _ bibliotheques.jar Thierry Lecroq (Univ. Rouen) Servlets 11 / 69

12 API (2/13) Déploiement Déploiement le répertoire ApplicationWeb est placé dans le répertoire d'applications du conteneur web webapps pour Tomcat JBOSS_DIR/server/JBOSS_MODE/deploy pour Jboss ou un chier ApplicationWeb.war (chier archive web) ayant pour contenu applicationweb : cd ApplicationWeb ; jar cf applicationweb.war * Thierry Lecroq (Univ. Rouen) Servlets 12 / 69

13 API (3/13) Descripteur de déploiement Fichier web.xml Le chier web.xml contient la description du déploiement. Il doit être valide par rapport à une DTD. <?xml version="1.0" encoding="iso "?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application web 2.3//EN" "file:///usr/local/j2sdkee/conf/web-app_2_3.dtd"> <web-app> <Servlet> <Servlet-name>Alias de la Servlet</Servlet-name> <Servlet-class>Nom de la classe Servlet</Servlet-class> </Servlet> <Servlet-mapping> <Servlet-name>Alias de la Servlet</Servlet-name> <url-pattern>chemin de l'url déclenchant le chargement de la Servlet</url-pattern> <!-- le joker * est autorisé dans le chemin --> </Servlet-mapping> </web-app> Attention de bien respecter la DTD (ordre des balises) Thierry Lecroq (Univ. Rouen) Servlets 13 / 69

14 API (4/13) Cycle de vie Gestion du cycle de vie des Servlets Le conteneur Web doit se conformer à la gestion des Servlets : création et initialisation de Servlets traitement des services demandés par les éventuels clients destruction des Servlets et libération de l'espace mémoire (ramasse-miettes) Java propose une API permettant de construire des Servlets : l'api permet au développeur de gérer la création, les requêtes et la destruction des Servlets le conteneur fait appel à cette API pour gérer les Servlets Thierry Lecroq (Univ. Rouen) Servlets 14 / 69

15 API (5/13) API : classe GenericServlet API J2EE SDK Nécessite l'installation du J2EE SDK Packages : javax.servlet.* et javax.servlet.http.* La classe GenericServlet : p u b l i c abtract c l a s s GenericServlet { GenericServlet () // methodes gerant l ' initialisation et la destruction v o i d destroy () v o i d init () v o i d init ( ServletConfig config ) // methodes pour la recuperation des parametres passes String getinitparameter ( String name ) Enumeration getinitparameternames () // recuperation d ' informations concernant la Servlet ServletConfig getservletconfig () ServletContext getservletcontext () String getservletinfo () String getservletname () // ecriture de logs, pratique pour le deboguage v o i d log ( String msg ) v o i d log ( String message, Throwable t) // traite les requetes (doit etre redefinie dans la sous - classe ) a b s t r a c t v o i d service ( ServletRequest req, ServletResponse res ) Thierry Lecroq (Univ. Rouen) Servlets 15 / 69

16 API (6/13) API : classe HttpServlet HttpServlet p u b l i c a b s t r a c t c l a s s HttpServlet extends GenericServlet { HttpServlet () // methodes repondant aux differents types de requetes p r o t e c t e d v o i d dodelete ( HttpServletRequest req, HttpServletResponse resp ) p r o t e c t e d v o i d doget ( HttpServletRequest req, HttpServletResponse resp ) p r o t e c t e d v o i d dohead ( HttpServletRequest req, HttpServletResponse resp ) p r o t e c t e d v o i d dooptions ( HttpServletRequest req, HttpServletResponse resp ) p r o t e c t e d v o i d dopost ( HttpServletRequest req, HttpServletResponse resp ) p r o t e c t e d v o i d doput ( HttpServletRequest req, HttpServletResponse resp ) p r o t e c t e d v o i d dotrace ( HttpServletRequest req, HttpServletResponse resp ) // permet d ' utiliser le cache cote client p r o t e c t e d long getlastmodified ( HttpServletRequest req ) // gerent le dispatching en fontion du type de requete p r o t e c t e d v o i d service ( HttpServletRequest req, HttpServetResponse resp ) v o i d service ( ServletRequest req, ServletResponse res ) Classe à dériver pour créer ses propres Servlets HttpServletRequest : toutes les données de la requête HttpServletResponse : réponse à la requête Thierry Lecroq (Univ. Rouen) Servlets 16 / 69

17 API (7/13) Servlet et Threads Gestion des requêtes Le conteneur WEB ne contient qu'une instance de chaque Servlet Les requêtes sont traitées dans des threads : persistance de la Servlet d'une requête à une autre, persistance des threads, taille mémoire réduite, pas de surcoût pour traiter une nouvelle requête (déjà chargée), mémoire partagée (exemple pratique : la connexion à une BD est initialisée au chargement), il faut gérer les problèmes de synchronisation (utilisation de l'exclusion mutuelle). Thierry Lecroq (Univ. Rouen) Servlets 17 / 69

18 API (8/13) Exemple : Compteur simple CompteurSimple.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s CompteurSimple extends HttpServlet { p r i v a t e i n t compteur = 0; p u b l i c v o i d doget ( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { res. setcontenttype ("text / plain "); PrintWriter out = res. getwriter () ; compteur ++; out. println (" Compteur : "+ compteur ); Thierry Lecroq (Univ. Rouen) Servlets 18 / 69

19 API (9/13) Exemple : Compteur simple web.xml <?xml version =" 1.0 " encoding="iso "? > <!DOCTYPE web -app PUBLIC " -// Sun Microsystems, Inc.// DTD Application web 2.3// EN " " file: /// opt / j2sdkee /conf /web - app_2_3.dtd "> <web - app> < servlet > <servlet - name>compteursimple </ servlet - name> <servlet - class>compteursimple </servlet - class> </ servlet > <servlet - mapping> <servlet - name>compteursimple </ servlet - name> <url - pattern>/ Servlet / CompteurSimple </url - pattern> </servlet - mapping> </web - app> Thierry Lecroq (Univ. Rouen) Servlets 19 / 69

20 API (10/13) Exemple : Compteur d'instances de Servlet web.xml <?xml version =" 1.0 " encoding="iso "? > <!DOCTYPE web -app PUBLIC " -// Sun Microsystems, Inc.// DTD Application web 2.3// EN " " file: /// opt / j2sdkee /conf /web - app_2_3.dtd "> <web - app> < servlet > <servlet - name>compteura</ servlet - name> <servlet - class>compteurinstances </servlet - class> </ servlet > < servlet > <servlet - name>compteurb</ servlet - name> <servlet - class>compteurinstances </servlet - class> </ servlet > <servlet - mapping> <servlet - name>compteura</ servlet - name> <url - pattern>/ Servlet / CompteurA</url - pattern> </servlet - mapping> <servlet - mapping> <servlet - name>compteurb</ servlet - name> <url - pattern>/ Servlet / CompteurB</url - pattern> </servlet - mapping> </web - app> Thierry Lecroq (Univ. Rouen) Servlets 20 / 69

21 API (11/13) Compteur d'instances de Servlet CompteurInstances.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s CompteurInstances extends HttpServlet { p r i v a t e s t a t i c i n t nbinstances = 0; private s t a t i c int compteurclasse = 0; p r i v a t e i n t compteur = 0; p u b l i c v o i d init () throws ServletException { nbinstances ++; p u b l i c v o i d destroy () { nbinstances - -; p u b l i c v o i d doget ( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { res. setcontenttype ("text / plain "); PrintWriter out = res. getwriter () ; compteur ++; compteurclasse ++; out. println (" Compteur pour cette instance : "+ compteur ); out. println (" Nombre d 'instances de la servlet : "+ nbinstances ); out. println (" Compteur totale sur l 'ensemble des instances de la servlet : "+ compteurclasse ); Thierry Lecroq (Univ. Rouen) Servlets 21 / 69

22 API (12/13) Exemple : Compteur persistant CompteurPersistant.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s CompteurPersistant extends HttpServlet { p r i v a t e i n t compteur = 0; p u b l i c v o i d init () throws ServletException { t r y { FileReader file = new FileReader ("/tmp / compteur.txt "); BufferedReader reader = new BufferedReader ( file ); compteur = Integer. parseint ( reader. readline () ); reader. close () ; catch ( FileNotFoundException exception ) { catch ( IOException exception ) { catch ( NumberFormatException exception ) { p u b l i c v o i d destroy () { super. destroy () ; enregistreretat () ; Thierry Lecroq (Univ. Rouen) Servlets 22 / 69

23 API (13/13) Exemple : Compteur persistant CompteurPersistant.java p u b l i c v o i d doget ( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { res. setcontenttype ("text / plain "); PrintWriter out = res. getwriter () ; compteur ++; out. println (" Compteur : "+ compteur ); i f ( compteur % 20 == 0) enregistreretat () ; p u b l i c v o i d enregistreretat () { t r y { FileWriter file = new FileWriter ("/tmp / compteur.txt "); PrintWriter writer = new PrintWriter ( file ); writer. println ( compteur ); writer. close () ; catch ( IOException exception ) { log (" ErreurServlet : enregistrement de l 'etat impossible pour CompteurPersistant "); log (""+ exception ); Thierry Lecroq (Univ. Rouen) Servlets 23 / 69

24 Paramètres (1/13) Paramètres d'initialisation web.xml <?xml version =" 1.0 " encoding="iso "? > <!DOCTYPE web -app PUBLIC " -// Sun Microsystems, Inc.// DTD Application web 2.3// EN " " file: /// opt / j2sdkee /conf /web - app_2_3.dtd "> <web - app> < servlet > <servlet - name>paraminit</ servlet - name> <servlet - class>paraminit</servlet - class> <init - param> <param - name>parametre1 </ param - name> <param - value>valeur1</param - value> <description >test de parametre</ description > </init - param> <init - param> <param - name>parametre2 </ param - name> <param - value>valeur2</param - value> <description >test de parametre</ description > </init - param> </ servlet > <servlet - mapping> <servlet - name>paraminit</ servlet - name> <url - pattern>/ Servlet / ParamInit</url - pattern> </servlet - mapping> </web - app> Thierry Lecroq (Univ. Rouen) Servlets 24 / 69

25 Paramètres (2/13) Paramètres d'initialisation ParamInit.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s ParamInit extends HttpServlet { String param1 ; String param2 ; p u b l i c v o i d init () { t h i s. param1 = getinitparameter (" parametre1 "); t h i s. param2 = getinitparameter (" parametre2 "); p u b l i c v o i d doget ( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { reponse. setcontenttype ("text / plain "); PrintWriter out = reponse. getwriter () ; out. println (" parametre1 = "+ t h i s. param1 ); out. println (" parametre2 = "+ t h i s. param2 ); Thierry Lecroq (Univ. Rouen) Servlets 25 / 69

26 Paramètres (3/13) Paramètres de contexte : principe Les paramètres de contexte Association de paramètres à un ensemble de Servlets : contrairement aux paramètres d'initialisation de Servlet précédents, ceux-ci sont commun à toutes les Servlets de l'application web. Déclaration : dans web.xml <web - app> <context - param> <param - name>parametrecontext </ param - name> <param - value>valeurcontext </param - value> </context - param> <! -- declaration des Servlets --> </web - app> Récupération dans la Servlet : ServletContext context = getservletcontext () ; chainecontext = context. getinitparameter (" parametrecontext "); Thierry Lecroq (Univ. Rouen) Servlets 26 / 69

27 Paramètres (4/13) Paramètres de contexte : exemple web.xml <?xml version =" 1.0 " encoding="iso "? > <!DOCTYPE web -app PUBLIC " -// Sun Microsystems, Inc.// DTD Application web 2.3// EN " " file: /// opt / j2sdkee /conf /web - app_2_3.dtd "> <web - app> <context - param> <param - name>parametredecontexte </ param - name> <param - value>valeurcontextuelle </param - value> <description >test de parametre</ description > </context - param> < servlet > <servlet - name>paramcontext </ servlet - name> <servlet - class>paramcontext </servlet - class> </ servlet > <servlet - mapping> <servlet - name>paramcontext </ servlet - name> <url - pattern>/ Servlet / ParamContext </url - pattern> </servlet - mapping> </web - app> Thierry Lecroq (Univ. Rouen) Servlets 27 / 69

28 Paramètres (5/13) Paramètres de contexte : exemple ParamContext.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s ParamContext extends HttpServlet { p u b l i c v o i d doget ( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { ServletContext context = getservletcontext () ; String chainecontext = context. getinitparameter (" parametredecontexte "); reponse. setcontenttype ("text / plain "); PrintWriter out = reponse. getwriter () ; out. println (" Parametre de contexte = "+ chainecontext ); Thierry Lecroq (Univ. Rouen) Servlets 28 / 69

29 Paramètres (6/13) Paramètres provenant des formulaires : principe Récupération de paramètres en provenance d'un formulaire Les paramètres de formulaires sont récupérables via HttpServletRequest La récupération se fait par les méthodes suivantes : Enumeration getparameternames() String getparametervalues(string name) String getparameter(string name) Thierry Lecroq (Univ. Rouen) Servlets 29 / 69

30 Paramètres (7/13) Paramètres provenant des formulaires : exemple Hello.java <? xml version=" 1.0 " encoding="iso "? > <!DOCTYPE html PUBLIC " -// W3C // DTD XHTML 1.0 Strict // EN " "DTD /xhtml1 - strict.dtd "> <html xmlns ="http :// /1999/ xhtml " xml :l a n g ="fr "> <head > < t i t l e >Ma premi & eacute ; re Servlet </ t i t l e > </head > <body > <h1> Bonjour </h1> <form action ="/ Hello / Servlet / Coucou " method="post "> < label >Pr & eacute ;nom : </ label ><input type="text " name=" prenom " size ="30 "> < input type=" submit " value =" envoyer "> </ form > < hr / > < address ><a href =" mailto : Thierry. - rouen.fr ">Thierry. Lecroq</a></ address > </body > </ html > Thierry Lecroq (Univ. Rouen) Servlets 30 / 69

31 Paramètres (8/13) Paramètres provenant des formulaires : exemple Hello.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s Hello extends HttpServlet { p u b l i c v o i d dopost ( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { String prenom = requete. getparameter (" prenom "); reponse. setcontenttype ("text /html "); PrintWriter out = reponse. getwriter () ; out. println ("<html >"); out. println ("<body >"); out. println ("<h1 > Bonjour " + prenom + "! </h1 >"); out. println ("<p>ceci est ma premi & egrave ;re Servlet... </p>"); out. println (" </body >"); out. println (" </html >"); Thierry Lecroq (Univ. Rouen) Servlets 31 / 69

32 Paramètres (9/13) Attributs de contexte : principe Attributs de contexte Partager des informations entre plusieurs Servlets : le partage est eectué à travers le contexte d'exécution géré par ServletContext Obtention du contexte d'une Servlet : ServletContext getservletcontext(string uripath) Manipulation d'attributs du contexte par ServletContext : void setattribute(string name, Object o) Object getattribute(string name) Enumeration getattributenames() void removeattribute(string name) Thierry Lecroq (Univ. Rouen) Servlets 32 / 69

33 Paramètres (10/13) Attributs de contexte : exemple web.xml <?xml version =" 1.0 " encoding="iso "? > <!DOCTYPE web -app PUBLIC " -// Sun Microsystems, Inc.// DTD Application web 2.3// EN " " file: /// opt / j2sdkee /conf /web - app_2_3.dtd "> <web - app> < servlet > <servlet - name>increment</ servlet - name> <servlet - class>attributcontextincrement </servlet - class> </ servlet > < servlet > <servlet - name>lecteur</ servlet - name> <servlet - class>attributcontextlecteur </servlet - class> </ servlet > <servlet - mapping> <servlet - name>increment</ servlet - name> <url - pattern>/ Servlet / Increment</url - pattern> </servlet - mapping> <servlet - mapping> <servlet - name>lecteur</ servlet - name> <url - pattern>/ Servlet / Lecteur</url - pattern> </servlet - mapping> </web - app> Thierry Lecroq (Univ. Rouen) Servlets 33 / 69

34 Paramètres (11/13) Attributs de contexte : exemple AttributContextLecteur.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s AttributContextLecteur extends HttpServlet { ServletContext context ; p u b l i c v o i d init () { context = getservletcontext (). getcontext ("/ AttributContext "); p u b l i c v o i d doget ( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { reponse. setcontenttype ("text /html "); PrintWriter out = reponse. getwriter () ; out. println ("<html >"); out. println ("<body >"); out. println ("<h1 > Lecteur valeur de compteur partage : "+ context. getattribute (" compteur ")+" </h1 >"); out. println ("<a href= '/ AttributContext / Servlet / Increment '>incremente </a>"); out. println ("<a href= '/ AttributContext / Servlet / Lecteur '>lecteur </a>"); out. println (" </form >"); out. println (" </body >"); out. println (" </html >"); Thierry Lecroq (Univ. Rouen) Servlets 34 / 69

35 Paramètres (12/13) Attributs de contexte : exemple AttributContextIncrement.java import java. io.*; import java. lang.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s AttributContextIncrement extends HttpServlet { ServletContext context ; p u b l i c v o i d init () { context = getservletcontext (). getcontext ("/ AttributContext "); i f ( context. getattribute (" compteur ") == n u l l ) context. setattribute (" compteur ","0"); p u b l i c i n t incremente () { t r y { i n t compteur = Integer. parseint (""+ context. getattribute (" compteur "))+1; context. setattribute (" compteur ",""+ compteur ); r e t u r n compteur ; catch ( NumberFormatException exception ) { log (" TestAttributContext1 : probleme de conversion en int "); log (""+ exception ); r e t u r n -1; Thierry Lecroq (Univ. Rouen) Servlets 35 / 69

36 Paramètres (13/13) Attributs de contexte : exemple AttributContextIncrement.java p u b l i c v o i d doget ( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { reponse. setcontenttype ("text /html "); PrintWriter out = reponse. getwriter () ; out. println ("<html >"); out. println ("<body >"); out. println ("<h1 > Increment valeur de compteur partage : "+ incremente ()+" </h1 >"); out. println ("<a href= '/ AttributContext / Servlet / Increment '>incremente </a>"); out. println ("<a href= '/ AttributContext / Servlet / Lecteur '>lecteur </a>"); out. println (" </form >"); out. println (" </body >"); out. println (" </html >"); Thierry Lecroq (Univ. Rouen) Servlets 36 / 69

37 Encodage (1/3) Génération de texte accentué Gestion de texte accentué Requêtes HTTP transmises aux Servlet : doget(servletrequest req, ServletResponse rep) dopost(servletrequest req, ServletResponse rep)... Toutes les entrées et sorties peuvent être (re)traitées : ServletRequest dénit la méthode void setcharacterencoding(string env) ServletResponse dénit les méthodes void setcontenttype(java.lang.string type) void setlocale(java.util.locale loc) Thierry Lecroq (Univ. Rouen) Servlets 37 / 69

38 Encodage (2/3) Exemple de génération de texte accentué Encodage.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; import java.util. Locale ; p u b l i c c l a s s Encodage extends HttpServlet { p u b l i c v o i d doget ( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { reponse. setcontenttype ("text / plain ; charset=utf -8 "); reponse. setlocale (new Locale ( Locale. FRENCH. getlanguage (), Locale. FRANCE. getcountry () ) ); PrintWriter out = reponse. getwriter () ; out.println("texte accentué : àéèùöùï") ; Thierry Lecroq (Univ. Rouen) Servlets 38 / 69

39 Encodage (3/3) Traitement de requêtes contenant des accents CodageGet.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; import java.util. Locale ; p u b l i c c l a s s CodageGet extends HttpServlet { p u b l i c v o i d doget ( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { reponse. setcontenttype ("text / plain ; charset=utf -8 "); reponse. setlocale (new Locale ( Locale. FRENCH. getlanguage (), Locale. FRANCE. getcountry () ) ); PrintWriter out = reponse. getwriter () ; String texte = requete. getparameter (" texte "); requete. setcharacterencoding ("UTF -8 "); texte = requete. getparameter (" texte "); out. println (" Texte apres traitement : " + texte ); Thierry Lecroq (Univ. Rouen) Servlets 39 / 69

40 Filtrage (1/8) Principes du ltrage Principes du ltrage Application de ltres : aux requêtes faites aux servlets aux réponses de servlets Objectif : modier leur entête et/ou leur contenu Utilisation : authentication, conversion (ex : formats d'image), journalisation (ex : ajout de date), transformations XML,... Thierry Lecroq (Univ. Rouen) Servlets 40 / 69

41 Filtrage (2/8) Mise en uvre Implémentation de l'interface Filter Trois méthodes à redénir : void init(filterconfig) : permet de récupérer des informations sur le ltre mais aussi sur la servlet via le context void destroy() : pour libérer des ressources à la destruction void dofilter(servletrequest req, ServletResponse, filterchain chain) : examiner la requête et/ou la réponse (entête et corps) modier la requête et/ou la réponse (entête et corps) appeller les autres ltres Les ltres sont appellés dans l'ordre de déclaration dans web.xml Thierry Lecroq (Univ. Rouen) Servlets 41 / 69

42 Filtrage (3/8) Exemple : ltre d'entête FiltreEntete.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; import java.util. Locale ; p u b l i c c l a s s FiltreEntete implements Filter { p u b l i c v o i d init ( FilterConfig fconfig ) { p u b l i c v o i d destroy () { p u b l i c v o i d dofilter ( ServletRequest requete, ServletResponse reponse, FilterChain chain ) throws ServletException, IOException { reponse. setcontenttype ("text / plain ; charset=utf -8 "); reponse. setlocale (new Locale ( Locale. FRENCH. getlanguage (), Locale. FRANCE. getcountry () ) ); PrintWriter writer = reponse. getwriter () ; writer. println (" Entete ajoute par le filtre : FiltreEntete "); chain. dofilter (requete, reponse ); Thierry Lecroq (Univ. Rouen) Servlets 42 / 69

43 Filtrage (4/8) Exemple : ltre de pied de page FiltrePied.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; import java.util. Locale ; p u b l i c c l a s s FiltrePied implements Filter { p u b l i c v o i d init ( FilterConfig fconfig ) { p u b l i c v o i d destroy () { p u b l i c v o i d dofilter ( ServletRequest requete, ServletResponse reponse, FilterChain chain ) throws ServletException, IOException { reponse. setcontenttype ("text / plain ; charset=utf -8 "); reponse. setlocale (new Locale ( Locale. FRENCH. getlanguage (), Locale. FRANCE. getcountry () ) ); chain. dofilter (requete, reponse ); PrintWriter writer = reponse. getwriter () ; writer. println ("Pied de page ajoute par le filtre : FiltrePied "); Thierry Lecroq (Univ. Rouen) Servlets 43 / 69

44 Filtrage (5/8) Exemple : ltre dans les log FiltreLogTime.java import java. io.*; import java. text.*; import java. util.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s FiltreLogTime implements Filter { p r i v a t e SimpleDateFormat formatter = new SimpleDateFormat ("E d MMM yyyy, H:m:s.S", Locale. FRANCE ); p r i v a t e Date date = new Date () ; p r i v a t e FilterConfig fconfig ; p u b l i c v o i d init ( FilterConfig fconfig ) { t h i s. fconfig = fconfig ; p u b l i c v o i d dofilter ( ServletRequest requete, ServletResponse reponse, FilterChain chain ) throws ServletException, IOException { ServletContext context = t h i s. fconfig. getservletcontext () ; HttpServletRequest httprequete = ( HttpServletRequest ) requete ; t h i s.date. settime ( System. currenttimemillis () ); context.log (" Debut : "+formatter. format ( t h i s.date )+" > "+httprequete. getrequesturl () ); chain. dofilter (requete, reponse ); t h i s.date. settime ( System. currenttimemillis () ); context.log ("Fin : "+formatter. format ( t h i s.date )+" > "+httprequete. getrequesturl () ); Thierry Lecroq (Univ. Rouen) Servlets 44 / 69

45 Filtrage (6/8) Exemple : Servlet traitée FiltreLogTime.java p u b l i c v o i d destroy () { t h i s. formatter = n u l l ; t h i s. date = n u l l ; t h i s. fconfig = n u l l ; Compteur.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s Compteur extends HttpServlet { p r i v a t e i n t compteur = 0; p u b l i c v o i d doget ( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { PrintWriter out = res. getwriter () ; compteur ++; out. println (" Compteur : "+ compteur ); Thierry Lecroq (Univ. Rouen) Servlets 45 / 69

46 Filtrage (7/8) Exemple : déploiement web.xml <?xml version =" 1.0 " encoding="iso "? > <!DOCTYPE web -app PUBLIC " -// Sun Microsystems, Inc.// DTD Application web 2.3// EN " " file: /// opt / j2sdkee /conf /web - app_2_3.dtd "> <web - app> < filter > <filter - name>filtrelogtime </ filter - name> <filter - class>filtrelogtime </filter - class> </ filter > < filter > <filter - name>filtreentete </ filter - name> <filter - class>filtreentete </filter - class> </ filter > < filter > <filter - name>filtrepied </ filter - name> <filter - class>filtrepied</filter - class> </ filter > <filter - mapping> <filter - name>filtrelogtime </ filter - name> <url - pattern>/* </url - pattern> </filter - mapping> <filter - mapping> <filter - name>filtreentete </ filter - name> <servlet - name>compteur</ servlet - name> </filter - mapping> Thierry Lecroq (Univ. Rouen) Servlets 46 / 69

47 Filtrage (8/8) Exemple : déploiement web.xml <filter - mapping> <filter - name>filtrepied </ filter - name> <servlet - name>compteur</ servlet - name> </filter - mapping> < servlet > <servlet - name>hello</ servlet - name> <servlet - class>hello</servlet - class> </ servlet > < servlet > <servlet - name>compteur</ servlet - name> <servlet - class>compteur</servlet - class> </ servlet > <servlet - mapping> <servlet - name>hello</ servlet - name> <url - pattern>/ Servlet / Hello</url - pattern> </servlet - mapping> <servlet - mapping> <servlet - name>compteur</ servlet - name> <url - pattern>/ Servlet / Compteur</url - pattern> </servlet - mapping> </web - app> Thierry Lecroq (Univ. Rouen) Servlets 47 / 69

48 Partage du contrôle (1/8) Principe d'invocation Appel d'une ressource à partir d'une autre Servlet Deux types d'invocations possibles : l'inclusion la délégation L'interface ServletRequest met à disposition un distributeur de requête par URL absolue ou relative : RequestDispatcher getrequestdispatcher(string path) L'interface ServletContext met à disposition un distributeur de requête par nom au lieu d'une URL : RequestDispatcher getnameddispatcher(string name) Thierry Lecroq (Univ. Rouen) Servlets 48 / 69

49 Partage du contrôle (2/8) RequestDispatcher Deux méthodes importantes Il y a transmission des objets requête et réponse void forward(servletrequest req, ServletResponse rep) : délègue totalement à la ressource appelée, la réponse sera celle de la ressource void include(servletrequest req, ServletResponse rep) : invoque et inclut la réponse de la ressource à la réponse de la servlet Il est possible d'ajouter de nouveaux attributs à la requête Thierry Lecroq (Univ. Rouen) Servlets 49 / 69

50 Partage du contrôle (3/8) Délégation Ache.java import java. io.*; import java. util.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s Affiche extends HttpServlet { p u b l i c v o i d doget ( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { reponse. setcontenttype ("text /html ; charset=utf -8 "); PrintWriter out = reponse. getwriter () ; out. println ("<html >"); out. println ("<head >"); out. println ("<title >Exemple de delegation </ title >"); out. println (" </head >"); out. println ("<body >"); out. println ("<p > <b > Nombre d 'espaces : </b >"+ requete. getattribute (" resultat ")+" </p >") ; out. println ("<p ><b > Phrase : </b >\" "+ requete. getparameter (" phrase ")+" \" </p >"); out. println (" </body >"); Thierry Lecroq (Univ. Rouen) Servlets 50 / 69

51 Partage du contrôle (4/8) Délégation AnalyseTexte.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s AnalyseTexte extends HttpServlet { p u b l i c v o i d doget ( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { String phrase = requete. getparameter (" phrase "); String url ; i f ( phrase!= n u l l &&! phrase. trim (). equals ("")) url = "/ Servlet / Affiche "; e l s e url = "/ delegation.html "; requete. setattribute (" resultat ", ""+ calculnbmotif (" ", phrase )); RequestDispatcher rd = requete. getrequestdispatcher (url ); rd. forward (requete, reponse ); Thierry Lecroq (Univ. Rouen) Servlets 51 / 69

52 Partage du contrôle (5/8) Délégation AnalyseTexte.java i n t calculnbmotif ( String motif, String phrase ) { i n t nbmotifs = 0; i n t indice = 0; w h i l e (( indice = phrase. indexof (motif, indice ))!= -1) { nbmotifs ++; indice ++; r e t u r n nbmotifs ; Utilité Couramment utilisée pour déléguer l'achage, le traitement étant fait dans la première servlet. Le résultat est transmis à une autre servlet via des attributs puis est aché. Thierry Lecroq (Univ. Rouen) Servlets 52 / 69

53 Partage du contrôle (6/8) Inclusion Ache.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; import java.util. Locale ; p u b l i c c l a s s Affiche extends HttpServlet { p u b l i c v o i d doget ( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { requete. setcharacterencoding ("ISO "); String phrase = requete. getparameter (" phrase "); String caracteres = requete. getparameter (" caracteres "); i f ( phrase == n u l l phrase. trim (). equals ("")) { RequestDispatcher rd = requete. getrequestdispatcher ("/ inclusion.html "); rd. forward (requete, reponse ); return ; reponse. setcontenttype ("text /html ; charset=iso "); reponse. setlocale (new Locale ( Locale. FRENCH. getlanguage (), Locale. FRANCE. getcountry () ) ); PrintWriter out = reponse. getwriter () ; out. println ("<html >"); out. println ("<head >"); out. println ("<title > Exemple d 'inclusion </title >"); out. println (" </head >"); out. println ("<body >"); Thierry Lecroq (Univ. Rouen) Servlets 53 / 69

54 Partage du contrôle (7/8) Inclusion Ache.java out. println ("<p ><b > Phrase : </b >\" "+ requete. getparameter (" phrase ")+" \" </p >"); for ( int i =0; i < caracteres. length () ; i ++) { requete. setattribute (" motif ", ""+ caracteres. charat (i)); RequestDispatcher rd = requete. getrequestdispatcher ("/ Servlet / Analyse "); out. println ("<p > <b > Nombre de \" "+ caracteres. charat (i)+" \" :</b >"); rd. include (requete, reponse ); out. println (" </p >"); out. println (" </body >"); Thierry Lecroq (Univ. Rouen) Servlets 54 / 69

55 Partage du contrôle (8/8) Inclusion AnalyseTexte.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s AnalyseTexte extends HttpServlet { p u b l i c v o i d doget ( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { String phrase = requete. getparameter (" phrase "); String motif = ( String ) requete. getattribute (" motif "); PrintWriter out = reponse. getwriter () ; out. println ( calculnbmotif (motif, phrase )); i n t calculnbmotif ( String motif, String phrase ) { i n t nbmotifs = 0; i n t indice = 0; w h i l e (( indice = phrase. indexof (motif, indice ))!= -1) { nbmotifs ++; indice ++; r e t u r n nbmotifs ; Thierry Lecroq (Univ. Rouen) Servlets 55 / 69

56 Session (1/4) API de suivi de session Chaque session d'un client est gérée via un objet HttpSession Récupération d'une session par HttpServletRequest : HttpSession getsession() Quelques méthodes de HttpSession : void setattribute(string name, Object value) void getattribute(string name) void removeattribute(string name) void setmaxinactiveinterval(int secs) void invalidate() Thierry Lecroq (Univ. Rouen) Servlets 56 / 69

57 Session (2/4) Exemple : Compteur & Session Timeout <web - app>... <session - config> <session - timeout>10</session - timeout> <! -- temps en minutes --> </session - config>... </web - app> CompteurSession.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; import java.util. Locale ; p u b l i c c l a s s CompteurSession extends HttpServlet { p r i v a t e s t a t i c i n t compteur = 1; p u b l i c v o i d doget ( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { String message =" Vous êtes éàdj venu "; HttpSession session = req. getsession () ; Thierry Lecroq (Univ. Rouen) Servlets 57 / 69

58 Session (3/4) Exemple : Compteur & Session CompteurSession.java êéà i f ( session. getattribute (" DejaVenu ") == n u l l ) { session. setattribute (" DejaVenu "," dejavenu "); message =" Bienvenue "; compteur ++; res. setcontenttype ("text /html ; charset=utf -8 "); res. setlocale (new Locale ( Locale. FRENCH. getlanguage (), Locale. FRANCE. getcountry () )); PrintWriter out = res. getwriter () ; out. println ("<head >"); out. println ("<title > Compteur à Session </title >"); out. println (" </head >"); out. println ("<body >"); out. println ("<h1 >"+ compteur +" </h1 >"); out. println ("<h1 >"+ message +" </h1 >"); out. println ("<a href=' CompteurKiller '>The Session killer </a>"); out. println (" </body >"); Thierry Lecroq (Univ. Rouen) Servlets 58 / 69

59 Session (4/4) Compteur & Session CompteurSessionKiller.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; import java.util. Locale ; p u b l i c c l a s s CompteurSessionKiller extends HttpServlet { p u b l i c v o i d doget ( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { String message =" Vous n ' avez pas de session en cours "; HttpSession session = req. getsession () ; i f ( session. getattribute (" DejaVenu ")!= n u l l ) { message ="C 'est la morte session :) "; session. invalidate () ; res. setcontenttype ("text /html charset=utf -8 "); res. setlocale (new Locale ( Locale. FRENCH. getlanguage (), Locale. FRANCE. getcountry () )); PrintWriter out = res. getwriter () ; out. println ("<head >"); out. println ("<title > Compteur à Session </title >"); out. println (" </head >"); out. println ("<body >"); out. println ("<h1 >"+ message +" </h1 >"); out. println ("<a href=' Compteur '>Le retour du compteur!!! </a>"); out. println (" </body >"); Thierry Lecroq (Univ. Rouen) Servlets 59 / 69

60 Authentication (1/10) Méthodes d'authentication 2 méthodes d'identication Utilisation des mécanismes d'authentication du serveur La gestion des comptes et mots de passe dépend du serveur d'applications (pour Tomcat gestion des comptes dans conf/tomcat-users.xml) Authentication personnalisée gérée par des servlets La gestion des comptes et mots de passe est laissée au développeur Problème principal : mots de passe en clair Solution : crypter le canal de communication (HTTPS) Thierry Lecroq (Univ. Rouen) Servlets 60 / 69

61 Authentication (2/10) Authentication par le serveur information.html <? xml version=" 1.0 " encoding="iso "? > <!DOCTYPE html PUBLIC " -// W3C // DTD XHTML 1.0 Strict // EN " "DTD /xhtml1 - strict.dtd "> <html > <head > < t i t l e > Information secrete </ t i t l e > </head > <body > <a href =" Servlet / InformationSecrete ">Lien vers une information secrete... </a><br /> < hr / > </body > </ html > Pour Tomcat : tomcat-users.xml dans conf <?xml version = '1.0 ' encoding= 'utf -8 '? > <tomcat - users> < role rolename =" prof "/ > < role rolename =" etudiant "/> < user username =" lecroq " password =" lecroq " roles ="prof "/> < user username =" anonyme " password =" anonyme " roles =" etudiant "/> < user username ="tt " password ="tt " roles =" etudiant "/> </tomcat - users> Thierry Lecroq (Univ. Rouen) Servlets 61 / 69

62 Authentication (3/10) Authentication par le serveur InformationSecrete.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s InformationSecrete extends HttpServlet { p u b l i c v o i d doget ( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { res. setcontenttype ("text /html ; charset=iso "); PrintWriter out = res. getwriter () ; out. println ("<html >"); out. println ("<head >"); out. println ("<title >Information Secrete </ title >"); out. println (" </head >"); out. println ("<body >"); out. println ("<h1>contrepetrie belge </h1>"); out. println ("<p> \" Il fait beau et chaud.\" </p>"); out. println (" </body >"); Thierry Lecroq (Univ. Rouen) Servlets 62 / 69

63 Authentication (4/10) Authentication par le serveur : web.xml web.xml <?xml version =" 1.0 " encoding="iso "? > <!DOCTYPE web -app PUBLIC " -// Sun Microsystems, Inc.// DTD Application web 2.3// EN " " file: /// opt / j2sdkee /conf /web - app_2_3.dtd "> <web - app> < servlet > <servlet - name>informationsecrete </ servlet - name> <servlet - class>informationsecrete </servlet - class> </ servlet > <servlet - mapping> <servlet - name>informationsecrete </ servlet - name> <url - pattern>/ Servlet / InformationSecrete </url - pattern> </servlet - mapping> Thierry Lecroq (Univ. Rouen) Servlets 63 / 69

64 Authentication (5/10) Authentication par le serveur : web.xml web.xml <security - constraint> <web -resource - collection> <web - resource - name>contrepetrie </web - resource - name> <url - pattern>/ Servlet / InformationSecrete </url - pattern> <http - method>get</http - method> <http - method>post</http - method> </web -resource - collection> <auth - constraint > <role - name>prof</ role - name> </auth - constraint> </security - constraint> <login - config> <auth - method>basic</auth - method> <realm - name>contrepetrie </ realm - name> </login - config> <security - role> <role - name>prof</ role - name> </ security - role> </web - app> Thierry Lecroq (Univ. Rouen) Servlets 64 / 69

65 Authentication (6/10) Authentication par formulaire Pour Tomcat : tomcat-users.xml dans conf <?xml version = '1.0 ' encoding= 'utf -8 '? > <tomcat - users> < role rolename =" prof "/ > < role rolename =" etudiant "/> < user username =" lecroq " password =" lecroq " roles ="prof "/> < user username =" anonyme " password =" anonyme " roles =" etudiant "/> < user username ="tt " password ="tt " roles =" etudiant "/> </tomcat - users> information.html <? xml version=" 1.0 " encoding="iso "? > <!DOCTYPE html PUBLIC " -// W3C // DTD XHTML 1.0 Strict // EN " "DTD /xhtml1 - strict.dtd "> <html > <head > < t i t l e > Information secrete </ t i t l e > </head > <body > < hr > <a href =" Servlet / InformationSecrete ">Lien vers l ' information secrete... </a><br > < hr > </body > </ html > Thierry Lecroq (Univ. Rouen) Servlets 65 / 69

66 Authentication (7/10) Authentication par formulaire InformationSecrete.java import java. io.*; import javax. servlet.*; import javax. servlet.http.*; p u b l i c c l a s s InformationSecrete extends HttpServlet { p u b l i c v o i d doget ( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { res. setcontenttype ("text /html "); PrintWriter out = res. getwriter () ; out. println ("<html >"); out. println ("<head >"); out. println ("<title >Information secrete </ title >"); out. println (" </head >"); out. println ("<body >"); out. println ("<h1 > Contrepetrie </h1 >"); out. println ("<p >\" Je glisse dans la piscine \" </p >"); out. println (" </body >"); Thierry Lecroq (Univ. Rouen) Servlets 66 / 69

67 Authentication (8/10) Authentication par formulaire web.xml <?xml version =" 1.0 " encoding="iso "? > <!DOCTYPE web -app PUBLIC " -// Sun Microsystems, Inc.// DTD Application web 2.3// EN " " file: /// opt / j2sdkee /conf /web - app_2_3.dtd "> <web - app> < servlet > <servlet - name>informationsecrete </ servlet - name> <servlet - class>informationsecrete </servlet - class> </ servlet > <servlet - mapping> <servlet - name>informationsecrete </ servlet - name> <url - pattern>/ Servlet / InformationSecrete </url - pattern> </servlet - mapping> <security - constraint> <web -resource - collection> <web - resource - name>contrepetrie </web - resource - name> <url - pattern>/ Servlet / InformationSecrete </url - pattern> <http - method>get</http - method> <http - method>post</http - method> </web -resource - collection> <auth - constraint > <role - name>prof</ role - name> </auth - constraint> </security - constraint> Thierry Lecroq (Univ. Rouen) Servlets 67 / 69

68 Authentication (9/10) Authentication par formulaire web.xml <login - config> <auth - method>form</auth - method> <form -login - config> <form -login -page>/ login.html</form -login -page> <form -error -page>/ erreur.html</form -error -page> </form -login - config> </login - config> <security - role> <role - name>prof</ role - name> </ security - role> </web - app> erreur.html <? xml version=" 1.0 " encoding="iso "? > <!DOCTYPE html PUBLIC " -// W3C // DTD XHTML 1.0 Strict // EN " "DTD /xhtml1 - strict.dtd "> <html > <head >< t i t l e > Authentification par formulaire </ t i t l e ></head > <body > <hr ><h1>erreur d ' authentification </h1><hr > </body > </ html > Thierry Lecroq (Univ. Rouen) Servlets 68 / 69

69 Authentication (10/10) Authentication par formulaire login.html <? xml version=" 1.0 " encoding="iso "? > <!DOCTYPE html PUBLIC " -// W3C // DTD XHTML 1.0 Strict // EN " "DTD /xhtml1 - strict.dtd "> <html > <head > < t i t l e > Authentification par formulaire </ t i t l e > </head > <body > < hr ><form action =" j_security_check " method="post "> Login : < i n p u t type ="text " name=" j_username ">< br /> Pass : < i n p u t type =" password " name=" j_password ">< br /> < i n p u t type =" submit "> </ form >< hr / > </body > </ html > Thierry Lecroq (Univ. Rouen) Servlets 69 / 69

Applications Web. Cours 2: Introduction J2EE Servlets et JSP. Khaled Khelif

Applications Web. Cours 2: Introduction J2EE Servlets et JSP. Khaled Khelif Applications Web Cours 2: Introduction J2EE Servlets et JSP Khaled Khelif 1 Rappel Web statique vs. Web dynamique Principe des applications web Protocole HTTP : requêtes en mode texte Développement d applications

Plus en détail

Applications Web (Java)

Applications Web (Java) Applications Web (Java) Mohamed Quafafou 4A Polytech'Marseille mohamed.quafafou@univ-amu.fr 1 Servlets [Bases Exemples] 2 Java Servlets Java Servlet est une extension générique de serveur qui signifie

Plus en détail

Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. L3 Pro Informatique - 2010-2011

Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. L3 Pro Informatique - 2010-2011 1 / 34 Développement Web - Servlet Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer L3 Pro Informatique - 2010-2011 2 / 34 Plan Plan 1 Introduction 2 Servlet

Plus en détail

Web Tier : déploiement de servlets

Web Tier : déploiement de servlets Web Tier : déploiement de servlets 1 / 35 Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation

Plus en détail

Programmation servlet

Programmation servlet Programmation servlet Olivier Aubert 1/23 Références http://developer.java.sun.com/developer/onlinetraining/servlets/fundamenta http://www.servlets.com http://java.sun.com/products/jsp/index.html http://www.servletcentral.com/

Plus en détail

TP 3 Outils de programmation Web

TP 3 Outils de programmation Web TP 3 Outils de programmation Web L'objectif de ce TP est de bien comprendre et maîtriser la technologie des servlets. La maîtrise de ces briques de base doit vous permettre de construire de larges applications

Plus en détail

Partie 2.2: Servlet et Tomcat

Partie 2.2: Servlet et Tomcat Partie 2.2: Servlet et Tomcat 1 Plan du cours Servlets Présentation Exemple 2 Plan du cours Tomcat Des servlets à Tomcat: pourquoi Tomcat? Architecture Tomcat Installation et configuration de Tomcat Configuration

Plus en détail

Architecture J2EE. Thierry Lecroq (merci à Alexandre Pauchet (INSA Rouen)) Université de Rouen FRANCE. Thierry Lecroq (Univ. Rouen) J2EE 1 / 16

Architecture J2EE. Thierry Lecroq (merci à Alexandre Pauchet (INSA Rouen)) Université de Rouen FRANCE. Thierry Lecroq (Univ. Rouen) J2EE 1 / 16 Architecture J2EE Thierry Lecroq (merci à Alexandre Pauchet (INSA Rouen)) Université de Rouen FRANCE Thierry Lecroq (Univ. Rouen) J2EE 1 / 16 Plan 1 Historique 2 Architecture J2EE 3 J2EE et applications

Plus en détail

Partie 7 : Le développement d'applications web

Partie 7 : Le développement d'applications web Partie 7 : Le développement d'applications web Cette partie contient plusieurs chapitres : Les servlets : plonge au coeur de l'api servlet qui est un des composants de base pour le développement d'applications

Plus en détail

Applications Web et servlets Java

Applications Web et servlets Java Département de génie logiciel et des TI LOG660 - Base de données haute performance Applications Web et servlets Java Application Web Une application Web répartie sur trois couches (three-tier Web application)

Plus en détail

Programmation Web Avancée JSP

Programmation Web Avancée JSP 1/50 Programmation Web Avancée JSP Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F-93017

Plus en détail

Environnements de Développement

Environnements de Développement Institut Supérieur des Etudes Technologiques de Mahdia Unité d Enseignement : Environnements de Développement BEN ABDELJELIL HASSINE Mouna m.bnaj@yahoo.fr Développement des systèmes d Information Syllabus

Plus en détail

NOUVELLES TECHNOS DU WEB INTRODUCTION. LI385 - Nouvelles Technologies du web

NOUVELLES TECHNOS DU WEB INTRODUCTION. LI385 - Nouvelles Technologies du web NOUVELLES TECHNOS DU WEB INTRODUCTION LI385 - Nouvelles Technologies du web Me contacter Jean-Loup Guillaume Jean-loup.guillaume@lip6.fr 0144278844 Les supports sur : http://jlguillaume.free.fr/www/ Contenu

Plus en détail

TD4 : Wikis, Servlets & Projet

TD4 : Wikis, Servlets & Projet Université Bordeaux 1 T.D. License 3 Informatique 2007 2008 TD4 : Wikis, Servlets & Projet L objet de cette séance est de vous familiariser avec les sockets et les servlets, et d introduire le projet.

Plus en détail

Le développement d applications Web

Le développement d applications Web Le développement d applications Web Plan Principes des applications Web Origine et utilité des Servlets Présentation des Servlets Les JSP La Standard TAG Library Servlet, JSP et accès aux SGBD Les technologies

Plus en détail

Tarak CHAARI Application Web en Java ISECS 2

Tarak CHAARI Application Web en Java ISECS 2 Programmation d Application Web avec Java Tarak CHAARI Tarak.chaari@isecs.rnu.tn Université de Sfax, 2009-20102010 Tarak CHAARI Application Web en Java Version adaptée ISECS du cours de Mr Walid MAHDI

Plus en détail

1 Introduction à Apache Maven

1 Introduction à Apache Maven IUT Bordeaux 1 - Département Informatique Semestre 4 JEE 20112012 TP JEE (0) Introduction à MAVEN 1 Introduction à Apache Maven Les projets Java (surtout JEE) ont la particularité de dépendre de beaucoup

Plus en détail

Les servlets Le langage Java Les Servlets XVII-1 JMF

Les servlets Le langage Java Les Servlets XVII-1 JMF Les Servlets XVII-1 servlet =? Une servlet est un programme (plug-in) à ajouter à un serveur (quel qu'il soit). Ce cours a trait à la programmation Java coté serveur (J2EE ) Pour l'instant les serveurs

Plus en détail

Implémentée sous forme de JavaBean ou EJB, c est dans cette couche que l on retrouve l ensemble des traitements d une application.

Implémentée sous forme de JavaBean ou EJB, c est dans cette couche que l on retrouve l ensemble des traitements d une application. Introduction Nous allons parler, dans ce document consacré aux architectures multi-tiers en environnement J2EE, de 3 des cinq couches les plus représentatives. Faisons tout d'abord un petit rappel sur

Plus en détail

Plan. Environnement Client/Serveur. Cours 7 JavaServer Pages (1) JSP. Programmation Web coté serveur

Plan. Environnement Client/Serveur. Cours 7 JavaServer Pages (1) JSP. Programmation Web coté serveur Plan Environnement Client/Serveur Cours 7 JavaServer Pages (1) kn@lri.fr 7.1 Principe 7.2 Rappels HTTP 7.3 Le serveur web Tomcat Programmation Web coté serveur JSP 2/28 (rappel) génération de pages-web

Plus en détail

La plate-forme J2EE LPRO CMSII. Olivier Flauzac. olivier.flauzac@univ-reims.fr

La plate-forme J2EE LPRO CMSII. Olivier Flauzac. olivier.flauzac@univ-reims.fr La plate-forme J2EE LPRO CMSII Olivier Flauzac olivier.flauzac@univ-reims.fr Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 1 / 71 Plan 1 Java? 2 Architecture des applications

Plus en détail

Java pour le développement d applications Web : Java EE Servlets

Java pour le développement d applications Web : Java EE Servlets Java pour le développement d applications Web : Java EE Servlets Mickaël BARON - 2007 mailto:baron.mickael@gmail.com ou mailto:mickael.baron@serli.com SERLI informatique SERLI : www.serli.com Société de

Plus en détail

TP2. Mail et servlet. Quel port utilise smtp? A quoi servent les commandes HELO, MAIL FROM:, RCPT TO:, DATA?

TP2. Mail et servlet. Quel port utilise smtp? A quoi servent les commandes HELO, MAIL FROM:, RCPT TO:, DATA? Université Paris 7 M2 II Protocole Internet 1 Protocole SMTP TP2 Mail et servlet 1. Le protocole SMTP est définit dans la RFC 821 (mise à jour dans la RFC 2821). Le format des messages est spécifié dans

Plus en détail

Serveurs Web dynamiques

Serveurs Web dynamiques Serveurs Web dynamiques Daniel Hagimont Laurent Broto IRIT/ENSEEIHT 27 février 2011 1 / 50 Copyright (c) 2010 Daniel Hagimont & Laurent Broto. Permission is granted to copy, distribute and/or modify this

Plus en détail

Ala Eddine BEN SALEM. T.P. 2 Servlet

Ala Eddine BEN SALEM. T.P. 2 Servlet EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 2 Servlet 1. Création d'un projet Web: A l'aide d'eclipse, créer un nouveau projet «sampleservlet» avec comme environnement d'exécution le serveur Tomcat installé

Plus en détail

TD6 Initiation aux EJB3 avec Eclipse Ecriture d une application J2EE complète

TD6 Initiation aux EJB3 avec Eclipse Ecriture d une application J2EE complète TD6 Initiation aux EJB3 avec Eclipse Ecriture d une application J2EE complète Nous allons écrire une application J2EE qui permet dans un navigateur web de gérer des contacts. Pour cela, nous allons suivre

Plus en détail

SIMOTION - Servlets. Introduction 1. Fonctions implémentées 2. Contenu de la livraison 3. Installation 4. Implémentation de l'api Servlet

SIMOTION - Servlets. Introduction 1. Fonctions implémentées 2. Contenu de la livraison 3. Installation 4. Implémentation de l'api Servlet Introduction 1 Fonctions implémentées 2 Contenu de la livraison 3 Installation 4 Manuel de programmation Implémentation de l'api Servlet 5 Elaboration de servlets utilisateur 6 Fichier de configuration

Plus en détail

EISTI 2008-2009 Examen Java EE. Q1 : cycle de vie d un servlet (2 points)

EISTI 2008-2009 Examen Java EE. Q1 : cycle de vie d un servlet (2 points) EISTI 2008-2009 Examen Java EE 1h30 Aucun document autorisé NOM : PLACE : PRENOM : GROUPE TD : Q1 : cycle de vie d un servlet (2 points) Donnez le diagramme d état représentant le cycle de vie d un servlet

Plus en détail

Descripteur de déploiement

Descripteur de déploiement Chapitres traités Application Web Descripteur de déploiement Lorsque nous avons étudiés les servlets, nous avons déjà rencontrés et utilisés les descripteurs de déploiement. Dans ce chapitre, nous allons

Plus en détail

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.

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. ASTRIUM - Toulouse JEE Formation 2013 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. Figure 1 Architecture

Plus en détail

C. Java et le Web. Olivier Curé - UMLV [page 232 ]

C. Java et le Web. Olivier Curé - UMLV [page 232 ] C. Java et le Web Olivier Curé - UMLV [page 232 ] Plan C.1. Java côté client : Applet C.2. Java côté serveur : Servlet et JSP Olivier Curé - UMLV [page 233 ] Java côté client : Applet Olivier Curé - UMLV

Plus en détail

6. JSP. Cours Web. Java Server Pages (JSP) 6. JSP 6. JSP. Java Server Pages (JSP) Lionel Seinturier. Université Pierre & Marie Curie

6. JSP. Cours Web. Java Server Pages (JSP) 6. JSP 6. JSP. Java Server Pages (JSP) Lionel Seinturier. Université Pierre & Marie Curie Cours Web Java Server Pages (JSP) Lionel Seinturier Université Pierre & Marie Curie Lionel.Seinturier@lip6.fr 11/7/02 Java Server Pages (JSP) Programme Java s'exécutant côté serveur Web servlet prog. "autonome"

Plus en détail

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 52

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 52 Java et Objet Amélie Lambert 2014-2015 Amélie Lambert 2014-2015 1 / 52 Chapitre 10 Le langage JavaServer Pages (JSP) et le modèle de composants Java (Java beans) Amélie Lambert 2014-2015 2 / 52 Plan du

Plus en détail

Tarak CHAARI Application Web en Java ISECS 2

Tarak CHAARI Application Web en Java ISECS 2 Programmation d Application Web avec Java Tarak CHAARI tarak.chaari@isecs.rnu.tn Université de Sfax, 2009-20102010 Tarak CHAARI Application Web en Java Version adaptée ISECS du cours de Mr Walid MAHDI

Plus en détail

Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. M2 CDS2I - 4 février 2010

Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. M2 CDS2I - 4 février 2010 1 / 24 Développement Web - Servlet Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer M2 CDS2I - 4 février 2010 2 / 24 Plan Plan 1 2 Le modèle MVC 3 Structure

Plus en détail

JSP/Servlets Enchaînement de pages. B. Mermet 2009

JSP/Servlets Enchaînement de pages. B. Mermet 2009 JSP/Servlets Enchaînement de pages B. Mermet 2009 Spécification d'une adresse cible Adresse absolue protocole://adresse Adresse relative à l'application /adressepage Adresse relative à la page adressepage

Plus en détail

HTTP 1.1. HyperText Transfer Protocol ... ... TCP IP ...

HTTP 1.1. HyperText Transfer Protocol ... ... TCP IP ... HTTP 1.1 Place de http dans le modèle osi : HyperText Transfer Protocol...... TCP IP...... HTTP est un protocole «sans état» : chaque page WEB est transmise dans une connexion séparée (sauf pour les connections

Plus en détail

MIF13 Programmation Web

MIF13 Programmation Web MIF13 Programmation Web TECHNOLOGIES CÔTÉ SERVEUR (HTTP ET SERVEUR WEB) L I O N E L M É D I N I S E P T E M B R E - D É C E M B R E 2 0 1 4 Plan du cours Application Web Retour sur la définition Différents

Plus en détail

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

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4 Les exemples cités tout au long de cet ouvrage sont téléchargeables à l'adresse suivante : http://www.editions-eni.fr. Saisissez la référence ENI de l'ouvrage EP5EJAV dans la zone de recherche et validez.

Plus en détail

Servlets et JSP. Introduction. Introduction. Introduction

Servlets et JSP. Introduction. Introduction. Introduction Introduction Servlets et JSP Gaël Thomas gael.thomas@lip6.fr (basé sur un cours de Lionel Seinturier) Université Pierre et Marie Curie Master Informatique M2 Spécialité SAR Gestion de page HTML à contenu

Plus en détail

Java EE Cours 1. Présentation Générale. Cours de 2 e année ingénieur

Java EE Cours 1. Présentation Générale. Cours de 2 e année ingénieur Java EE Cours 1 Présentation Générale Cours de 2 e année ingénieur 1 Présentation du cours Objectifs Développement d applications Web robustes «Ne pas réinventer la roue» utilisation d un framework 1 Apprentissage

Plus en détail

Java EE Cours 2. Les Servlets. Cours de 2 e année ingénieur

Java EE Cours 2. Les Servlets. Cours de 2 e année ingénieur Java EE Cours 2 Les Servlets Cours de 2 e année ingénieur 1 Servlets Une servlet est une application Java qui permet de créer dynamiquement des données au sein d'un serveur HTTP. Ces données sont le plus

Plus en détail

Les architectures 3-tiers Partie I : les applications WEB

Les architectures 3-tiers Partie I : les applications WEB Les architectures 3-tiers Partie I : les applications WEB 1 Evolutions logicielles Des objets aux composants... Objets JavaBeans, Objets ActiveX, Objets COM,... 1 Evolutions logicielles Des objets aux

Plus en détail

Architecture Orientée Service, JSON et API REST

Architecture Orientée Service, JSON et API REST UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API

Plus en détail

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

Java EE - Cours 3. Cours de 2 e année ingénieur Spécialisation «Génie Informatique» Java EE - Cours 3 Cours de 2 e année ingénieur Spécialisation «Génie Informatique» 1 Problème d une Servlet : 1. C est laid! HTML dans Java out.println(doctype); out.println(""); out.println("\nclock\n");

Plus en détail

Noël Macé Formateur et Consultant indépendant expert Unix et FOSS http://www.noelmace.com. Java EE. Tomcat

Noël Macé Formateur et Consultant indépendant expert Unix et FOSS http://www.noelmace.com. Java EE. Tomcat Noël Macé Formateur et Consultant indépendant expert Unix et FOSS http://www.noelmace.com Java EE Tomcat Licence Creative Commons Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative

Plus en détail

Architectures n-tiers et applications Web Outils Java et applications Web Servlets État d un servlet Les JSP Accès aux BD avec servlets Conception

Architectures n-tiers et applications Web Outils Java et applications Web Servlets État d un servlet Les JSP Accès aux BD avec servlets Conception Plan 93 Architectures n-tiers et applications Web Outils Java et applications Web Servlets État d un servlet Les JSP Accès aux BD avec servlets Conception Application Web en Java 94 Intérêts de Java et

Plus en détail

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

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. Note technique W4 Engine Extension SSO Java Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. 1 Présentation 3 2 Custom SSO Java 4 3 Bilan 10 Sommaire Référence

Plus en détail

Travaux Pratiques (Licence Pro) Servlet/JSP (MVC) & Web Services. --- Site Web d un club de tennis

Travaux Pratiques (Licence Pro) Servlet/JSP (MVC) & Web Services. --- Site Web d un club de tennis Travaux Pratiques (Licence Pro) Servlet/JSP (MVC) & Web Services --- Site Web d un club de tennis ETAPE 1 : Services locaux ( servlets / JSP ) Services offerts par le site web a chaque adhérent du club

Plus en détail

Problématique. Développement Web 2. Problématique. Jetty Création d un serveur Web

Problématique. Développement Web 2. Problématique. Jetty Création d un serveur Web Communication client/serveur Comet Problématique Problématique Développement Web 2 Problématique : Nous souhaitons réaliser un tchat Les clients se connectent au serveur; Les clients peuvent discuter;

Plus en détail

Java EE. Cours de 2 e année ingénieur Spécialisation «Génie Informatique» fabien.romeo@fromeo.fr http://www.fromeo.fr

Java EE. Cours de 2 e année ingénieur Spécialisation «Génie Informatique» fabien.romeo@fromeo.fr http://www.fromeo.fr Java EE Cours de 2 e année ingénieur Spécialisation «Génie Informatique» fabien.romeo@fromeo.fr http://www.fromeo.fr Introduction aux JSP JSP Les servlets facilitent le traitement avec java des requêtes

Plus en détail

Le Suivi de session sous J2EE

Le Suivi de session sous J2EE J2EE : Suivi de Sessions Jean-Noël Sorenti. Année 2002/2003 Le Suivi de session sous J2EE ISI 1022 : 1 J2EE : Suivi de Sessions Une application Web peut avoir besoin de conserver des informations avec

Plus en détail

Le développement d applications Web. François Charoy Pascal Molli Pascal Urso

Le développement d applications Web. François Charoy Pascal Molli Pascal Urso Le développement d applications Web François Charoy Pascal Molli Pascal Urso License Creative Commons! Cette création est mise à disposition selon le Contrat Paternité-Pas d'utilisation Commerciale-Partage

Plus en détail

Java EE. Cours de 2 e année ingénieur Spécialisation «Génie Informatique» fabien.romeo@fromeo.fr http://www.fromeo.fr

Java EE. Cours de 2 e année ingénieur Spécialisation «Génie Informatique» fabien.romeo@fromeo.fr http://www.fromeo.fr Java EE Cours de 2 e année ingénieur Spécialisation «Génie Informatique» fabien.romeo@fromeo.fr http://www.fromeo.fr Présentation du cours Pôle GL-I2 «Génie logiciel avancé» 20h sur 8 semaines Objectifs

Plus en détail

Le développement d applications Web. François Charoy Pascal Molli Pascal Urso

Le développement d applications Web. François Charoy Pascal Molli Pascal Urso Le développement d applications Web François Charoy Pascal Molli Pascal Urso License Creative Commons Cette création est mise à disposition selon le Contrat Paternité-Pas d'utilisation Commerciale-Partage

Plus en détail

Traitement des données de formulaires. Accès aux BD avec JDBC Servlets - M. Baron - Page

Traitement des données de formulaires. Accès aux BD avec JDBC Servlets - M. Baron - Page Organisation du cours sur les Servlets Servlets et API Traitement des données de formulaires Architecture de développement Cycle de vie Suivi de session Collaboration de Servlets Sécurité : authentification

Plus en détail

Exercice sur les EJB Session avec état

Exercice sur les EJB Session avec état Exercice sur les EJB Session avec état Soit un site de commerce électronique appartenant à un fournisseur de matériel informatique. Une page principale permet à l utilisateur de s inscrire, donc de saisir

Plus en détail

Plan. La plate-forme J2EE. Plan J2SE. Standard Edition. Master Informatique 2ème année. Olivier Flauzac. olivier.flauzac@univ-reims.

Plan. La plate-forme J2EE. Plan J2SE. Standard Edition. Master Informatique 2ème année. Olivier Flauzac. olivier.flauzac@univ-reims. Plan La plate-forme J2EE Master Informatique 2ème année Olivier Flauzac olivier.flauzac@univ-reims.fr Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 1 / 64 Olivier Flauzac (URCA)

Plus en détail

JavaServer Pages (JSP)

JavaServer Pages (JSP) JavaServer Pages (JSP) XVIII-1 Prérequis pour ce cours Ce cours a trait à la programmation Java coté serveur Il faut connaître un minimum de technologie J2EE Il faut connaître les servlets XVIII-2 Motivation

Plus en détail

Servlets (fin) Accès aux paramètres. GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header

Servlets (fin) Accès aux paramètres. GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header Servlets (fin) Accès aux paramètres GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header Masqué par l'api Méthode getparameter(), getparametervalues() [page de forumulaire]

Plus en détail

Utilisation de Jakarta Tomcat

Utilisation de Jakarta Tomcat ISI 1022 : Déploiement d applications Web Jean-Noël Sorenti. Année 2002/2003 Déploiement d application Web Utilisation de Jakarta Tomcat ISI 1022 : 1 ISI 1022 : Déploiement d applications Web Une application

Plus en détail

Programmation JAVA / J2EE

Programmation JAVA / J2EE Programmation JAVA / J2EE Auteur : François-Xavier SENNESAL Web: www.sennesal.fr Email: 1 SOMMAIRE 1. Rappels sur les fondamentaux du web 2. Mise en place de l environnement 3. Fondamentaux du langage

Plus en détail

Résumé de l'épisode précédent (Les Servlets)

Résumé de l'épisode précédent (Les Servlets) Résumé de l'épisode précédent (Les Servlets) XVII-1 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

Plus en détail

CSI 3540. Structures, techniques et normes du Web

CSI 3540. Structures, techniques et normes du Web CSI 3540 Structures, techniques et normes du Web Programmation côté serveur : Servlets Objectif: Introduction à la programmation côté serveur Introduction aux Servlets Lectures: Web Technologies (2007)

Plus en détail

Bypass et filtre sur les requêtes destinées à la servlet W4

Bypass et filtre sur les requêtes destinées à la servlet W4 Note technique W4 Engine Bypass et filtre sur les requêtes destinées à la servlet W4 Cette note technique décrit le filtre de contrôle du bypass de la servlet W4. Versions de W4 Engine concernées : 5.0

Plus en détail

C est quoi JSP? JSP = Java Server Pages

C est quoi JSP? JSP = Java Server Pages JSP = Java Server Pages C est quoi JSP? Une JSP est un fichier contenant du code HTML et des fragments de code Java exécutés sur le moteur de Servlets Comparable aux langages côtés serveur de type PHP,

Plus en détail

TUTORIEL Servlets et pages JSP avec Eclipse et Tomcat

TUTORIEL Servlets et pages JSP avec Eclipse et Tomcat TUTORIEL Servlets et pages JSP avec Eclipse et Tomcat Mots clés : programmation WEB, servlets, pages JSP, serveur web TOMCAT I.1 Objectifs On se propose ici de découvrir la programmation web en Java par

Plus en détail

J2EE. A.-E. Ben Salem. 09 Octobre 2011. LRDE and LIP6 1 / 15

J2EE. A.-E. Ben Salem. 09 Octobre 2011. LRDE and LIP6 1 / 15 J2EE A.-E. Ben Salem LRDE and LIP6 09 Octobre 2011 1 / 15 Plan 1 J2EE 2 Architecture Client/Serveur HTTP 3 Différence entre Web Statique et Web Dynamique 4 Web Dynamique avec un Serveur d applications

Plus en détail

Application de lecture de carte SESAM-Vitale Jeebop

Application de lecture de carte SESAM-Vitale Jeebop Application de lecture de carte SESAM-Vitale Jeebop Présentation Le module de lecture de carte SESAM-Vitale Jeebop est une application Java Web Start, c'est à dire une application Java qui se télécharge

Plus en détail

Kit d'intégration FAS+

Kit d'intégration FAS+ Guide d'intégration de l'application IAM - Annexe Kit d'intégration FAS+ Date 24/08/2012 Version 3.0 TABLE DES MATIÈRES 1 Introduction...3 2 Kit d'intégration FAS+...3 2.1 Pages JSP...4 2.2 Classes Java...7

Plus en détail

Introduction aux applets

Introduction aux applets Introduction aux applets M. Belguidoum Université Mentouri de Constantine Département Informatique M. Belguidoum (UMC) Programmation réseau 1 / 30 Plan 1 Quelques rappels 2 Principe de fonctionnement des

Plus en détail

APPLICATIONS JAVA. 3. JSP Java Server Pages. JSP - Java Server Pages Servlet. http://139.124.26.245/pi. Java Server Pages (JSP) IvMad, 2011-2013 2

APPLICATIONS JAVA. 3. JSP Java Server Pages. JSP - Java Server Pages Servlet. http://139.124.26.245/pi. Java Server Pages (JSP) IvMad, 2011-2013 2 APPLICATIONS JAVA JSP - Java Server Pages Servlet Java Server Pages (JSP) IvMad, 2011-2013 2 3. JSP Java Server Pages http://139.124.26.245/pi Java Server Pages (JSP) IvMad, 2011-2013 3 JSP - Introduction

Plus en détail

Module Client Serveur Web 2006 Cours, TD et TP sur PHP et Tomcat

Module Client Serveur Web 2006 Cours, TD et TP sur PHP et Tomcat Prénom : Module Client Serveur Web 2006 Cours, TD et TP sur PHP et Tomcat Nom : Merci de répondre aux questions fermées directement sur la présente feuille et aux questions ouvertes sur une feuille indépendante

Plus en détail

III. L environnement Web

III. L environnement Web III. L environnement Web Miage FC/A 2008 1 Au sommaire 1. Introduction 2. URL 3. HTTP 4. CGI 5. Servlets Miage FC/A 2008 2 1. Introduction WWW : World Wide Web 1989 - Tim Berners-Lee Mise en ligne de documentation

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

Frame m w e o w rk k STR T U R T U S T Confi o gur g e ur r r un e un nv n iro r nne o me m nt Axel KAMALAK

Frame m w e o w rk k STR T U R T U S T Confi o gur g e ur r r un e un nv n iro r nne o me m nt Axel KAMALAK Framework STRUTS Configurer un environnement Axel KAMALAK Outils nécessaires Eclipse Java EE IDE for Web Developers. Tomcat 5.5 Struts 1.3.10 JRE 6 Outils nécessaires Eclipse Java EE IDE for Web Developers.

Plus en détail

Le développement d applications Web. François Charoy Pascal Molli Pascal Urso

Le développement d applications Web. François Charoy Pascal Molli Pascal Urso Le développement d applications Web François Charoy Pascal Molli Pascal Urso License Creative Commons Cette création est mise à disposition selon le Contrat Paternité-Pas d'utilisation Commerciale-Partage

Plus en détail

HTML, pour aller plus loin

HTML, pour aller plus loin HTML, le langage du WEB Applets, Servlets,, JSP & J2EE / EJB IFT 6802 Commerce électronique Par Laurent Magnin Le Web se compose d'un maillage de pages, hébergées sur différents sites, reliées entre elles

Plus en détail

Programmation Web. Thierry Hamon

Programmation Web. Thierry Hamon 1/27 Programmation Web Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F-93017 Bobigny

Plus en détail

Groupe Eyrolles, 2005, ISBN : 2-212-11406-0

Groupe Eyrolles, 2005, ISBN : 2-212-11406-0 Groupe Eyrolles, 2005, ISBN : 2-212-11406-0 10 L atelier MyEclipse Eclipse facilite considérablement le développement Java en équipe. Son puissant éditeur, associé à des fonctionnalités de complétion de

Plus en détail

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

1. Installation d'un serveur d'application JBoss: EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 4 EJB3, Serveur d'application JBoss 1. Installation d'un serveur d'application JBoss: télécharger l'archive du serveur JBoss à l'adresse: http://sourceforge.net/projects/jboss/files/jboss/jboss-5.0.0.ga/jboss-5.0.0.ga.zip/download

Plus en détail

Traitement et navigation

Traitement et navigation 12 Traitement et navigation Au chapitre précédent, nous avons vu comment créer des pages web avec différentes technologies (HTML, JSP, JSTL, etc.) en insistant sur le fait que JSF est la spécification

Plus en détail

AP-5 TD n 2 J2EE 5 novembre 2013

AP-5 TD n 2 J2EE 5 novembre 2013 Objectifs Prérequis Gestion des informations temporaires, sessions et cookies JSP et servlets, mise en place d un contrôleur Java Runtime Environnement (http://www.java.com/fr/download/) (JRE Java 7) IDE

Plus en détail

Projet Java EE Approfondi

Projet Java EE Approfondi EISTI Projet Java EE Approfondi Manuel d installation du framework Stripes Amaury Languillat, Yann Gonzalez, Arnaud Recher, Vincent Laronde, Anys Mechkar 10 Manuel d installation Téléchargement On part

Plus en détail

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

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

Spring MVC. Implémentation du pattern MVC de type 2 dans Spring

Spring MVC. Implémentation du pattern MVC de type 2 dans Spring 7 Spring MVC La mise en pratique du patron de conception MVC (Model View Controller) offre une meilleure structuration du tiers de présentation des applications Java EE en dissociant les préoccupations

Plus en détail

Java Enterprise Edition. Concepts et pratique. Version 0.0.2. www.ncottin.net

Java Enterprise Edition. Concepts et pratique. Version 0.0.2. www.ncottin.net Java Enterprise Edition Concepts et pratique Version 0.0.2 www.ncottin.net Copyright 2009 Ce document est soumis à la dernière licence GNU FDL Table des matières Table des matières 1. Introduction...5

Plus en détail

TP 5 Serveur REST, tests et premier client REST

TP 5 Serveur REST, tests et premier client REST TP 5 Serveur REST, tests et premier client REST Xavier de Rochefort xderoche@labri.fr - labri.fr/~xderoche 13 mai 2014 Résumé Les derniers TP vous ont guidé dans ➊ la mise en place d un serveur REST avec

Plus en détail

Mise en œuvre de serveurs d application TD n o 2

Mise en œuvre de serveurs d application TD n o 2 Master IST-IE 2007 08 UE 203d Mise en œuvre de serveurs d application TD n o 2 1 Introduction Dans ce TD, vous regarderez le contenu d une application J2EE. Ensuite, vous utiliserez les pages JSP pour

Plus en détail

Technologies du Multimédia et du Web

Technologies du Multimédia et du Web 3 ème Année Licence appliquée Technologies du Multimédia et du Web MoezBEN HAJ HMIDA ISSAT Sousse 2009/2010 Plan Les systèmes e-services Évolution des architectures d applications Les architectures client/serveur

Plus en détail

Java côté serveur. Eugen Dedu Eugen.Dedu@pu-pm.univ-fcomte.fr http://lifc.univ-fcomte.fr/~dedu/ UFC, IUP 3ème année Montbéliard septembre 2004

Java côté serveur. Eugen Dedu Eugen.Dedu@pu-pm.univ-fcomte.fr http://lifc.univ-fcomte.fr/~dedu/ UFC, IUP 3ème année Montbéliard septembre 2004 Java côté serveur Eugen Dedu Eugen.Dedu@pu-pm.univ-fcomte.fr http://lifc.univ-fcomte.fr/~dedu/ UFC, IUP 3ème année Montbéliard septembre 2004 Plan Pages avec contenu mixte (Java Server Pages) beans Intégration

Plus en détail

T.P. 3 Base de données, JDBC et Mapping Objet-relationnel

T.P. 3 Base de données, JDBC et Mapping Objet-relationnel EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 3 Base de données, JDBC et Mapping Objet-relationnel L'objectif de ce TP est de vous faire pratiquer l'api JDBC qui permet d'accéder à une base de données

Plus en détail

Java Server Faces. Claude Duvallet 1/44. Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX

Java Server Faces. Claude Duvallet 1/44. Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX Claude.Duvallet@gmail.com http://litis.univ-lehavre.fr/ duvallet/ Claude Duvallet 1/44

Plus en détail

INF157 - Utilisation des Réseaux

INF157 - Utilisation des Réseaux INF157 - Utilisation des Réseaux Licence 3 Informatique Arnaud Pecher (repris par Damien Magoni) Bureau 322, Bâtiment A30, LaBRI Université de Bordeaux Licence 3 Informatique - Bordeaux 1/70 Univ Bx 1

Plus en détail

pac4j : la librairie de sécurité pour Java par Jérôme LELEU

pac4j : la librairie de sécurité pour Java par Jérôme LELEU pac4j : la librairie de sécurité pour Java par Jérôme LELEU www.parisjug.org Copyright @ 2014 ParisJug. Licence CC - Creatve Commons 2.0 France Paternité - Pas d'utlisaton Commerciale - Partage des Conditons

Plus en détail

Systèmes d information répartis TD1 initiation aux servlets avec Tomcat et Eclipse

Systèmes d information répartis TD1 initiation aux servlets avec Tomcat et Eclipse Systèmes d information répartis TD1 initiation aux servlets avec Tomcat et Eclipse Consignes Utilisez les distributions qui sont dans l archive distribuée en TD Respectez les versions qui sont données,

Plus en détail

PROGRAMMATION D APPLICATIONS WEB EN JAVA

PROGRAMMATION D APPLICATIONS WEB EN JAVA PROGRAMMATION D APPLICATIONS WEB EN JAVA Version 2 19/11/2008 Technologie utilisée : Java jre1.6.0_10, Java Runtime Environnement Java jdk1.6.0_10, Java Development Kit A native Java driver, Mysql-connector-java

Plus en détail

Création d'un projet Web avec Netbeans 1. Création de son projet Web

Création d'un projet Web avec Netbeans 1. Création de son projet Web 1. Création de son projet Web Web Application Web Next Nommer le projet propose une localisation des sources par défaut Laisser Set as Main Project Next Tomcat 6 serveur d'application par défaut Choisi

Plus en détail

Pooling de connexions. Olivier Curé - UMLV [page 1 ]

Pooling de connexions. Olivier Curé - UMLV [page 1 ] Pooling de connexions Olivier Curé - UMLV [page 1 ] Introduction Une connexion à une base de données est une ressource rare et coûteuse qui ne peut être partagée par des threads. Il faut donc réfléchir

Plus en détail

MANUEL DU KIT DE DEVELOPPEMENT DE CONNECTEURS Référence: W4JC_DEVKIT_020_FR

MANUEL DU KIT DE DEVELOPPEMENT DE CONNECTEURS Référence: W4JC_DEVKIT_020_FR W4 CONNECTORS FOR JAVA MANUEL DU KIT DE DEVELOPPEMENT DE CONNECTEURS Référence: W4JC_DEVKIT_020_FR Les prochaines mises à jour de ce document seront disponibles sur www.myw4.com W4 CONNECTORS FOR JAVA

Plus en détail