1 Chapitre 3 : Java Server Pages (JSP) cours JEE - Dr. Abdessamad Belangour 122

1 Chapitre 3 : Java Server Pages (JSP) cours JEE - Dr. Abdessamad Belangour 122 Introduction JSP : Java Server Pages Java Server Pages est une technologie qui combine Java et des Tags HTML dans un même document pour produire un fichier JSP. But : faciliter la génération dynamique de contenu de sites Web. Similitudes : PHP, ASP, etc.. 2 cours JEE - Dr. Abdessamad Belangour 123 Exemple de fichier JSP <html> <head> <title>Exemple JSP</title> </head> <body> la somme de 2 et 2 est <%=2+2%> </body> </html> test.jsp cours JEE - Dr. Abdessamad Belangour 124 Serveur Web L'utilisation des JSP implique d'avoir un serveur HTTP (logiciel servant à diffuser les pages Web) disposant d'une extension capable de traiter les JSP. Exemple de serveurs HTTP gratuit supportant JSP: ●Tomcat proposé par la fondation Apache. ●JSWDK proposé par SUN Comme pour les servlets, nous travaillerons avec Tomcat. 3 cours JEE - Dr. Abdessamad Belangour 125 Traitement des JSP  L'interprétation d'une page contenant des instructions JSP se fait de la manière suivante : 1. L’ utilisateur demande, via son navigateur (client), un document possédant l'extension .jsp 2. Le serveur HTTP lance une servlet (application Java serveur) qui construit le code Java à partir du code contenu dans la page HTML. 3. Le programme résultant est compilé puis exécuté sur le serveur. 4. Le résultat est réintroduit dans la page renvoyée au client. Traitement des JSP cours JEE - Dr. Abdessamad Belangour 126 <HTML> 4 <HTML> <HTML> <%=2+2 %> <HTML> Test.jsp out.println(2+2); Test.java Test.class 00100110….. Génération du code java correspondant Compilation du code java Génération de la page HTML 1 2 3 4 cours JEE - Dr. Abdessamad Belangour 127 Structure d’un fichier JSP Similaire à la structure d’un fichier HTML Elle se compose essentiellement de quatre types de tags: ●Tag de directive ●Tag de commentaire ●Tag de Scriplet ●Tag d’expression cours JEE - Dr. Abdessamad Belangour 128 Directives JSP Les directives contrôlent comment le serveur WEB doit générer la Servlet Elles sont placées entre les symboles <%@ et %> Syntaxe : <%@ directive { attribut="valeur"} %> Les directives les plus importantes sont: ●include : indique au compilateur d’inclure un autre fichier ●page : définit les attributs spécifiques à une page 5 cours JEE - Dr. Abdessamad Belangour 129 Directives JSP : include Cette inclusion se fait au moment de la conversion Tout le contenu du fichier externe est inclus comme s’il était saisi directement dans la page JSP Pas de séparation de la portée des variables Exemple : ●<%@ include file="unAutreFichier.jsp" %> cours JEE - Dr. Abdessamad Belangour 130 Exemple pratique <HTML> <HEAD> <TITLE>Page de démonstration</TITLE> </HEAD> <BODY> je suis dans l’entete de la page<br> <%! String mon_nom; %> <% mon_nom = "Ali"; %> <br>Je suis dans le pied de page. </BODY> </HTML> <%@ include file = "/entete.html" %> <%@ include file = "/corps.jsp" %> Bonjour <%= mon_nom %> <%@ include file = "/piedpage.html" %> entete.html corps.jsp piedpage.html index.jsp 6 cours JEE - Dr. Abdessamad Belangour 131 Directives JSP : page Attribut exemple valeurs Description language java Indique le langage utilisé. Java par défaut extends Package.class Hérite de l’interface du package choisi. session false Si initialisé à false vous ne pouvez pas utiliser les sessions. True par défaut. import Java.util.*, *.class , java.* Importe les classes dont vous avez besoin. buffer 5 kb Taille en kb de la mémoire tampon qui contient le flux de données à imprimer sur la JSP. 8 kb par défaut. autoflush true Si à false il ne vide pas automatiquement le buffer une fois rempli. Si vous avez mis le buffer à none vous ne pouvez mettre autoFlush à false. Défaut à true.  La directive page définit les attributs spécifiques à une page.  La liste des attributs possibles pour la directive page est comme suit : cours JEE - Dr. Abdessamad Belangour 132 Directives JSP : page Attribut Exemple de valeur Description isThreadSafe false Si à false le serveur d’applications ne permet qu’à un client à la fois d’accéder à la JSP. Défaut à true. info Ma première JSP Information qui apparaît dans le document jsp compilé et utilisé par le serveur. errorPage Erreurpage.html Erreur.jsp Adresse de la page d’erreur sur laquelle est renvoyé le visiteur en cas d’erreur (Exception) de la JSP. contentType text/html Le type MIME et le jeu de caractères à utiliser dans cette JSP. Par défaut text/html; charset=ISO-8859-1 isErrorPage true Si true la JSP peut afficher l’erreur renvoyée par l’exception. True par défaut. pageEnconding ISO-8859-1 ISO-8859-1 par défaut. 7 cours JEE - Dr. Abdessamad Belangour 133 Directives JSP : page Remarque : ●Vous n’avez pas besoin d’importer les classes suivantes, qui le sont déjà implicitement: java.lang.* javax.servlet.* javax.servlet.http.* javax.servlet.jsp.* Exemple de directives : ●<%@ page import=" java.util.*" errorPage=" erreur.jsp" buffer="5kb" session="false" %> cours JEE - Dr. Abdessamad Belangour 134 Éléments de scripts JSP : commentaire  Cet élément de script est utilisé pour faire un commentaire dans le code JSP  Le texte dans un commentaire JSP ne sera pas envoyé au client ni compilé dans la Servlet  Les commentaires sont placés entre les symboles <%-- et --%> Example.jsp: <html> <!– commentaire HTML --> <%-- commentaire JSP --%> </html> <html> <!-- commentaire HTML --> </html> 8 cours JEE - Dr. Abdessamad Belangour 135 Éléments de scripts JSP : déclaration Une déclaration permet d’insérer du code dans la classe de la Servlet Les déclarations sont placés entre les symboles <%! et %> Exemple: <%! private int count = 0; private int incrementCount() { return count++;} %> Elle peut être utilisée pour : ●Déclarer un attribut de classe ●Spécifier et implémenter des méthodes ●Les attributs et les méthodes déclarées dans la page JSP sont utilisables dans toute la page JSP cours JEE - Dr. Abdessamad Belangour 136 Éléments de scripts JSP : scriplet  C’est un bloc de code Java qui est placé dans _jspService(…) de la Servlet générée (équivalent à service(...))  Les scriplets sont placées entre les symboles <% et %>  Tout code java a accès : ●aux attributs et méthodes définis par le tag déclaration <%! … %> ●aux objets implicites que nous verrons plus loin. ... <% for (int i = 0; i < 5 ; i++) { %> HelloWorld <br> <% } %> ... Code HTML Code JSP : scriplet 9 cours JEE - Dr. Abdessamad Belangour 137 Éléments de scripts JSP : expression  Sert à évaluer une expression et à renvoyer sa valeur  Les expressions sont placées entre les symboles <%= et %>  Retourne une valeur String de l’expression  Correspond à une scriplet de la forme <% out.println(…); %>  Se transforme en out.println("…"); dans la méthode _jspService(…) après génération ... <% String[] noms={"Ali","Omar","Hassan"}; for (int i = 0 ; i < noms.length ; i++) { %> Le <%= i %> ème nom est <%= noms[i] %> <% } %> ... scriplet expression cours JEE - Dr. Abdessamad Belangour 138 Éléments de scripts JSP : scriplet et objets implicites  Les objets implicites sont les objets présents dans la méthode service(…) qui ont été employés dans la partie Servlet  Ils sont identifiés par des noms de variables uniques : ●request : requête courante ●response : réponse courante ●session : session courante ●out : flot de sortie permet l’écriture sur la réponse ●application : contient des méthodes log() permettant d'écrire des messages dans le journal du contenu (ServletContext) ●pageContext : utilisé pour partager directement des variables entre des pages JSP et supportant les beans et les balises ●exception : disponible uniquement dans les pages erreurs donnant information sur les erreurs 10 cours JEE - Dr. Abdessamad Belangour 139 Éléments de scripts JSP : scriplet et objets implicites  Exemple : JSP qui récupère des informations du client <%@ page language="java" contentType="text/html" %> <html> <head> <title>Informations client</title> </head> <body bgcolor="white"> Protocol : <%= request.getProtocol() %><br> Scheme : <%= request.getScheme() %><br> ServerName : <%= request.getServerName() %><br> ServerPort : <% out.println(request.getServerPort()); %><br> RemoteAddr : <% out.println(request.getRemoteAddr()); %><br> RemoteHost : <% out.println(request.getRemoteHost()); %><br> Method : <%= request.getMethod() %><br> </body> cours JEE - Dr. Abdessamad Belangour 140 Cycle de vie d’une JSP  Le cycle de vie d'une Java Server Page est identique à une Servlet : ●La méthode jspInit() est appelée après le chargement de la page ●La méthode _jspService() est appelée à chaque requête ●La méthode jspDestroy() est appelé lors du déchargement (fermeture d'une base de données)  Possibilité de redéfinir dans le code JSP les méthodes jspInit() et jspDestroy() en utilisant un élément de scripts déclaration  Exemple : <html> <head><title>Bonjour tout </title></head><body> <%! int compteur; %> <%! public void jspInit() { compteur = 0;} %> La valeur du compteur est <%= compteur++ %> </body></html> 11 cours JEE - Dr. Abdessamad Belangour 141 Cycle de vie d’une JSP  Exemple : un compteur avec une initialisation et une destruction <%@ page language="java" contentType="text/html" %> <%@ page import="java.util.Date" %> <%! int global_counter = 0; Date start_date; public void jspInit() { start_date = new Date(); } public void jspDestroy() { ServletContext context = getServletConfig().getServletContext(); context.log("test.jsp uploads/S4/ coursjee-prbelangour-chapitre3.pdf

  • 15
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Oct 07, 2021
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.6357MB