SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
JSP                                Le langage Java




                JavaServer Pages
                     (JSP)




      XVIII-1                               JMF
JSP                                                Le langage Java



                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                                               JMF
JSP                                                 Le langage Java



                Motivation et historique
      • Nécessité d'avoir des pages HTML
        dynamiques i.e. pages créées lors de la
        requête (météo, cours de la bourse, vente
        aux enchères, etc.)
      • Technologie des server side include (ssi)
      • Des pages HTML contiennent du code à
        exécuter lors de la requête
      • Traiter par le serveur Web car ayant un
        suffixe caractéristique (.shtml, etc.)
      XVIII-3                                                JMF
JSP                                           Le langage Java



                 ssi : la technique
      • Le serveur Web, lorsqu'une telle page est
        demandée, passe la main au programme
        adéquat qui traite la partie de la page le
        concernant.
      • Ce programme génère la partie dynamique
        en HTML
      • La page HTML créée dans son ensemble est
        retournée au client Web.

      XVIII-4                                          JMF
JSP                                                  Le langage Java



                    JavaServer Pages
      • = JSP = la technique des ssi en Java
      • = une page HTML contenant du code Java
      • => meilleure division des tâches :
           – présentation générale par les graphistes
           – coté dynamique par des programmeurs (Java)




      XVIII-5                                                 JMF
JSP                                                     Le langage Java



                Comment ça marche ?
      • Concrêtement :
           – toute la page HTML est convertie en une
             servlet
           – cette servlet est traitée par le moteur Java
             intégré au serveur Web (technologie des
             servlets) et retourne la page HTML construite




      XVIII-6                                                    JMF
JSP                                                   Le langage Java



                     JSP vs. Servlets
      • Servlet = du code Java contenant de
        l'HTML
      • JSP = une page HTML contenant du code
        Java
      • Concrètement avec les JSP :
           – les parties statiques de la page HTML sont
             écrites en HTML
           – les parties dynamiques de la page HTML sont
             écrites en Java
      XVIII-7                                                  JMF
JSP                                                             Le langage Java


                   Notre première JSP
• fichier date.jsp
         <html><head><title>Obtenu par une JSP</title></head>
         <body>

         <h3>Bonjour de ma part </h3> <hr>
         La date courante est : <%= new java.util.Date() %>
         </body>
         </html>


• Traité quand le client demande l’URL de la JSP :
      http://serveurWeb:<port>/.../date.jsp


      XVIII-8                                                            JMF
JSP                                               Le langage Java



         Moteurs de JSP (et de servlets)
      • Pour exécuter des JSP (resp. des servlets), il
        faut un moteur de JSP (resp. de servlets)
        dans le serveur Web.
      • Ces moteurs sont des plug-in pour des
        serveurs Web existants
      • Souvent des serveurs Web eux mêmes
      • Deux candidats plug-in : JRun
        (www.allaire.com), tomcat
        (jakarta.apache.org)
      XVIII-9                                              JMF
JSP                                                 Le langage Java



                  Serveurs Web et JSP
      • Il existe des serveurs Web qui traitent les
        servlets et JSP :
           – IBM WebSphere
           – iPlanet Enterprise 4.x (ex Netscape)
      • Voir à
        java.sun.com/products/jsp



      XVIII-10                                               JMF
JSP                                                Le langage Java



                        Tomcat
      • Développé par la communauté qui
        implémente les spécifs servlets et JSP.
      • Téléchargeable (en version d'utilisation
        élémentaire) gratuitement à
          http://jakarta.apache.org/downloads/bin
          index.html
      • Plug-in de Apache version 1.3 ou plus,
        Microsoft IIS version 4.0 ou plus, Netscape
        Enterprise Server version 3.0 ou plus
      XVIII-11                                              JMF
JSP                                            Le langage Java



                  Tomcat (suite)
      • Peut être utilisé comme serveur Web (bien
        qu'industriellement déconseillé)
      • Existe pour plusieurs Unix et Win32
      • Pour Win32 un .zip ou .exe de 8 Mo
      • Lire docreadme (et les fichiers du
        répertoire doc)
      • Nécessite d'avoir un JRE 1.1 ou plus

      XVIII-12                                          JMF
JSP                                                         Le langage Java



                       Bidouilles Tomcat
      • Il faut aussi :
           – positionner la variable TOMCAT_HOME au
             répertoire racine de la hiérarchie d'installation
             de Tomcat. Exemple :
                 set TOMCAT_HOME=C:jakarta-tomcat-3.2.3
           – positionner la variable JAVA_HOME au
             répertoire racine de la hiérarchie du JDK.
             Exemple :
                 set JAVA_HOME=C:Applicationsjdk1.3



      XVIII-13                                                       JMF
JSP                                              Le langage Java



                    Tomcat et JSP
      • Des exemples de JSP (code + liens pour
        l'exécution) sont disponibles dans
          REP_INSTALL_TOMCAT/webapps/examples/jsp
          /index.html




      XVIII-14                                            JMF
JSP                                              Le langage Java



                  Exécution de JSP
      • Il faut mettre les pages JSP dans un endroit
        particulier du serveur Web
      • Cet endroit dépend du serveur Web et de sa
        configuration
      • Pour tomcat en configuration standard,
          http://serveurWeb/examples/jsp/date.jsp
          ~
          REP_INSTAL_TOMCATwebappsexamplesjsp
          date.jsp

      XVIII-15                                            JMF
JSP                                         Le langage Java



                 Exécution de JSP (suite)
      • Le résultat de date.jsp est :




       • Une autre exécution donne une
         autre date => dynamicité

      XVIII-16                                       JMF
JSP                                                       Le langage Java



                   Que s'est il passé ?
      • Le moteur de JSP a construit une servlet
        (_0002fjsp_0002fdate_0002ejspdate_jsp_0.java
        dans
                                                          )
          REP_INSTALL_TOMCATworklocalhost_8080%2Fexamples

      • Cette phase est parfois appelée la
        traduction de la JSP
      • Puis a compilé et exécuté la servlet


      XVIII-17                                                     JMF
JSP                                                                               Le langage Java

                     La servlet construite
       package jsp;
       ...
       public class _0002fjsp_0002fjsp_0002fdate_0002ejspdate_jsp_1 extends
       HttpJspBase {
                  ...
           public void _jspService(HttpServletRequest request, HttpServletResponse
       response) throws IOException, ServletException {
                    ...
                    _jspx_init();
                    ...
                    pageContext = _jspxFactory.getPageContext(...);
                    session = pageContext.getSession();
                    out = pageContext.getOut();
                    // HTML
            // begin [file="C:...examplesjspdate.jsp";from=(0,0);to=(4,24)]
                 out.write("<html><head><title>Obtenu par une JSP</title></head>rn
       <body>rnrn<h3>Bonjour de ma part</h3> < hr>rn
                  La date courante est : ");
             // end
       //begin [file="C:...examplesjspdate.jsp";from=(4,27)to=(4,49)]
                        out.print( new java.util.Date() );
                    // end
                    // HTML
       // begin [file="C:...examplesjspdate.jsp";from=(4,51);to=(6,7)]
                        out.write("rn</body>rn</html>"); // end
                    ...
           }
       }

      XVIII-18                                                                             JMF
JSP                                                                                           Le langage Java



      Algorithme d'exécution de la JSP
                                 La servlet associée à la
                                 JSP demandée est-elle            Oui
      Requête client
                                 chargée en mémoire du
                                  moteur de servlets ?

                                      Non
                                      Non
        Conteneur de JSP

                           Oui           servlet
                                      précompilée
                                      disponible?

                                      Non                               Le fichier JSP a-t-
                                                            Oui           il été modifié
                                 Traduire en servlet et                 depuis la dernière
                                       compiler                           traduction en
                                                                             servlet ?



                                   Charger la servlet                              Non




       Réponse au client           Exécuter la servlet


      XVIII-19                                                                                         JMF
JSP                                    Le langage Java



                 3 parties d'une JSP

      • scriptlets <%    %>
      • déclarations <%!    %>
      • expressions <%=     %>




      XVIII-20                                  JMF
JSP                                                                      Le langage Java



                    Scriptlets <%                           %>
      • contient du code Java
      • insérer dans _jspservice() de la
        servlet, donc peut utiliser out, request,
        response, etc.
      • Exemple :
      <%
           String[] langages = {"Java", "C++", "Smalltalk", " Simula 67"};
           out.println("<h3>Principaux langages orientés objets : </h3>");
           for (int i=0; i < langages.length; i++) {
                     out.println("<p>" + langages[i] + "</p>");
           }
      %>

      XVIII-21                                                                    JMF
JSP                                                                        Le langage Java



                 Déclarations <%!                                 %>
      • Sont des déclarations Java.
      • Seront insérées comme des membres de la
        servlet
      • Permet de définir des méthodes ou des
        données membres
      • Exemples :
 <%!
         int random4() {                           <%!
                return (int)(Math.random() * 4);         int nombreFetiche = 2;
         }                                         %>
 %>



      XVIII-22                                                                      JMF
JSP                                                                    Le langage Java



                 Expressions <%=                              %>
      • En fait expression Java qui renvoie un
        objet String ou un type primitif.
      • Un raccourci pour <%out.println(…); %>
      • <%= XXX %> ~ <% out.println(XXX); %>
      • attention au ;
      • est donc converti en out.println(…) dans
        la méthode _jspService(…) de la servlet.
La somme est:     <%= (195 + 9 + 273) %>

Je vous réponds à l'adresse :     <%= request.getParameter("email_address") %>


      XVIII-23                                                                   JMF
JSP                                                          Le langage Java



          Objets prédéfinis dans une JSP
      • 3 objets peuvent être immédiatement
        utilisés dans une expression ou une scriptlet
        d'une JSP :
           – out     : le canal de sortie
           –     request (HttpServletRequest) : l'objet requête

           –     response (HttpServletResponse) : l'objet réponse

      • Il y en a d'autres
      • Cf. ces mêmes objets dans une servlet

      XVIII-24                                                        JMF
JSP                                                                 Le langage Java



                 Un exemple complet :
                        complet.jsp
<html><head><title>JSP complet</title></head>
<body>
<%! String[] langages = {"Java", "C++", "Smalltalk", "Simula 67"};
    int random4() {
             return (int) (Math.random() * 4);
    }
%>
<p>Parmi tous les langages orientés objets :</p>
<ol>
<%
    for (int i=0; i < langages.length; i++) {
              out.println("<li>" + langages[i] + "</li>");
    }
%>
</ol>
<p>Le prochain que j'apprends est <b><%= langages[random4()] %> </b></p>
</body>
</html>

      XVIII-25                                                               JMF
JSP                            Le langage Java


                 complet.jsp




      XVIII-26                          JMF
JSP                                              Le langage Java



                 Déboguer les JSP
      • La fenêtre de lancement du serveur Web
        donne des indications. Suivant les serveurs,
        une page HTML est retournée avec des
        indications.
      • Ces éléments sont très souvent relatifs à la
        servlet et pas à la page JSP.
      • Directives <%@ page errorPage= ...%>
        et
          <%@ page isErrorPage="true"%>
      XVIII-27                                            JMF
JSP                                                Le langage Java



                 Déboguer les JSP (suite)

      • Un page JSP peut référencer une page
        erreur par <%@ page
          errorPage="page.jsp"%>
      • La page erreur est indiquée par l'entête
          <%@ page isErrorPage="true"%>
      • Si une exception est levée le traitement est
        dérouté vers la page erreur qui connaît la
        référence exception qui repère l'exception
      XVIII-28                                              JMF
JSP                                                                     Le langage Java



             Déboguer les JSP : exemple

                                 langages.jsp
          <%@ page errorPage="erreur.jsp"%>
          <%! String[] langages = {"Java", "C++", "Smalltalk", "Simula 67"};
          %>
          <p>Parmi tous les langages orientés objets :</p>
          <ol>
          <%
              // levée d'une ArrayIndexOutOfBoundsException
              for (int i=0; i < 7; i++) {
                        out.println("<li>" + langages[i] + "</li>");
              }
          %>




      XVIII-29                                                                   JMF
JSP                                                                    Le langage Java



             Déboguer les JSP : exemple
                       (suite)
                                  erreur.jsp
       <%@ page isErrorPage="true"%>
       <html><body>
       exception levée <b> <%= exception %> </b>
       <hr>
       <h3>trace de la pile</h3>
       <pre>
       <%
            java.io.PrintWriter myWriter = new java.io.PrintWriter(out);
            exception.printStackTrace(myWriter);
       %>
       </pre>
       </body></html>




      XVIII-30                                                                  JMF
JSP                                         Le langage Java



       Déboguer les JSP : exemple (fin)
      • Charger la page langages.jsp amène à :




      XVIII-31                                       JMF
JSP                                                                    Le langage Java



                    Enchaîner les pages
      • Un page JSP peut en appeler une autre par
        la directive : <jsp:forward>
      • Syntaxe :
          <jsp:forward page="pageDeRedirection" />

                         lanceForward.jsp
         <% String repUtilisateur = request.getParameter("repTextField");
            int rep = Integer.parseInt(repUtilisateur);
                  if ((rep % 2) == 0) {
         %>
                  <jsp:forward page="gagne.jsp"/>
         <% } else { %>
                  <jsp:forward page="perdu.jsp"/>
         <% } %>
         On n'affiche jamais cela

      XVIII-32                                                                  JMF
JSP                                                                                       Le langage Java



                 Enchaîner les pages (suite)

      • Après un <jsp:forward>, le traitement
        est entièrement pris en charge par nouvelle
        page
                                                        Serveur Web     lanceForward.jsp
                 Navigateur
                              1. lanceForward.jsp
                                                                          <jsp:forward
                                                                            page="gagne.jsp"/>

                              3. Retourner gagne.jsp   gagne.jsp
                                                       worker.jsp
                                                                      Transmis à gagne.jsp




      XVIII-33                                                                                     JMF
JSP                                             Le langage Java



                 JSP et Java beans
      • But : avoir le moins de code Java possible
        dans une page JSP (HTML)
      • Sous-traiter le code à un Java bean
      • balise XML : <jsp:useBean>




      XVIII-34                                           JMF
JSP                                             Le langage Java



                 JSP et Java beans (suite)
      • Syntaxe générale :
          <jsp:useBean id="nomInstanceJavaBean"
          class="nomClasseDuBean"
          scope="request|session|application|page
          ">
          </jsp:useBean>
      • Le bean est alors utilisable par
        nomInstanceJavaBean
      • balise sans corps donc utilisation de
          <jsp:useBean … />
      XVIII-35                                           JMF
JSP                                                                                       Le langage Java



                         l'attribut scope
      • Il indique la portée du bean.
      valeur                                       Description
request          Le bean est valide pour cette requête. Il est utilisable dans les pages de redirection
                 de la requête (<jsp:forward>). Il est détruit à la fin de la requête.
page             Similaire à request, mais le bean n'est pas transmis aux pages de redirection
                 <jsp:forward>. C'est la portée par défaut
session          Le bean est valide pour la session courante. S’ n’il existe pas encore dans la
                 session courante, il est créé et placé dans la session du client. Il est réutilisé
                 jusqu’ ce que la session soit invalidée
                        à
application       Le bean est valide pour l’ application courante. Il est créé une fois et partagé par
                  tous les clients des JSP.




      XVIII-36                                                                                     JMF
JSP                                                                        Le langage Java



             JSP et Java beans : exemple
      • Soit le bean :
                 public class SimpleBean implements java.io.Serializable
                 {

                     private int compter;

                     public SimpleBean() {
                            compter = 0;
                     }

                     public void setCompter(int theValue) {
                            compter = theValue;
                     }

                     public int getCompter() {
                          return compter;
                     }

                     public void increment() {
                            compter++;
                     }
                 }


      XVIII-37                                                                      JMF
JSP                                                           Le langage Java



       Utilisation du bean dans une JSP
      • Utilisation à l'aide de son nom
      • Récupération des propriétés :
           – Par appel de méthode getXXX() :
           – Par la balise <jsp:getProperty …>
      <p> on repere le bean par le nom nomBean<br>
      <jsp:useBean id="nomBean" class="SimpleBean" scope="session">
      </jsp:useBean>
      <p> On accede a une propriéte avec une expresion:
      <br> compteur = <%= nomBean.getCompter() %>
      <hr>
      On incrémente le compteur <% nomBean.increment(); %>
      <p>On peut accéder à la propriété par une balise :<br>
      <jsp:getProperty name="nomBean" property="compter" />


      XVIII-38                                                         JMF
Le langage Java
JSP
                 Positionner les propriétés
                  du bean dans une JSP
      • Par appel de méthode setXXX(...) :
      • Par la balise <jsp:setProperty …>
      <p> on repere le bean par le nom nomBean<br>
      <jsp:useBean id="nomBean" class="SimpleBean" scope="session">
      </jsp:useBean>

      <p> On positionne une propriéte avec une expresion:
      <br> compteur = <%= nomBean.setCompter(6) %>

      <p>ou par une balise :<br>
      <jsp:setProperty name=”noBean" property="compter" value="6" />




      XVIII-39                                                           JMF
JSP                                           Le langage Java



                 Architecture MVC

      • modèle = les données accédées par un code
        Java (JDBC, RMI, EJB, etc.)
      • vues = JSP
      • contrôleur = servlets




      XVIII-40                                         JMF
JSP                                                                           Le langage Java

                   Architecture MVC (suite)
                                                              Modèle

                                   Servlet (Contrôleur)          Composants

                           1                              2
                 Requête



                               3

                                            JSP (Vue)

           Réponse
                               4




  • Syntaxe dans la servlet pour lancer la JSP :
      public void doPost(HttpServletRequest request, HttpServletResponse response){
         ServletContext context = getServletContext(); // héritée de GenericServlet
         RequestDispatcher dispatcher =
               context.getRequestDispatcher("/maPageMiseEnForme.jsp");
         dispatcher.forward(request, response);
      }
      XVIII-41                                                                         JMF
JSP                                                                                       Le langage Java



                  Architecture MVC (suite)
• La servlet peut passer des valeurs à la JSP
  appelé grâce à setAttribute()
        public void doPost(HttpServletRequest request, HttpServletResponse response) {
                 // appelle les méthodes sur les objets métiers
                 ArrayList theList = // un objet à passer
                 // ajoute à la requête
                 request.setAttribute("nomDelObjet", theList);
               ServletContext context = getServletContext();
              RequestDispatcher dispatcher = context.getRequestDispatcher("/jspAAppeler.jsp");
               dispatcher.forward(request, response);
        }


 • La JSP extrait les objets de request grâce à
   getAttribute()
         <%  ArrayList theList = (ArrayList)
                request.getAttribute("nomDelObjet");
         // maintenant, utiliser l'ArrayList
         %>

      XVIII-42                                                                                     JMF
JSP                                           Le langage Java



                    Bibliographie

      • JavaServer Pages. Hans Bergsten; ed
        O'Reilly. ISBN 1-56592-746-X
      • Technologie Apache/Tomcat à
          http://jakarta.apache.org




      XVIII-43                                         JMF

Weitere ähnliche Inhalte

Was ist angesagt?

Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Eric Bourdet
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentationYassine Badri
 
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 services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlinangeeLee
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
JBoss - chapitre JMX
JBoss - chapitre JMXJBoss - chapitre JMX
JBoss - chapitre JMXFranck SIMON
 
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
 
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
 
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
 
Presentation Tomcat Load Balancer
Presentation Tomcat Load BalancerPresentation Tomcat Load Balancer
Presentation Tomcat Load Balancertarkaus
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web ServicesLilia Sfaxi
 
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
 

Was ist angesagt? (20)

Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentation
 
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
 
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)
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
JBoss - chapitre JMX
JBoss - chapitre JMXJBoss - chapitre JMX
JBoss - chapitre JMX
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
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
 
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
 
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
 
Java RMI
Java RMIJava RMI
Java RMI
 
Presentation Tomcat Load Balancer
Presentation Tomcat Load BalancerPresentation Tomcat Load Balancer
Presentation Tomcat Load Balancer
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
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
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
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
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Cours jee 1
Cours jee 1Cours jee 1
Cours jee 1
 

Andere mochten auch

HTML, CSS and Java Scripts Basics
HTML, CSS and Java Scripts BasicsHTML, CSS and Java Scripts Basics
HTML, CSS and Java Scripts BasicsSun Technlogies
 
Cascading Style Sheets - CSS
Cascading Style Sheets - CSSCascading Style Sheets - CSS
Cascading Style Sheets - CSSSun Technlogies
 
Système de gestion de tickets
Système de gestion de ticketsSystème de gestion de tickets
Système de gestion de ticketsraymen87
 
Les Applications CRM mobile Tunisie Telecom Pour BlackBerry
Les Applications CRM mobile Tunisie Telecom Pour BlackBerryLes Applications CRM mobile Tunisie Telecom Pour BlackBerry
Les Applications CRM mobile Tunisie Telecom Pour BlackBerrytunisieblackberry
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Rencontre du CRIPS / Act Up-Paris "Personnes trans : quels enjeux de santé ?"...
Rencontre du CRIPS / Act Up-Paris "Personnes trans : quels enjeux de santé ?"...Rencontre du CRIPS / Act Up-Paris "Personnes trans : quels enjeux de santé ?"...
Rencontre du CRIPS / Act Up-Paris "Personnes trans : quels enjeux de santé ?"...Santé des trans
 
Html 5 in a big nutshell
Html 5 in a big nutshellHtml 5 in a big nutshell
Html 5 in a big nutshellLennart Schoors
 
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...Hajer Dahech
 
Html / CSS Presentation
Html / CSS PresentationHtml / CSS Presentation
Html / CSS PresentationShawn Calvert
 

Andere mochten auch (14)

Arşivlik Fotoğraflar
Arşivlik FotoğraflarArşivlik Fotoğraflar
Arşivlik Fotoğraflar
 
HTML, CSS and Java Scripts Basics
HTML, CSS and Java Scripts BasicsHTML, CSS and Java Scripts Basics
HTML, CSS and Java Scripts Basics
 
Cascading Style Sheets - CSS
Cascading Style Sheets - CSSCascading Style Sheets - CSS
Cascading Style Sheets - CSS
 
Système de gestion de tickets
Système de gestion de ticketsSystème de gestion de tickets
Système de gestion de tickets
 
Les Applications CRM mobile Tunisie Telecom Pour BlackBerry
Les Applications CRM mobile Tunisie Telecom Pour BlackBerryLes Applications CRM mobile Tunisie Telecom Pour BlackBerry
Les Applications CRM mobile Tunisie Telecom Pour BlackBerry
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Rencontre du CRIPS / Act Up-Paris "Personnes trans : quels enjeux de santé ?"...
Rencontre du CRIPS / Act Up-Paris "Personnes trans : quels enjeux de santé ?"...Rencontre du CRIPS / Act Up-Paris "Personnes trans : quels enjeux de santé ?"...
Rencontre du CRIPS / Act Up-Paris "Personnes trans : quels enjeux de santé ?"...
 
Tutoriel java
Tutoriel javaTutoriel java
Tutoriel java
 
Html 5 in a big nutshell
Html 5 in a big nutshellHtml 5 in a big nutshell
Html 5 in a big nutshell
 
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
 
Up to Speed on HTML 5 and CSS 3
Up to Speed on HTML 5 and CSS 3Up to Speed on HTML 5 and CSS 3
Up to Speed on HTML 5 and CSS 3
 
Html Ppt
Html PptHtml Ppt
Html Ppt
 
HTML CSS Basics
HTML CSS BasicsHTML CSS Basics
HTML CSS Basics
 
Html / CSS Presentation
Html / CSS PresentationHtml / CSS Presentation
Html / CSS Presentation
 

Ähnlich wie Jsp

API JSP avec Java EE.pptx
API JSP avec Java EE.pptxAPI JSP avec Java EE.pptx
API JSP avec Java EE.pptxramadanmahdi
 
Run java vs ruby
Run java vs rubyRun java vs ruby
Run java vs rubypinguin666
 
API JSP2 avec Java EE.pdf
API JSP2 avec Java EE.pdfAPI JSP2 avec Java EE.pdf
API JSP2 avec Java EE.pdframadanmahdi
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfRachida19
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWinslo Nwan
 
Architecture sap web AS
Architecture sap web ASArchitecture sap web AS
Architecture sap web ASMrabtei Ayoub
 
Architecture SAP Web AS
Architecture SAP Web ASArchitecture SAP Web AS
Architecture SAP Web ASMrabtei Ayoub
 
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
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & TechniquesRachid NID SAID
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbHINDGUENDOUZ
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introductionsabrine_hamdi
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfJean-Michel Doudoux
 
Soutenance Stage Licence
Soutenance Stage LicenceSoutenance Stage Licence
Soutenance Stage LicenceMathias Kluba
 

Ähnlich wie 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
 
Run java vs ruby
Run java vs rubyRun java vs ruby
Run java vs ruby
 
API JSP2 avec Java EE.pdf
API JSP2 avec Java EE.pdfAPI JSP2 avec Java EE.pdf
API JSP2 avec Java EE.pdf
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdf
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas doc
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010
 
Architecture sap web AS
Architecture sap web ASArchitecture sap web AS
Architecture sap web AS
 
Architecture SAP Web AS
Architecture SAP Web ASArchitecture SAP Web AS
Architecture SAP Web AS
 
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
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
EJB.pdf
EJB.pdfEJB.pdf
EJB.pdf
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Gwt
GwtGwt
Gwt
 
Java j2ee
Java j2eeJava j2ee
Java j2ee
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & Techniques
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introduction
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
 
Soutenance Stage Licence
Soutenance Stage LicenceSoutenance Stage Licence
Soutenance Stage Licence
 

Kürzlich hochgeladen

Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 

Kürzlich hochgeladen (19)

Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 

Jsp

  • 1. JSP Le langage Java JavaServer Pages (JSP) XVIII-1 JMF
  • 2. JSP Le langage Java 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 JMF
  • 3. JSP Le langage Java Motivation et historique • Nécessité d'avoir des pages HTML dynamiques i.e. pages créées lors de la requête (météo, cours de la bourse, vente aux enchères, etc.) • Technologie des server side include (ssi) • Des pages HTML contiennent du code à exécuter lors de la requête • Traiter par le serveur Web car ayant un suffixe caractéristique (.shtml, etc.) XVIII-3 JMF
  • 4. JSP Le langage Java ssi : la technique • Le serveur Web, lorsqu'une telle page est demandée, passe la main au programme adéquat qui traite la partie de la page le concernant. • Ce programme génère la partie dynamique en HTML • La page HTML créée dans son ensemble est retournée au client Web. XVIII-4 JMF
  • 5. JSP Le langage Java JavaServer Pages • = JSP = la technique des ssi en Java • = une page HTML contenant du code Java • => meilleure division des tâches : – présentation générale par les graphistes – coté dynamique par des programmeurs (Java) XVIII-5 JMF
  • 6. JSP Le langage Java Comment ça marche ? • Concrêtement : – toute la page HTML est convertie en une servlet – cette servlet est traitée par le moteur Java intégré au serveur Web (technologie des servlets) et retourne la page HTML construite XVIII-6 JMF
  • 7. JSP Le langage Java JSP vs. Servlets • Servlet = du code Java contenant de l'HTML • JSP = une page HTML contenant du code Java • Concrètement avec les JSP : – les parties statiques de la page HTML sont écrites en HTML – les parties dynamiques de la page HTML sont écrites en Java XVIII-7 JMF
  • 8. JSP Le langage Java Notre première JSP • fichier date.jsp <html><head><title>Obtenu par une JSP</title></head> <body> <h3>Bonjour de ma part </h3> <hr> La date courante est : <%= new java.util.Date() %> </body> </html> • Traité quand le client demande l’URL de la JSP : http://serveurWeb:<port>/.../date.jsp XVIII-8 JMF
  • 9. JSP Le langage Java Moteurs de JSP (et de servlets) • Pour exécuter des JSP (resp. des servlets), il faut un moteur de JSP (resp. de servlets) dans le serveur Web. • Ces moteurs sont des plug-in pour des serveurs Web existants • Souvent des serveurs Web eux mêmes • Deux candidats plug-in : JRun (www.allaire.com), tomcat (jakarta.apache.org) XVIII-9 JMF
  • 10. JSP Le langage Java Serveurs Web et JSP • Il existe des serveurs Web qui traitent les servlets et JSP : – IBM WebSphere – iPlanet Enterprise 4.x (ex Netscape) • Voir à java.sun.com/products/jsp XVIII-10 JMF
  • 11. JSP Le langage Java Tomcat • Développé par la communauté qui implémente les spécifs servlets et JSP. • Téléchargeable (en version d'utilisation élémentaire) gratuitement à http://jakarta.apache.org/downloads/bin index.html • Plug-in de Apache version 1.3 ou plus, Microsoft IIS version 4.0 ou plus, Netscape Enterprise Server version 3.0 ou plus XVIII-11 JMF
  • 12. JSP Le langage Java Tomcat (suite) • Peut être utilisé comme serveur Web (bien qu'industriellement déconseillé) • Existe pour plusieurs Unix et Win32 • Pour Win32 un .zip ou .exe de 8 Mo • Lire docreadme (et les fichiers du répertoire doc) • Nécessite d'avoir un JRE 1.1 ou plus XVIII-12 JMF
  • 13. JSP Le langage Java Bidouilles Tomcat • Il faut aussi : – positionner la variable TOMCAT_HOME au répertoire racine de la hiérarchie d'installation de Tomcat. Exemple : set TOMCAT_HOME=C:jakarta-tomcat-3.2.3 – positionner la variable JAVA_HOME au répertoire racine de la hiérarchie du JDK. Exemple : set JAVA_HOME=C:Applicationsjdk1.3 XVIII-13 JMF
  • 14. JSP Le langage Java Tomcat et JSP • Des exemples de JSP (code + liens pour l'exécution) sont disponibles dans REP_INSTALL_TOMCAT/webapps/examples/jsp /index.html XVIII-14 JMF
  • 15. JSP Le langage Java Exécution de JSP • Il faut mettre les pages JSP dans un endroit particulier du serveur Web • Cet endroit dépend du serveur Web et de sa configuration • Pour tomcat en configuration standard, http://serveurWeb/examples/jsp/date.jsp ~ REP_INSTAL_TOMCATwebappsexamplesjsp date.jsp XVIII-15 JMF
  • 16. JSP Le langage Java Exécution de JSP (suite) • Le résultat de date.jsp est : • Une autre exécution donne une autre date => dynamicité XVIII-16 JMF
  • 17. JSP Le langage Java Que s'est il passé ? • Le moteur de JSP a construit une servlet (_0002fjsp_0002fdate_0002ejspdate_jsp_0.java dans ) REP_INSTALL_TOMCATworklocalhost_8080%2Fexamples • Cette phase est parfois appelée la traduction de la JSP • Puis a compilé et exécuté la servlet XVIII-17 JMF
  • 18. JSP Le langage Java La servlet construite package jsp; ... public class _0002fjsp_0002fjsp_0002fdate_0002ejspdate_jsp_1 extends HttpJspBase { ... public void _jspService(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { ... _jspx_init(); ... pageContext = _jspxFactory.getPageContext(...); session = pageContext.getSession(); out = pageContext.getOut(); // HTML // begin [file="C:...examplesjspdate.jsp";from=(0,0);to=(4,24)] out.write("<html><head><title>Obtenu par une JSP</title></head>rn <body>rnrn<h3>Bonjour de ma part</h3> < hr>rn La date courante est : "); // end //begin [file="C:...examplesjspdate.jsp";from=(4,27)to=(4,49)] out.print( new java.util.Date() ); // end // HTML // begin [file="C:...examplesjspdate.jsp";from=(4,51);to=(6,7)] out.write("rn</body>rn</html>"); // end ... } } XVIII-18 JMF
  • 19. JSP Le langage Java Algorithme d'exécution de la JSP La servlet associée à la JSP demandée est-elle Oui Requête client chargée en mémoire du moteur de servlets ? Non Non Conteneur de JSP Oui servlet précompilée disponible? Non Le fichier JSP a-t- Oui il été modifié Traduire en servlet et depuis la dernière compiler traduction en servlet ? Charger la servlet Non Réponse au client Exécuter la servlet XVIII-19 JMF
  • 20. JSP Le langage Java 3 parties d'une JSP • scriptlets <% %> • déclarations <%! %> • expressions <%= %> XVIII-20 JMF
  • 21. JSP Le langage Java Scriptlets <% %> • contient du code Java • insérer dans _jspservice() de la servlet, donc peut utiliser out, request, response, etc. • Exemple : <% String[] langages = {"Java", "C++", "Smalltalk", " Simula 67"}; out.println("<h3>Principaux langages orientés objets : </h3>"); for (int i=0; i < langages.length; i++) { out.println("<p>" + langages[i] + "</p>"); } %> XVIII-21 JMF
  • 22. JSP Le langage Java Déclarations <%! %> • Sont des déclarations Java. • Seront insérées comme des membres de la servlet • Permet de définir des méthodes ou des données membres • Exemples : <%! int random4() { <%! return (int)(Math.random() * 4); int nombreFetiche = 2; } %> %> XVIII-22 JMF
  • 23. JSP Le langage Java Expressions <%= %> • En fait expression Java qui renvoie un objet String ou un type primitif. • Un raccourci pour <%out.println(…); %> • <%= XXX %> ~ <% out.println(XXX); %> • attention au ; • est donc converti en out.println(…) dans la méthode _jspService(…) de la servlet. La somme est: <%= (195 + 9 + 273) %> Je vous réponds à l'adresse : <%= request.getParameter("email_address") %> XVIII-23 JMF
  • 24. JSP Le langage Java Objets prédéfinis dans une JSP • 3 objets peuvent être immédiatement utilisés dans une expression ou une scriptlet d'une JSP : – out : le canal de sortie – request (HttpServletRequest) : l'objet requête – response (HttpServletResponse) : l'objet réponse • Il y en a d'autres • Cf. ces mêmes objets dans une servlet XVIII-24 JMF
  • 25. JSP Le langage Java Un exemple complet : complet.jsp <html><head><title>JSP complet</title></head> <body> <%! String[] langages = {"Java", "C++", "Smalltalk", "Simula 67"}; int random4() { return (int) (Math.random() * 4); } %> <p>Parmi tous les langages orientés objets :</p> <ol> <% for (int i=0; i < langages.length; i++) { out.println("<li>" + langages[i] + "</li>"); } %> </ol> <p>Le prochain que j'apprends est <b><%= langages[random4()] %> </b></p> </body> </html> XVIII-25 JMF
  • 26. JSP Le langage Java complet.jsp XVIII-26 JMF
  • 27. JSP Le langage Java Déboguer les JSP • La fenêtre de lancement du serveur Web donne des indications. Suivant les serveurs, une page HTML est retournée avec des indications. • Ces éléments sont très souvent relatifs à la servlet et pas à la page JSP. • Directives <%@ page errorPage= ...%> et <%@ page isErrorPage="true"%> XVIII-27 JMF
  • 28. JSP Le langage Java Déboguer les JSP (suite) • Un page JSP peut référencer une page erreur par <%@ page errorPage="page.jsp"%> • La page erreur est indiquée par l'entête <%@ page isErrorPage="true"%> • Si une exception est levée le traitement est dérouté vers la page erreur qui connaît la référence exception qui repère l'exception XVIII-28 JMF
  • 29. JSP Le langage Java Déboguer les JSP : exemple langages.jsp <%@ page errorPage="erreur.jsp"%> <%! String[] langages = {"Java", "C++", "Smalltalk", "Simula 67"}; %> <p>Parmi tous les langages orientés objets :</p> <ol> <% // levée d'une ArrayIndexOutOfBoundsException for (int i=0; i < 7; i++) { out.println("<li>" + langages[i] + "</li>"); } %> XVIII-29 JMF
  • 30. JSP Le langage Java Déboguer les JSP : exemple (suite) erreur.jsp <%@ page isErrorPage="true"%> <html><body> exception levée <b> <%= exception %> </b> <hr> <h3>trace de la pile</h3> <pre> <% java.io.PrintWriter myWriter = new java.io.PrintWriter(out); exception.printStackTrace(myWriter); %> </pre> </body></html> XVIII-30 JMF
  • 31. JSP Le langage Java Déboguer les JSP : exemple (fin) • Charger la page langages.jsp amène à : XVIII-31 JMF
  • 32. JSP Le langage Java Enchaîner les pages • Un page JSP peut en appeler une autre par la directive : <jsp:forward> • Syntaxe : <jsp:forward page="pageDeRedirection" /> lanceForward.jsp <% String repUtilisateur = request.getParameter("repTextField"); int rep = Integer.parseInt(repUtilisateur); if ((rep % 2) == 0) { %> <jsp:forward page="gagne.jsp"/> <% } else { %> <jsp:forward page="perdu.jsp"/> <% } %> On n'affiche jamais cela XVIII-32 JMF
  • 33. JSP Le langage Java Enchaîner les pages (suite) • Après un <jsp:forward>, le traitement est entièrement pris en charge par nouvelle page Serveur Web lanceForward.jsp Navigateur 1. lanceForward.jsp <jsp:forward page="gagne.jsp"/> 3. Retourner gagne.jsp gagne.jsp worker.jsp Transmis à gagne.jsp XVIII-33 JMF
  • 34. JSP Le langage Java JSP et Java beans • But : avoir le moins de code Java possible dans une page JSP (HTML) • Sous-traiter le code à un Java bean • balise XML : <jsp:useBean> XVIII-34 JMF
  • 35. JSP Le langage Java JSP et Java beans (suite) • Syntaxe générale : <jsp:useBean id="nomInstanceJavaBean" class="nomClasseDuBean" scope="request|session|application|page "> </jsp:useBean> • Le bean est alors utilisable par nomInstanceJavaBean • balise sans corps donc utilisation de <jsp:useBean … /> XVIII-35 JMF
  • 36. JSP Le langage Java l'attribut scope • Il indique la portée du bean. valeur Description request Le bean est valide pour cette requête. Il est utilisable dans les pages de redirection de la requête (<jsp:forward>). Il est détruit à la fin de la requête. page Similaire à request, mais le bean n'est pas transmis aux pages de redirection <jsp:forward>. C'est la portée par défaut session Le bean est valide pour la session courante. S’ n’il existe pas encore dans la session courante, il est créé et placé dans la session du client. Il est réutilisé jusqu’ ce que la session soit invalidée à application Le bean est valide pour l’ application courante. Il est créé une fois et partagé par tous les clients des JSP. XVIII-36 JMF
  • 37. JSP Le langage Java JSP et Java beans : exemple • Soit le bean : public class SimpleBean implements java.io.Serializable { private int compter; public SimpleBean() { compter = 0; } public void setCompter(int theValue) { compter = theValue; } public int getCompter() { return compter; } public void increment() { compter++; } } XVIII-37 JMF
  • 38. JSP Le langage Java Utilisation du bean dans une JSP • Utilisation à l'aide de son nom • Récupération des propriétés : – Par appel de méthode getXXX() : – Par la balise <jsp:getProperty …> <p> on repere le bean par le nom nomBean<br> <jsp:useBean id="nomBean" class="SimpleBean" scope="session"> </jsp:useBean> <p> On accede a une propriéte avec une expresion: <br> compteur = <%= nomBean.getCompter() %> <hr> On incrémente le compteur <% nomBean.increment(); %> <p>On peut accéder à la propriété par une balise :<br> <jsp:getProperty name="nomBean" property="compter" /> XVIII-38 JMF
  • 39. Le langage Java JSP Positionner les propriétés du bean dans une JSP • Par appel de méthode setXXX(...) : • Par la balise <jsp:setProperty …> <p> on repere le bean par le nom nomBean<br> <jsp:useBean id="nomBean" class="SimpleBean" scope="session"> </jsp:useBean> <p> On positionne une propriéte avec une expresion: <br> compteur = <%= nomBean.setCompter(6) %> <p>ou par une balise :<br> <jsp:setProperty name=”noBean" property="compter" value="6" /> XVIII-39 JMF
  • 40. JSP Le langage Java Architecture MVC • modèle = les données accédées par un code Java (JDBC, RMI, EJB, etc.) • vues = JSP • contrôleur = servlets XVIII-40 JMF
  • 41. JSP Le langage Java Architecture MVC (suite) Modèle Servlet (Contrôleur) Composants 1 2 Requête 3 JSP (Vue) Réponse 4 • Syntaxe dans la servlet pour lancer la JSP : public void doPost(HttpServletRequest request, HttpServletResponse response){ ServletContext context = getServletContext(); // héritée de GenericServlet RequestDispatcher dispatcher = context.getRequestDispatcher("/maPageMiseEnForme.jsp"); dispatcher.forward(request, response); } XVIII-41 JMF
  • 42. JSP Le langage Java Architecture MVC (suite) • La servlet peut passer des valeurs à la JSP appelé grâce à setAttribute() public void doPost(HttpServletRequest request, HttpServletResponse response) { // appelle les méthodes sur les objets métiers ArrayList theList = // un objet à passer // ajoute à la requête request.setAttribute("nomDelObjet", theList); ServletContext context = getServletContext(); RequestDispatcher dispatcher = context.getRequestDispatcher("/jspAAppeler.jsp"); dispatcher.forward(request, response); } • La JSP extrait les objets de request grâce à getAttribute() <% ArrayList theList = (ArrayList) request.getAttribute("nomDelObjet"); // maintenant, utiliser l'ArrayList %> XVIII-42 JMF
  • 43. JSP Le langage Java Bibliographie • JavaServer Pages. Hans Bergsten; ed O'Reilly. ISBN 1-56592-746-X • Technologie Apache/Tomcat à http://jakarta.apache.org XVIII-43 JMF