• Aucun résultat trouvé

L es s er v le ts

N/A
N/A
Protected

Academic year: 2022

Partager "L es s er v le ts"

Copied!
41
0
0

Texte intégral

(1)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 1/81

L es s er v le ts

(1ere partie)

Bibliographies: Les notes de cours sur les servlets est une revue litraire des documents mentionnésci-dessus. Plusieurs extraits ont été tirés ou traduits de ces rences. Cette revue tient compte desdernres mises à jour apportées au logiciel Tomcat et à la spécification (2.3) des servlets. Site web officiel de SUN sur les servlets: http://java.sun.com/products/servlet/

Des documents sur les servlets: http://www-sop.inria.fr/acacia/personnel/itey/Francais/Cours/PDF/servlets.pdfhttp://home.nordnet.fr/~fadelannoy/servlets.htmlhttp://java.sun.com/docs/books/tutorial/servlets/index.htmlhttp://java.sun.com/products/servlet/articles/tutorial/

Des documents sur Tomcat: http://jakarta.apache.org/tomcat/tomcat-4.0-doc/index.htmlhttp://darktigrou.free.fr/Servlets-book2_der/node1.html

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 2/81

Dans cetteprésentation, nous allons répondreauxquestions suivantes :

-C'est quoi une application web?-Qu'est ce qu'une servlet Java?-A quoi servent les servlets?-Quels sont les avantages et les inconvénients des servlets?-C'est quoi les différences entre les scripts CGI et les servlets?-A quoi ressemble le code d'une servlet?-Comment est constitué le paquetage Servlet?-Comment se déroulent les interactions avec des clients?-C'est quoi le cycle de vie d'une servlet?-Comment configurer Tomcat4.0.1?-Comment déployer une application dans Tomcat4.0.1?

(2)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 3/81

C 'e st q u o i u n a p p lic a tio n w eb ?

Une application web est constituée de 2 niveaux, le client émettant une requête et le serveur traitant cette requête.

Navigateur WebServeur Web soumissiond’une requête (2)

.. Scripts/Prg. serveur

Base de données Une forme à compter (1)

HTTPCGI traitement de la requête (3)

retourne un sultat (4)

Client Serveur

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 4/81

(1)Unserveur websoumetune forme d’undocument à compléter (une requête),

(2)Le client complète la forme et la retourne au serveur,

(3)Le serveur laréceptionne etlaredirige vers laservelt invoquée dans la page html. En exécutant cette requête, leprogramme peut communiquer avec une ou plusieurs bases

(3)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 5/81

de données sic’est nécessaire.Ainsidonc,une servlet analyseles données soumises, peut éventuellement sauvegardercelles-cioucollecterd'autrespour construiredynamiquement une page HTML.

(4)ces programmes retournent les résultats au serveur qu’il secharge de les transmettre au client.

Le client peut utiliser :

-un formulaire HTML, permettant de saisir les champs ou bienil peut y avoir validation via des scripts (javaScript) ;

-des applets et communiquer avec le serveur via dessockets/RMI.

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 6/81

Les requêtes http vers le serveur contiennent :

-l’url de la ressource à accéder,

-la requête GET pour extraire des informations sur le serveur,

-la requête POST pour modifier les données sur le serveur.

Le serveur identifie avec la requête le type d’environnement d’exploitation à charger en fonction de :

-l’extension du fichier (.cgi, .jsp etc.) ou

-le répertoire où il se trouve (cgi-bin/, servlet/ etc.).

(4)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 7/81

Le serveur charge par la suite l’environnement d’exécution Perl (cgi-perl), JVM (servlets) etc.

Le script ouprogrammepréciseletype ducontenu(HTML, images etc.) et intègre la réponse dans un flot de sortie.

Le navigateur définit letype MIME(l’encodage utilisé pour letransfert de documents multimédias à travers le réseau) texte/html audio/basic image/gif etc. et affiche les données en fonction.

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 8/81

Q u 'e st q u 'u n e se rv le t J a v a ?

Servlet : Server-side applet

Les servlets sont aux serveurs ce que sont les applets aux browsersmais sans interface graphique utilisateur …

Elles sont limitées à la puissance du langage HTML … par contre,elles ne sont pas astreintes aux mêmes règles de sécurité que les applets

Les servlets correspondent à des programmes Java normaux qui utilisent des modules supplémentaires (ainsi que les classes et lesméthodes associées) figurant dans l'API des servlets Java.

(5)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 9/81

Lesservletss'exécutent sur une machine de serveur Webàl'intérieur d'unserveur compatibleavecJava.Elles permettent l'extension des fonctions du serveur.

Une servlet peut être chargé :

-automatiquement lors du démarrage du serveur Web,

-lorsque le premier client demande les services de la servlet. Une fois chargées, les servlets restent actives dans l'attente d'autresrequêtes du client.

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 10/81

Les servlets permettent l'extension des fonctions du serveur grâce àlacréationd'unenvironnement de prestationde servicesde requête/réponse via le Web :

Un client envoie une requête au serveur. Ce dernier transmet auservlet les informations relatives à la requête. La servlet crééeensuite une réponse que le serveur renvoie au client.

Dans la mesure où il s'agit d'un programme Java :

-La servlet peut utiliser toutes les fonctions du langage Java lorsde la création de la réponse.

-Elle peut également communiquer avec des ressources externestels que des fichiers ou des bases de données, ou avec d'autres

(6)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 11/81

applications (également écrites en langage Java ou dans d'autreslangages), afinde créer laréponseetéventuellement desauvegarderdesinformations relativesà l'interactionrequête/réponse.

La réponseenvoyéeauclient peut donc êtreune réponsedynamique et unique conçue pour une interaction particulière et non une page HTML statique existante.

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 12/81

A q u o i s er v en t l es s er v le ts ?

Les servlets exécutent un grand nombre de fonctions, par exemple:

- Une servlet peut créer etrenvoyerune page WebHTMLcomplètedont lecontenudynamique dépendde lanaturede larequête du client.

- Une servlet peut simplement créer une partie d'une page WebHTML qui est intégrée à une page HTML statique existante. - Une servlet peut communiqueravecd'autresressourcesduserveur, y compris des bases de données, d'autres applications Java et des applications écrites dans d'autres langages.

(7)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 13/81

- Une servlet peut traiter les connexions avec plusieurs clients enacceptant les données en entrée de plusieurs clients et en diffusant à ces derniersdesrésultats. Une servlet peut, parexemple, correspondre à un serveur de jeux électroniques faisant intervenirplusieurs joueurs.

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 14/81

Q u el s s o n t l es a v a n ta g es e t l es in co n v én ie n ts d es s er v le ts ?

Avantages

Lesservletssont indépendantes desOS(UnixouNT) etdesserveurs Web (Apache, IIS etc.) ;

Peuvent produire de l'HTMLcôtéclient (notamment pour laconsultation de la base), sur la base d'http;

Peuvent dialogueravecdesappletsJava côtéclient avecunprotocole à objets distribués de type RMI;

(8)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 15/81

S'appuient sur un langage vraiment standard : Java (et non pas Java script ou Visual Basic);

Par rapport aux applets, le client est « allégé » ;

Parrapport auxCGI, les servletsprennent encharge les connexions des utilisateurs en multi-thread, qui n’est pas le cas desCGI (même avec FastCGI).

Inconvénients

Par rapport aux applets, interface graphique utilisateur limitée àHTML

Par rapport au CGI, voir plus loin dans le document.

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 16/81

C 'e st q u o i l es d if re n ce s e n tr e le s s cr ip ts C G I e t l es s er v le ts ?

La plus grosse différenceentre les CGI etles servletsest laperformance.

-Il n'ya qu'une seulemachine virtuelleJava qui tourne sur leserveur.

-La servlet est placée en mémoire une fois qu'elle est appelée. Ellen'est pas remise en mémoire jusqu'à ce que la servlet change.

-Une servlet dont le code a été modifié peut être réactivée (c'est àdire replacée enmémoire)sans redémarrer leserveur oul'application.

(9)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 17/81

Common Gateway Interface (CGI)

FastCGI Processus Principal Req. CGI1

Req. CGI2

Req. CGI1 Processus Fils pour CGI1

Processus Fils pour CGI2

Processus Fils pour CGI1

Processus Principal Req. CGI1

Req. CGI2

Req. CGI1 Un seul processus Fils pour CGI1

Un seul processus Fils pour CGI2

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 18/81

Les servlets

Les servlets résident en mémoire, de ce fait leur exécution est trèsrapide.L'informationstatique peut êtrepartagéeparplusieursinvocations de la servlet, vous autorisant donc de partager cetteinformation entre plusieurs utilisateurs. Processus Principal Req. servelt1

Req. servlet2

Req. servlet1 JVM servlet1

servlet2 Thread

Thread

Thread

(10)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 19/81

Les servlets sont modulaires, chaque servlet peut accomplir unetache spécifique et ainsi vous pouvez les rendre communicantes.

Moins il y a de calcul à faire côté client, plus l’approche servlet estintéressante.

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 20/81

A q u o i r es se m b le le c o d e d 'u n e se rv le t?

importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;

publicclassHelloWorldextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{

response.setContentType("text/html");

PrintWriterout=response.getWriter();

(11)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 21/81

out.println("<html>");out.println("<body>");out.println("<head>");out.println("<title>HelloWorld!</title>");out.println("</head>");out.println("<body>");out.println("<h1>HelloWorld!</h1>");out.println("</body>");out.println("</html>");}}

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 22/81

C o m m en t e st c o n st it u é le p a q u et a g e S er v le t?

Le paquetage javax.servlet fournit les interfaces et classes pour réaliser des servlets.

À un moment donné, il était question d’intégrer ce paquetage dans laversion1.2de JDK; puisil a été décidé autrement pour permettre desmodifications etcorrections dans lepaquetage demanière indépendante.

Parlasuite, lepaquetage a été intégrédans Java2Platform, Enterprise Edition (J2EE)

http://java.sun.com/j2ee/

(12)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 23/81

La relation avec Tomcat

Tomcat est unlogiciel gratuit,open-source,qui implanteles technologies Java Servlet et JavaServer Pages développées dans lecadreduprojet Jakartaà lafondation"Apache SoftwareFoundation."

http://jakarta.apache.org

Sun a adapté et intégré le code de base de Tomcat dans J2EE. Sundétient et continue de mettre à jour les spécifications de JavaServerPagesTM et JavaTM Servlets dans un processus ouvert à toute la communauté Java.

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 24/81

L’architecture du paquetage est décrite comme suit :

java.lang.Object | +--javax.servlet.GenericServlet | +--javax.servlet.http.HttpServlet

(13)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 25/81

L'interface Servelt

Toutes les servletsimplantent l'interface Servlet: javax.servlet.Servlet

soit directement ou bien via une classe qui implante cette interface, comme:

javax.servlet.GenericServlet (paquetage javax.servlet)

javax.servlet.http.HttpServlet (paquetage javax.servlet.http) particulièrement désignée pour des requêtes et réponses HTTP

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 26/81

Comme toute interface, l'interface Servlet déclare mais n'implantepas les méthodes qui gèrent les servlets et les communications avecdes clients. Cette charge revient aux concepteurs des servlets.

Cette interface possède les méthodes pour :

initialiser la servlet : init()

recevoir et répondre aux requêtes des clients : service()

détruire la servlet et ses ressources : destroy()

obtenir des informations sur la configuration de la servlet: getServletConfig()

obtenir des informations comme l'auteur et la version de la servlet: getServletInfo()

(14)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 27/81

C o m m en t s e d ér o u le n t l es in te ra ct io n s a v ec d es c lie n ts ?

Les servlets suivent un modèle de programmation requête-service-réponse :

Requête : objet javax.servlet.ServletRequest contient les informations nécessairespour unecommunication du client vers le serveur

Service : méthode service() invoquée

Réponse : objet javax.servlet.ServletResponsecontient les informations nécessairespour unecommunication du serveur vers le client.

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 28/81

importjavax.servlet.*;

publicclassfirstimplementsServlet{

publicvoidinit(ServletConfconfig)throwsServletException{}

publicvoidservice(ServletRequestreq,ServletResponserep) throwsServletException,IOException{}

publicvoiddestroy(){}}

(15)

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 29/81

L'interface ServletRequest permet à la servelt d'accéder à:

-Les noms des paramètres passés par le client, le protocole utilisé,les noms desmachines ayant émisles requêtes, et le nom duserveur recevant ces requêtes.

-Le flux en entrée, ServletInputStream. Les servlets utilisent leflux en entrée pour prendre les données du client et utilise desprotocoles d'accès comme le protocole HTTP.

- IFT1176 - Aspects avans en Java -

Mohamed N. Lokbani & dans le désordre SUN, Delannoy, Itey, Jia. v1.01Servlets 30/81

L'interface ServletResponse permet à la servelt de répondre auxclients:

-permet à la servlet de fixer la taille de la réponse et son type.

-fournit unfluxensortie,ServletOutputStreamutilisé parlaservlet pour envoyer des données.

Références

Documents relatifs

• Problème du plus proche voisin: étant donnés n sites dans le plan, trouver le plus proche d’un point x donné. C’est le problème des commutateurs, entre autres: il s’agit

Quel est le code des clients qui ont commandé le menu numéro 1 2.. Quel est le nom des clients qui ont commandé le menu numéro 1

« nous autres+vous autres = tout ». On ne sait pas si, dans l’opinion de Rosier, l’ensemble supérieur contenant nous autres Espagnols peut être réellement ceux qui ne sont

Deux versions sont disponibles: l’une avec 2 roues arrière jumelées, donnant un rayon de braquage très réduit et une grande manœuvrabilité, et l’autre à 4 roues avec essieu

Cette activité a été conduite lors de la dernière séance de révision en classe de Troisième de l'Enseignement Agricole avant le Brevet. L’envie de terminer les révisions

Pour notre part, nous allons représenter une solution à un problème quelconque par une liste de M chiffres et dans tout ce qui suit, une population sera une liste de µ listes,

Cours de bases de données – Modèles et langages.. Version

 L’ambiguïté syntaxique est un problème dans les langages de programmation car la sémantique est basée sur la syntaxe et la signification d’une phrase doit être unique.. 