SlideShare une entreprise Scribd logo
1  sur  8
Télécharger pour lire hors ligne
6. JSP
                                                                                          Java Server Pages (JSP)

                            Cours Web                                                     Programme Java s'exécutant côté serveur Web
                                                                                          servlet             prog. "autonome" stockés dans un fichier .class sur le serveur
                                                                                          JSP                 prog. source Java embarqué dans une page .html
                 Java Server Pages (JSP)
                                                                                                                                 côté client    côté serveur

                            Lionel Seinturier                                                              .class autonome         applet         servlet

                                                                                                        embarqué dans .html      JavaScript         JSP
                   Université Pierre & Marie Curie

                    Lionel.Seinturier@lip6.fr                                             Servlet et JSP
                                                                                          • exécutable avec tous les serveurs Web (Apache, IIS, ...)
                                                                                          • auxquels on a ajouté un "moteur" de servlet/JSP (le plus connu : Tomcat)
                                                                     11/7/02              • JSP compilées automatiquement en servlet par le moteur
Web                                  134                             Lionel Seinturier   Web                                      135                            Lionel Seinturier




                                6. JSP                                                                                        6. JSP
 Java Server Pages (JSP)                                                                  Illustration du fonctionnement

 • du code Java embarqué dans une page HTML entre les balises <% et %>                    <HTML> <BODY>
 • extension .jsp pour les pages JSP                                                      <H1>Table des factorielles</H1>
                                                                                          <%
                                                                                             int i,fact;
 • les fichiers .jsp sont stockés sur le serveur (comme des docs)                            for ( i=1,fact=1 ; i<4 ; i++, fact*=i ) {
 • ils sont désignés par une URL       http://www.lip6.fr/prog.jsp                             out.print( i + "! =" + fact + "<BR>" );
 • le chargement de l'URL provoque l'exécution de la JSP côté serveur                        }
                                                                                          %>
                                                                                          </BODY> </HTML>

                      1                                2
       Client                   Serveur Tom                       prog.jsp                          invocation
                                         cat                                                        !
                      4           IIS                  3                                            exécution
      Explorer
                                Apache                  Sun                                         côté serveur
      Netscape                               JVM
                                   ...                Microsoft
         ...


Web                                  136                             Lionel Seinturier   Web                                      137                            Lionel Seinturier
6. JSP                                                                                      6. JSP
 Principe de fonctionnement                                                                 Mécanismes mis en œuvre

 <HTML> <BODY>                                                                              • plusieurs zones <% ... %> peuvent cohabiter dans une même JSP
 <H1>Table des factorielles</H1>
 <%                                                            du code Java                 • lors du premier chargement d'une JSP (ou après modification), le moteur
    int i,fact;
    for ( i=1,fact=1 ; i<4 ; i++, fact*=i ) {                                                    - rassemble tous les fragments <% ... %> de la JSP dans une classe
                                                               résultat = HTML                   - la compile
          out.print( i + "! =" + fact + "<BR>" );                                                - l'instancie
      }                                                        généré via l'objet
                                                               prédéfini out                     ! JSP = objet Java présent dans le moteur
 %>
 </BODY> </HTML>
                                                                                            • puis, ou lors des chargements suivants, le moteur
                                                                                                 - exécute le code dans un thread
  ce qui est                  <HTML> <BODY>
  renvoyé                     <H1>Table des factorielles</H1>
                              1! = 1<BR>                                                    ! délai d'attente lors de la 1ère invocation dû à la compilation
  au client                   2! = 2<BR>
                              3! = 6<BR>                                                    ! en cas d'erreur de syntaxe dans le code Java de la JSP
                              </BODY> </HTML>
                                                                                              message récupéré dans le navigateur

Web                                     138                            Lionel Seinturier   Web                                     139                               Lionel Seinturier




                                  6. JSP                                                                                      6. JSP
 Directive <%= ... %>                                                                       Méthodes et variables d'instance

 La directive <%= expr %> génère l'affichage d'une valeur de l'expression expr              Des méthodes et des variables d'instance peuvent être associées à une JSP
 ! <%= expr %> raccourci pour <% out.print(expr); %>                                        entre les directives <%! et %>

 <HTML> <BODY>                                                                              <HTML> <BODY>
                                                                                            <H1>Compteur</H1>                            Variable d'instance
 <% int aleat = (int) (Math.random() * 5); %>                                               <%!                                          - initialisée à l'instanciation de la JSP
                                                                                                                                         - persiste entre 2 invocations
 <H1> <%= aleat %> </H1>                                                                         int cpt = 0;
                                                                                                                                           tant que la JSP ne change pas
 </BODY> </HTML>                                                                                 int getCpt() {
                                                                                                   return cpt++;                         Méthode d'instance
                                                                                                 }                                       - attachée à l'objet
                                                                                            %>                                             correspondant à la JSP

                                                                                            <H1> <%= getCpt() %> </H1>

                                                                                            </BODY> </HTML>


Web                                     140                            Lionel Seinturier   Web                                     141                               Lionel Seinturier
6. JSP                                                                                         6. JSP
 Variables d'instance                                                                              Exemple

 Attention !!
                                                                                                        1ère invocation
        <%!     int cpt = 0; %>            ≠         <%   int cpt = 0; %>



 • variable d'instance de la JSP (persiste)
 • variable locale à la JSP (réinitialisée à chaque invocation de la JSP)




                                                                                                        2ème invocation




Web                                            142                            Lionel Seinturier   Web                                          143                             Lionel Seinturier




                                          6. JSP                                                                                         6. JSP
 La directive <%@         page   ... %>                                                            Les objets implicites

 Donne des informations sur la JSP (non obligatoire, valeurs par défaut)                           Objets prédéclarés utilisables dans le code Java des JSPs

 <%@ page import="..."%>             (ex. <%@ page          import="java.io.*"%>)                  out                    le flux de sortie pour générer le code HTML
 les "import" nécessaires au code Java de la JSP                                                   request                la requête qui a provoqué le chargement de la JSP
                                                                                                   response               la réponse à la requête de chargement de la JSP
 <%@ page errorPage="..."%>          (ex. <%@ page          errorPage="err.jsp"%>)
 fournit l'URL de la JSP à charger en cas d'erreur
                                                                                                   page                   l'instance de servlet associée à la JSP courante (≡ this)
 <%@ page contentType="..."%>       (ex. <%@          page contentType="text/html"%>)              exception              l'exception générée en cas d'erreur sur une page
 le type MIME du contenu retourné par la JSP
                                                                                                   session                suivi de session pour un même client
 <%@ page isThreadSafe="..." %>                      trueou false                                  application            espace de données partagé entre toutes les JSP
 true         la JSP peut être exécutée par +sieurs clients à la fois (valeur par défaut)
 <%@ page isErrorPage="..." %>                     true ou     false
 true         la JSP est une page invoquée en cas d'erreur


Web                                            144                            Lionel Seinturier   Web                                          145                             Lionel Seinturier
6. JSP                                                                                6. JSP
 Récupération des données d'un formulaire                                                     Récupération des données d'un formulaire

 Méthode String    getParameter(String)       de l'objet prédéfini request                    <HTML> <BODY>
                                                                                              <H1>Exemple de résultat</H1>
 ! retourne le texte saisi                                                                    Bonjour
                                                                                              <%= request.getParameter("prenom") %>
 ! ou null si le nom de paramètre n'existe pas
                                                                                              <%= request.getParameter("nom") %>
                                                                                              </BODY> </HTML>

                                          <HTML> <BODY>
                                          <FORM ACTION="http://..."
                                                METHOD=POST>
                                          Nom <INPUT NAME="nom"> <P>
                                          Prénom <INPUT NAME="prenom"> <P>
                                          <INPUT TYPE=SUBMIT VALUE="Envoi">
                                          <INPUT TYPE=RESET                                                clic
                                                  VALUE="Remise à zéro">
                                          </FORM>
                                          </BODY> </HTML>



Web                                     146                              Lionel Seinturier   Web                                 147                       Lionel Seinturier




                                   6. JSP                                                                                6. JSP
 Gestion des erreurs                                                                          Exemple de gestion d'erreur
                                                                                                                                              Si hasard = 0
 Erreur de syntaxe                                                                            <HTML> <BODY>
                                                                                                                                         page d'erreur par défaut
     - dans les directives JSP       (ex. : oubli d'une directive %>)                         <H1>Pourvu ... !!</H1>
                                                                                              <% int hasard =
     - dans le code Java
                                                                                                  (int) ( Math.random() * 5 );
                                                                                              %>
 Erreur d'exécution du code Java     (ex. : NullPointerException)                             <H1> <%= 12 / hasard %> </H1>
                                                                                              </BODY> </HTML>
 ! dans tous les cas, erreur récupérée dans le navigateur client


 2 possibilités

 • conserver la page par défaut construite par le moteur
 • en concevoir une adaptée aux besoins particuliers de l'application
      ! utilisation des directives  <%@ page errorPage="..." %> et
                                     <%@ page isErrorPage="..." %>


Web                                     148                              Lionel Seinturier   Web                                 149                       Lionel Seinturier
6. JSP                                                                                   6. JSP
 Exemple de gestion d'erreur                                                              Inclusion de JSP                                                            JSP 4
                                                                                                                                                      JSP 1
 <HTML> <BODY>                               <HTML> <BODY>                                • aggrégation des résultats fournis
 <H1>Pourvu ... !!</H1>                                                                     par plusieurs JSP                                                         JSP 5
 <%@ page                                    <%@ page isErrorPage="true" %>
                                             <h1>Le 0 est sorti !!</h1>                   ! meilleure modularité                         JSP          JSP 2
     errorPage="err.jsp" %>
 <% int hasard = ... %>                      Erreur :                                     ! meilleure réutilisation
 <H1> <%= 12 / hasard %> </H1>               <%= exception.getMessage() %>
                                                                                                                                                      JSP 3
 </BODY> </HTML>                             </BODY> </HTML>                              Directives   <jsp:include>      et </jsp:include>

                                                                                          <HTML> <BODY>                                  Fichier inc.jsp
                                                                                          <H1>JSP principale</H1>
                                                                                                                                         <B>JSP incluse</B>
      Si hasard = 0                                                                       <jsp:include                    URL
      page d'erreur err.jsp = 0                                                              page="inc.jsp"       >                      <P>
                                                                                          </jsp:include>                                 <%= (int) (Math.random()*5) %>
                                                                                                                                         </P>
      Récupération de l'erreur via                                                        </BODY> </HTML>
      l'objet prédéfini exception
                                                                                                                                                Pas de     <HTML> <BODY>


Web                                    150                           Lionel Seinturier   Web                                       151                            Lionel Seinturier




                                     6. JSP                                                                                   6. JSP
 Inclusion de JSP                                                                         Délégation de JSP

 Résultat                                                                                 Une JSP peut déléger le traitement d'une requête à une autre JSP
                                                                                          ! prise en compte complète de la requête par la JSP déléguée
 <HTML> <BODY>
 <H1>JSP principale</H1>                                                                  Directives   <jsp:forward>      et </jsp:forward>

 <B>JSP incluse</B>
 <P>                                                                                      <HTML> <BODY>                                  Fichier forw.jsp
 <%= (int) (Math.random()*5) %>                                                           <H1>JSP principale</H1>
 </P>                                                                                                                                    <HTML> <BODY>
                                                                                          <jsp:forward                                   <H1>JSP déléguée</H1>
 </BODY> </HTML>                                                                             page="forw.jsp"          >
                                                                                          </jsp:forward>                                 <P>
                                                                                                                          URL            <%= (int) (Math.random()*5) %>
                                                                                          Ignoré !!                                      </P>
 Remarque                                                                                                                                </BODY> </HTML>
                                                                                          </BODY> </HTML>
 1. directives <jsp:include> et </jsp:include>         inclusion statique
 2. directive <%@ page include file="…"%>              inclusion dynamique                                                                        <HTML> <BODY>


Web                                    152                           Lionel Seinturier   Web                                       153                            Lionel Seinturier
6. JSP                                                                                    6. JSP
 Délégation de JSP                                                                    Délégation et inclusion de JSP

 Résultat                                                                             Transmission de paramètres aux inclus et aux délégués
                                                                                      Utilisation de couples (name, value)
  <HTML> <BODY>
  <H1>JSP déléguée</H1>                                                               Directive    <jsp:param name="..." value="..." />

  <P>
  <%= (int) (Math.random()*5) %>
                                                                                      <HTML> <BODY>
  </P>
                                                                                      <H1>JSP principale</H1>
  </BODY> </HTML>
                                                                                      <jsp:forward page="forw.jsp">
                                                                                         <jsp:param name="nom" value="Seinturier" />
                                                                                         <jsp:param name="prenom" value="Lionel" />
                                                                                      </jsp:forward>

                                                                                      </BODY> </HTML>




Web                                    154                       Lionel Seinturier   Web                                          155                             Lionel Seinturier




                                  6. JSP                                                                                    6. JSP
 Délégation et inclusion de JSP                                                       Compléments sur l'API

 Récupération des paramètres                                                          Méthodes appelables sur l'objet prédéfini request
 ≡ à la récupération des paramètres transmis via un formulaire                        - String getProtocol()
                                                                                           retourne le protocole implanté par le serveur           (ex. : HTTP/1.1)
                                                                                      - String getServerName() / String getServerPort()
                                                                                           retourne le nom/port de la machine serveur
 <HTML> <BODY>                                                                        - String getRemoteAddr() / String getRemoteHost()
 <H1>JSP déléguée/incluse</H1>                                                             retourne l'adresse/nom de la machine cliente (ayant invoqué la servlet)
 Nom : <%= request.getParameter("nom") %>                                             - String getScheme()
 Prénom : <%= request.getParameter("prenom") %>                                            retourne le protocole utilisé (ex. : http ou https) par le client
 </BODY> </HTML>




Web                                    156                       Lionel Seinturier   Web                                          157                             Lionel Seinturier
6. JSP                                                                                            6. JSP
 Suivi de session                                                                                  Suivi de session

 • HTTP protocole non connecté                                                                     Méthodes appelables sur l'objet prédéfini session
 • pour le serveur, 2 requêtes successives d'un même client sont indépendantes                     - void setAttribute( String name, Object value )
                                                                                                     ajoute un couple (name, value) pour cette session
 Objectif : être capable de "suivre" l'activité du client sur +sieurs pages                        - Object getAttribute( String name )
                                                                                                     retourne l'objet associé à la clé name ou null
 Notion de session
                                                                                                   - void removeAttribute( String name )

 ! les requêtes provenant d'un utilisateur sont associées à une même session                         enlève le couple de clé name
 ! les sessions ne sont pas éternelles, elles expirent au bout d'un délai fixé                     - java.util.Enumeration getAttributeNames()
                                                                                                        retourne tous les noms d'attributs associés à la session
 Objet prédéfini session de type HttpSession
                                                                                                   - void setMaxIntervalTime( int seconds )
 ! la session courante ou une nouvelle session                                                          spécifie la durée de vie maximum d'une session
                                                                                                   - long getCreationTime() / long getLastAccessedTime()
                                                                                                        retourne la date de création / de dernier accès de la session
                                                                                                        en ms depuis le 1/1/1970, 00h00 GMT → new Date(long)
Web                                        158                                Lionel Seinturier   Web                                        159                        Lionel Seinturier




                                     6. JSP                                                                                            6. JSP
 Partage de données entre JSP                                                                      Conclusion

 Notion de contexte d'exécution                                                                    Permettent d'étendre le comportement des serveurs Web avec des prog. Java
 = ensemble de couples (name, value) partagées par toutes les JSP instanciées
                                                                                                   Résumé des fonctionnalités
 ! objet prédéfini application
                                                                                                   + code embarqué dans un fichier HTML
 Méthodes appelables sur l'objet prédéfini application
 - void setAttribute( String name, Object value )                                                  + portabilité, facilité d'écriture (Java)
   ajoute un couple (name, value) dans le contexte                                                 + gestion des applications requièrant un suivi entre plusieurs programmes
 - Object getAttribute( String name )                                                                (persistance des données)
   retourne l'objet associé à la clé name ou null
 - void removeAttribute( String name )                                                             + JSP chargée et instanciée une seule fois
   enlève le couple de clé name                                                                    + JSP exécutée avec des processus légers (threads)
 - java.util.Enumeration getAttributeNames()
      retourne tous les noms d'attributs associés au contexte


Web                                        160                                Lionel Seinturier   Web                                        161                        Lionel Seinturier
6. JSP                                                                                        6. JSP
 Tomcat                                                                                     Tomcat

 Le moteur de JSP et de servlet le plus utilisé                                             Installation
                                                            jakarta.apache.org
 Projet soutenu conjointement par Apache et Sun
                                                                                            • récupérer d'un .zip sur le site
 Nécessite une machine virtuelle (Sun ou Microsoft)                                         • dézipper
                                                                                            ! occupation disque 11 Mo
 2 modes de fonctionnement

 Autonome (standalone)                                                                      - bin             Scripts de démarrage/d'arrêt
 - Tomcat est aussi un serveur Web                                                          - conf            Fichiers de configuration (en particulier server.xml)
 - il est capable de servir des pages HTML, d'exécuter des servlets et des JSP              - doc             Documentation
                                                                                            - lib             Librairies utilisées Tomcat
 Collaboratif (in-process et out-of-process)                                                - logs            Répertoire pour les fichiers d'audit
 - Tomcat peut s'installer comme une extension d'un serveur Web                             - src             Sources de Tomcat
   (Apache, Microsoft IIS ou Netscape NetServer)
 ! meilleures performances pour le service des pages HTML                                   - webapps         Répertoire de dépôt des .jsp et des servlets

Web                                     162                            Lionel Seinturier   Web                                     163                                Lionel Seinturier




                                  6. JSP
 Tomcat

 Répertoire webappsROOT

 • dépose des fichiers
 • création de sous-répertoires




 Après lancement de Tomcat, tous les fichiers déposés dans webapps
 sont accessibles via l'URL       http://nom.de.ma.machine:8080/


 Ex. :    fichier   test.jsp   dans webappsROOT
          URL       http://nom.de.ma.machine:8080/test.jsp


 Rq : les .class des servlets sont à déposer dans WEB-INFclasses

Web                                     164                            Lionel Seinturier

Contenu connexe

Tendances

Ajax en Java - GTI780 & MTI780 - ETS - A09
Ajax en Java - GTI780 & MTI780 - ETS - A09Ajax en Java - GTI780 & MTI780 - ETS - A09
Ajax en Java - GTI780 & MTI780 - ETS - A09Claude Coulombe
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentationYassine Badri
 
Ajax en Java - GTI780 & MTI780 - ETS - A08
Ajax en Java - GTI780 & MTI780 - ETS - A08Ajax en Java - GTI780 & MTI780 - ETS - A08
Ajax en Java - GTI780 & MTI780 - ETS - A08Claude Coulombe
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec JavaFrancois ANDRE
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)ENSET, Université Hassan II Casablanca
 
ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - CoursENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - CoursHoracio Gonzalez
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
Ajax GTI780 & MTI780 ETS A09
Ajax  GTI780 & MTI780  ETS  A09Ajax  GTI780 & MTI780  ETS  A09
Ajax GTI780 & MTI780 ETS A09Claude Coulombe
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web ServicesLilia Sfaxi
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWinslo Nwan
 
REST JUG Toulouse 20100615
REST JUG Toulouse 20100615REST JUG Toulouse 20100615
REST JUG Toulouse 20100615JUG Toulouse
 
JSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileJSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileSylla Mamoudou
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlinangeeLee
 

Tendances (20)

Soap
SoapSoap
Soap
 
Ajax en Java - GTI780 & MTI780 - ETS - A09
Ajax en Java - GTI780 & MTI780 - ETS - A09Ajax en Java - GTI780 & MTI780 - ETS - A09
Ajax en Java - GTI780 & MTI780 - ETS - A09
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentation
 
Ajax en Java - GTI780 & MTI780 - ETS - A08
Ajax en Java - GTI780 & MTI780 - ETS - A08Ajax en Java - GTI780 & MTI780 - ETS - A08
Ajax en Java - GTI780 & MTI780 - ETS - A08
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec Java
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - CoursENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
Ajax GTI780 & MTI780 ETS A09
Ajax  GTI780 & MTI780  ETS  A09Ajax  GTI780 & MTI780  ETS  A09
Ajax GTI780 & MTI780 ETS A09
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web Services
 
Java Server Faces 2
Java Server Faces 2Java Server Faces 2
Java Server Faces 2
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas doc
 
REST JUG Toulouse 20100615
REST JUG Toulouse 20100615REST JUG Toulouse 20100615
REST JUG Toulouse 20100615
 
JSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileJSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces Mobile
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
 

En vedette

La programmation systéme en langage C sous UNIX
La programmation systéme en langage C sous UNIXLa programmation systéme en langage C sous UNIX
La programmation systéme en langage C sous UNIXBen Hassen Hamdi
 
programmation réseau en java
programmation réseau en java programmation réseau en java
programmation réseau en java Ezéquiel Tsagué
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chatTbatou sanae
 
Chat application in java using swing and socket programming.
Chat application in java using swing and socket programming.Chat application in java using swing and socket programming.
Chat application in java using swing and socket programming.Kuldeep Jain
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteStephane Couzinier
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVABachir Benyammi
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015Alphorm
 
Alphorm.com Support de la Formation Symfony 3 , les fondamentaux-ss
Alphorm.com Support de la Formation Symfony 3 , les fondamentaux-ssAlphorm.com Support de la Formation Symfony 3 , les fondamentaux-ss
Alphorm.com Support de la Formation Symfony 3 , les fondamentaux-ssAlphorm
 
rapport de stage
rapport de stagerapport de stage
rapport de stageMarouane Gh
 
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...Alphorm
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm
 
173544 introduction-aux-sockets
173544 introduction-aux-sockets173544 introduction-aux-sockets
173544 introduction-aux-socketsnaimanaima1
 
Alphorm.com Formation Hacking et Sécurité , avancé
Alphorm.com Formation Hacking et Sécurité , avancéAlphorm.com Formation Hacking et Sécurité , avancé
Alphorm.com Formation Hacking et Sécurité , avancéAlphorm
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerGeeks Anonymes
 

En vedette (20)

La programmation systéme en langage C sous UNIX
La programmation systéme en langage C sous UNIXLa programmation systéme en langage C sous UNIX
La programmation systéme en langage C sous UNIX
 
programmation réseau en java
programmation réseau en java programmation réseau en java
programmation réseau en java
 
les Threads
les  Threadsles  Threads
les Threads
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chat
 
Formation1 sockets
Formation1 socketsFormation1 sockets
Formation1 sockets
 
Chat application in java using swing and socket programming.
Chat application in java using swing and socket programming.Chat application in java using swing and socket programming.
Chat application in java using swing and socket programming.
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverte
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
 
Alphorm.com Support de la Formation Symfony 3 , les fondamentaux-ss
Alphorm.com Support de la Formation Symfony 3 , les fondamentaux-ssAlphorm.com Support de la Formation Symfony 3 , les fondamentaux-ss
Alphorm.com Support de la Formation Symfony 3 , les fondamentaux-ss
 
rapport de stage
rapport de stagerapport de stage
rapport de stage
 
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQL
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
173544 introduction-aux-sockets
173544 introduction-aux-sockets173544 introduction-aux-sockets
173544 introduction-aux-sockets
 
Chap7 java net
Chap7 java netChap7 java net
Chap7 java net
 
Alphorm.com Formation Hacking et Sécurité , avancé
Alphorm.com Formation Hacking et Sécurité , avancéAlphorm.com Formation Hacking et Sécurité , avancé
Alphorm.com Formation Hacking et Sécurité , avancé
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagner
 

Similaire à Cours JSP

API JSP avec Java EE.pptx
API JSP avec Java EE.pptxAPI JSP avec Java EE.pptx
API JSP avec Java EE.pptxramadanmahdi
 
API JSP2 avec Java EE.pdf
API JSP2 avec Java EE.pdfAPI JSP2 avec Java EE.pdf
API JSP2 avec Java EE.pdframadanmahdi
 
Run java vs ruby
Run java vs rubyRun java vs ruby
Run java vs rubypinguin666
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesENSET, Université Hassan II Casablanca
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
JavaEE - Test & Deploy
JavaEE - Test & DeployJavaEE - Test & Deploy
JavaEE - Test & DeployAlexis Hassler
 
JEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdfJEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdfMahmoudiOussama
 
Soutenance Stage Licence
Soutenance Stage LicenceSoutenance Stage Licence
Soutenance Stage LicenceMathias Kluba
 
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquilliansoft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquilliansoft-shake.ch
 
Tests d'intégration avec Arquillian
Tests d'intégration avec ArquillianTests d'intégration avec Arquillian
Tests d'intégration avec ArquillianAlexis Hassler
 
BordeauxJUG : Portails &amp; Portlets Java
BordeauxJUG : Portails &amp; Portlets JavaBordeauxJUG : Portails &amp; Portlets Java
BordeauxJUG : Portails &amp; Portlets JavaCamblor Frédéric
 

Similaire à Cours JSP (20)

API JSP avec Java EE.pptx
API JSP avec Java EE.pptxAPI JSP avec Java EE.pptx
API JSP avec Java EE.pptx
 
API JSP2 avec Java EE.pdf
API JSP2 avec Java EE.pdfAPI JSP2 avec Java EE.pdf
API JSP2 avec Java EE.pdf
 
Run java vs ruby
Run java vs rubyRun java vs ruby
Run java vs ruby
 
Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010
 
JSF 2.0
JSF 2.0JSF 2.0
JSF 2.0
 
Gradle_ToursJUG
Gradle_ToursJUGGradle_ToursJUG
Gradle_ToursJUG
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
gradle_nantesjug
gradle_nantesjuggradle_nantesjug
gradle_nantesjug
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
JavaEE - Test & Deploy
JavaEE - Test & DeployJavaEE - Test & Deploy
JavaEE - Test & Deploy
 
JEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdfJEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdf
 
cha4c1jsp.docx
cha4c1jsp.docxcha4c1jsp.docx
cha4c1jsp.docx
 
JavaEEGibello.ppt
JavaEEGibello.pptJavaEEGibello.ppt
JavaEEGibello.ppt
 
Soutenance Stage Licence
Soutenance Stage LicenceSoutenance Stage Licence
Soutenance Stage Licence
 
#2 Architecture OSGi
#2 Architecture OSGi#2 Architecture OSGi
#2 Architecture OSGi
 
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquilliansoft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
 
Tests d'intégration avec Arquillian
Tests d'intégration avec ArquillianTests d'intégration avec Arquillian
Tests d'intégration avec Arquillian
 
Gradle_LyonJUG
Gradle_LyonJUGGradle_LyonJUG
Gradle_LyonJUG
 
BordeauxJUG : Portails &amp; Portlets Java
BordeauxJUG : Portails &amp; Portlets JavaBordeauxJUG : Portails &amp; Portlets Java
BordeauxJUG : Portails &amp; Portlets Java
 

Cours JSP

  • 1. 6. JSP Java Server Pages (JSP) Cours Web Programme Java s'exécutant côté serveur Web servlet prog. "autonome" stockés dans un fichier .class sur le serveur JSP prog. source Java embarqué dans une page .html Java Server Pages (JSP) côté client côté serveur Lionel Seinturier .class autonome applet servlet embarqué dans .html JavaScript JSP Université Pierre & Marie Curie Lionel.Seinturier@lip6.fr Servlet et JSP • exécutable avec tous les serveurs Web (Apache, IIS, ...) • auxquels on a ajouté un "moteur" de servlet/JSP (le plus connu : Tomcat) 11/7/02 • JSP compilées automatiquement en servlet par le moteur Web 134 Lionel Seinturier Web 135 Lionel Seinturier 6. JSP 6. JSP Java Server Pages (JSP) Illustration du fonctionnement • du code Java embarqué dans une page HTML entre les balises <% et %> <HTML> <BODY> • extension .jsp pour les pages JSP <H1>Table des factorielles</H1> <% int i,fact; • les fichiers .jsp sont stockés sur le serveur (comme des docs) for ( i=1,fact=1 ; i<4 ; i++, fact*=i ) { • ils sont désignés par une URL http://www.lip6.fr/prog.jsp out.print( i + "! =" + fact + "<BR>" ); • le chargement de l'URL provoque l'exécution de la JSP côté serveur } %> </BODY> </HTML> 1 2 Client Serveur Tom prog.jsp invocation cat ! 4 IIS 3 exécution Explorer Apache Sun côté serveur Netscape JVM ... Microsoft ... Web 136 Lionel Seinturier Web 137 Lionel Seinturier
  • 2. 6. JSP 6. JSP Principe de fonctionnement Mécanismes mis en œuvre <HTML> <BODY> • plusieurs zones <% ... %> peuvent cohabiter dans une même JSP <H1>Table des factorielles</H1> <% du code Java • lors du premier chargement d'une JSP (ou après modification), le moteur int i,fact; for ( i=1,fact=1 ; i<4 ; i++, fact*=i ) { - rassemble tous les fragments <% ... %> de la JSP dans une classe résultat = HTML - la compile out.print( i + "! =" + fact + "<BR>" ); - l'instancie } généré via l'objet prédéfini out ! JSP = objet Java présent dans le moteur %> </BODY> </HTML> • puis, ou lors des chargements suivants, le moteur - exécute le code dans un thread ce qui est <HTML> <BODY> renvoyé <H1>Table des factorielles</H1> 1! = 1<BR> ! délai d'attente lors de la 1ère invocation dû à la compilation au client 2! = 2<BR> 3! = 6<BR> ! en cas d'erreur de syntaxe dans le code Java de la JSP </BODY> </HTML> message récupéré dans le navigateur Web 138 Lionel Seinturier Web 139 Lionel Seinturier 6. JSP 6. JSP Directive <%= ... %> Méthodes et variables d'instance La directive <%= expr %> génère l'affichage d'une valeur de l'expression expr Des méthodes et des variables d'instance peuvent être associées à une JSP ! <%= expr %> raccourci pour <% out.print(expr); %> entre les directives <%! et %> <HTML> <BODY> <HTML> <BODY> <H1>Compteur</H1> Variable d'instance <% int aleat = (int) (Math.random() * 5); %> <%! - initialisée à l'instanciation de la JSP - persiste entre 2 invocations <H1> <%= aleat %> </H1> int cpt = 0; tant que la JSP ne change pas </BODY> </HTML> int getCpt() { return cpt++; Méthode d'instance } - attachée à l'objet %> correspondant à la JSP <H1> <%= getCpt() %> </H1> </BODY> </HTML> Web 140 Lionel Seinturier Web 141 Lionel Seinturier
  • 3. 6. JSP 6. JSP Variables d'instance Exemple Attention !! 1ère invocation <%! int cpt = 0; %> ≠ <% int cpt = 0; %> • variable d'instance de la JSP (persiste) • variable locale à la JSP (réinitialisée à chaque invocation de la JSP) 2ème invocation Web 142 Lionel Seinturier Web 143 Lionel Seinturier 6. JSP 6. JSP La directive <%@ page ... %> Les objets implicites Donne des informations sur la JSP (non obligatoire, valeurs par défaut) Objets prédéclarés utilisables dans le code Java des JSPs <%@ page import="..."%> (ex. <%@ page import="java.io.*"%>) out le flux de sortie pour générer le code HTML les "import" nécessaires au code Java de la JSP request la requête qui a provoqué le chargement de la JSP response la réponse à la requête de chargement de la JSP <%@ page errorPage="..."%> (ex. <%@ page errorPage="err.jsp"%>) fournit l'URL de la JSP à charger en cas d'erreur page l'instance de servlet associée à la JSP courante (≡ this) <%@ page contentType="..."%> (ex. <%@ page contentType="text/html"%>) exception l'exception générée en cas d'erreur sur une page le type MIME du contenu retourné par la JSP session suivi de session pour un même client <%@ page isThreadSafe="..." %> trueou false application espace de données partagé entre toutes les JSP true la JSP peut être exécutée par +sieurs clients à la fois (valeur par défaut) <%@ page isErrorPage="..." %> true ou false true la JSP est une page invoquée en cas d'erreur Web 144 Lionel Seinturier Web 145 Lionel Seinturier
  • 4. 6. JSP 6. JSP Récupération des données d'un formulaire Récupération des données d'un formulaire Méthode String getParameter(String) de l'objet prédéfini request <HTML> <BODY> <H1>Exemple de résultat</H1> ! retourne le texte saisi Bonjour <%= request.getParameter("prenom") %> ! ou null si le nom de paramètre n'existe pas <%= request.getParameter("nom") %> </BODY> </HTML> <HTML> <BODY> <FORM ACTION="http://..." METHOD=POST> Nom <INPUT NAME="nom"> <P> Prénom <INPUT NAME="prenom"> <P> <INPUT TYPE=SUBMIT VALUE="Envoi"> <INPUT TYPE=RESET clic VALUE="Remise à zéro"> </FORM> </BODY> </HTML> Web 146 Lionel Seinturier Web 147 Lionel Seinturier 6. JSP 6. JSP Gestion des erreurs Exemple de gestion d'erreur Si hasard = 0 Erreur de syntaxe <HTML> <BODY> page d'erreur par défaut - dans les directives JSP (ex. : oubli d'une directive %>) <H1>Pourvu ... !!</H1> <% int hasard = - dans le code Java (int) ( Math.random() * 5 ); %> Erreur d'exécution du code Java (ex. : NullPointerException) <H1> <%= 12 / hasard %> </H1> </BODY> </HTML> ! dans tous les cas, erreur récupérée dans le navigateur client 2 possibilités • conserver la page par défaut construite par le moteur • en concevoir une adaptée aux besoins particuliers de l'application ! utilisation des directives <%@ page errorPage="..." %> et <%@ page isErrorPage="..." %> Web 148 Lionel Seinturier Web 149 Lionel Seinturier
  • 5. 6. JSP 6. JSP Exemple de gestion d'erreur Inclusion de JSP JSP 4 JSP 1 <HTML> <BODY> <HTML> <BODY> • aggrégation des résultats fournis <H1>Pourvu ... !!</H1> par plusieurs JSP JSP 5 <%@ page <%@ page isErrorPage="true" %> <h1>Le 0 est sorti !!</h1> ! meilleure modularité JSP JSP 2 errorPage="err.jsp" %> <% int hasard = ... %> Erreur : ! meilleure réutilisation <H1> <%= 12 / hasard %> </H1> <%= exception.getMessage() %> JSP 3 </BODY> </HTML> </BODY> </HTML> Directives <jsp:include> et </jsp:include> <HTML> <BODY> Fichier inc.jsp <H1>JSP principale</H1> <B>JSP incluse</B> Si hasard = 0 <jsp:include URL page d'erreur err.jsp = 0 page="inc.jsp" > <P> </jsp:include> <%= (int) (Math.random()*5) %> </P> Récupération de l'erreur via </BODY> </HTML> l'objet prédéfini exception Pas de <HTML> <BODY> Web 150 Lionel Seinturier Web 151 Lionel Seinturier 6. JSP 6. JSP Inclusion de JSP Délégation de JSP Résultat Une JSP peut déléger le traitement d'une requête à une autre JSP ! prise en compte complète de la requête par la JSP déléguée <HTML> <BODY> <H1>JSP principale</H1> Directives <jsp:forward> et </jsp:forward> <B>JSP incluse</B> <P> <HTML> <BODY> Fichier forw.jsp <%= (int) (Math.random()*5) %> <H1>JSP principale</H1> </P> <HTML> <BODY> <jsp:forward <H1>JSP déléguée</H1> </BODY> </HTML> page="forw.jsp" > </jsp:forward> <P> URL <%= (int) (Math.random()*5) %> Ignoré !! </P> Remarque </BODY> </HTML> </BODY> </HTML> 1. directives <jsp:include> et </jsp:include> inclusion statique 2. directive <%@ page include file="…"%> inclusion dynamique <HTML> <BODY> Web 152 Lionel Seinturier Web 153 Lionel Seinturier
  • 6. 6. JSP 6. JSP Délégation de JSP Délégation et inclusion de JSP Résultat Transmission de paramètres aux inclus et aux délégués Utilisation de couples (name, value) <HTML> <BODY> <H1>JSP déléguée</H1> Directive <jsp:param name="..." value="..." /> <P> <%= (int) (Math.random()*5) %> <HTML> <BODY> </P> <H1>JSP principale</H1> </BODY> </HTML> <jsp:forward page="forw.jsp"> <jsp:param name="nom" value="Seinturier" /> <jsp:param name="prenom" value="Lionel" /> </jsp:forward> </BODY> </HTML> Web 154 Lionel Seinturier Web 155 Lionel Seinturier 6. JSP 6. JSP Délégation et inclusion de JSP Compléments sur l'API Récupération des paramètres Méthodes appelables sur l'objet prédéfini request ≡ à la récupération des paramètres transmis via un formulaire - String getProtocol() retourne le protocole implanté par le serveur (ex. : HTTP/1.1) - String getServerName() / String getServerPort() retourne le nom/port de la machine serveur <HTML> <BODY> - String getRemoteAddr() / String getRemoteHost() <H1>JSP déléguée/incluse</H1> retourne l'adresse/nom de la machine cliente (ayant invoqué la servlet) Nom : <%= request.getParameter("nom") %> - String getScheme() Prénom : <%= request.getParameter("prenom") %> retourne le protocole utilisé (ex. : http ou https) par le client </BODY> </HTML> Web 156 Lionel Seinturier Web 157 Lionel Seinturier
  • 7. 6. JSP 6. JSP Suivi de session Suivi de session • HTTP protocole non connecté Méthodes appelables sur l'objet prédéfini session • pour le serveur, 2 requêtes successives d'un même client sont indépendantes - void setAttribute( String name, Object value ) ajoute un couple (name, value) pour cette session Objectif : être capable de "suivre" l'activité du client sur +sieurs pages - Object getAttribute( String name ) retourne l'objet associé à la clé name ou null Notion de session - void removeAttribute( String name ) ! les requêtes provenant d'un utilisateur sont associées à une même session enlève le couple de clé name ! les sessions ne sont pas éternelles, elles expirent au bout d'un délai fixé - java.util.Enumeration getAttributeNames() retourne tous les noms d'attributs associés à la session Objet prédéfini session de type HttpSession - void setMaxIntervalTime( int seconds ) ! la session courante ou une nouvelle session spécifie la durée de vie maximum d'une session - long getCreationTime() / long getLastAccessedTime() retourne la date de création / de dernier accès de la session en ms depuis le 1/1/1970, 00h00 GMT → new Date(long) Web 158 Lionel Seinturier Web 159 Lionel Seinturier 6. JSP 6. JSP Partage de données entre JSP Conclusion Notion de contexte d'exécution Permettent d'étendre le comportement des serveurs Web avec des prog. Java = ensemble de couples (name, value) partagées par toutes les JSP instanciées Résumé des fonctionnalités ! objet prédéfini application + code embarqué dans un fichier HTML Méthodes appelables sur l'objet prédéfini application - void setAttribute( String name, Object value ) + portabilité, facilité d'écriture (Java) ajoute un couple (name, value) dans le contexte + gestion des applications requièrant un suivi entre plusieurs programmes - Object getAttribute( String name ) (persistance des données) retourne l'objet associé à la clé name ou null - void removeAttribute( String name ) + JSP chargée et instanciée une seule fois enlève le couple de clé name + JSP exécutée avec des processus légers (threads) - java.util.Enumeration getAttributeNames() retourne tous les noms d'attributs associés au contexte Web 160 Lionel Seinturier Web 161 Lionel Seinturier
  • 8. 6. JSP 6. JSP Tomcat Tomcat Le moteur de JSP et de servlet le plus utilisé Installation jakarta.apache.org Projet soutenu conjointement par Apache et Sun • récupérer d'un .zip sur le site Nécessite une machine virtuelle (Sun ou Microsoft) • dézipper ! occupation disque 11 Mo 2 modes de fonctionnement Autonome (standalone) - bin Scripts de démarrage/d'arrêt - Tomcat est aussi un serveur Web - conf Fichiers de configuration (en particulier server.xml) - il est capable de servir des pages HTML, d'exécuter des servlets et des JSP - doc Documentation - lib Librairies utilisées Tomcat Collaboratif (in-process et out-of-process) - logs Répertoire pour les fichiers d'audit - Tomcat peut s'installer comme une extension d'un serveur Web - src Sources de Tomcat (Apache, Microsoft IIS ou Netscape NetServer) ! meilleures performances pour le service des pages HTML - webapps Répertoire de dépôt des .jsp et des servlets Web 162 Lionel Seinturier Web 163 Lionel Seinturier 6. JSP Tomcat Répertoire webappsROOT • dépose des fichiers • création de sous-répertoires Après lancement de Tomcat, tous les fichiers déposés dans webapps sont accessibles via l'URL http://nom.de.ma.machine:8080/ Ex. : fichier test.jsp dans webappsROOT URL http://nom.de.ma.machine:8080/test.jsp Rq : les .class des servlets sont à déposer dans WEB-INFclasses Web 164 Lionel Seinturier