134 JSP - M. Baron - Page keulkeul.blogspot.com C’est quoi JSP ?  JSP = Java S

134 JSP - M. Baron - Page keulkeul.blogspot.com C’est quoi JSP ?  JSP = Java Server Pages  Une JSP est un fichier contenant du code HTML et des fragments de code Java exécutés sur le moteur de Servlets  Comparable aux langages côtés serveur de type PHP, ASP, …  Les pages JSP sont converties en Servlet par le moteur de Servlets lors du premier appel à la JSP Serveur Web avec conteneur JSP Client WEB Phase de traduction helloJSP.jsp HelloServlet.java HelloServlet.class 1 Réponse HTTP Requête HTTP 6 Lecture 2 3 4 Phase de traitement de la requête 5 Génère Exécute Compile 135 JSP - M. Baron - Page keulkeul.blogspot.com Ok mais … HelloWorld avec une Servlet public class HelloWorldServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<html>"); out.println(" <head>"); out.println(" <title>Bonjour tout le monde</title>"); out.println(" </head>"); out.println(" <body>"); out.println(" <h1>Bonjour tout le monde</h1>"); out.println(" Nous sommes le " + (new java.util.Date().toString()) + " et tout va bien."); out.println(" </body>"); out.println("</html>"); } }  Exemple : HelloWorld version Servlet  Besoin de modifier le fichier web.xml La partie structure du document HTML doit être précisée à l’aide de l’affichage de sortie : devient vite contraignant 136 JSP - M. Baron - Page keulkeul.blogspot.com HelloWorld avec une JSP  Exemple : HelloWorld version JSP  helloworldjsp.jsp doit être placé à la racine de l’application WEB  Pas besoin de modifier le fichier web.xml <html> <head> <title>Bonjour tout le monde</title> </head> <body> <h1>Bonjour tout le monde</h1> Nous sommes le <%= new java.util.Date().toString() %> et tout va bien. </body> </html> Utilisation d’un outil d’aide à la conception de page WEB avec prise en charge de code JSP Ajout de fragment de code Java 137 JSP - M. Baron - Page keulkeul.blogspot.com HelloWorld avec une JSP après la génération public final class helloworldjsp_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent { public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { HttpSession session = null; ... try { ... _jspx_out = out; out.write("<html>\r\n");out.write("\t<head>\r\n"); out.write("\t\t<title>Bonjour tout le monde</title>\r\n"); out.write("\t</head>\r\n");out.write("\t<body>\r\n"); out.write("\t\t<h1>Bonjour tout le monde</h1>\r\n"); out.write("\t\tNous sommes le ");out.print( new java.util.Date().toString() ); out.write(" et tout va bien.\r\n");out.write("\t</body>\r\n");out.write("</html>"); } catch (Throwable t) { if (!(t instanceof SkipPageException)){ out = _jspx_out; ... if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); } } finally { if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context); } } } Hérite de javax.servlet.jsp.HttpJspPage implémente la méthode _jspService(…) équivalente à service(…)  Exemple : HelloWorld version Servlet 138 JSP - M. Baron - Page keulkeul.blogspot.com HelloWorld et les fichiers Servlet, JSP et Servlet générée Les fichiers JSP sont à la racine de l’application WEB au même endroit que les fichiers HTML Les Servlets générées sont placées dans le répertoire work  Arborescence d’une application WEB : le retour 139 JSP - M. Baron - Page keulkeul.blogspot.com Les Tags JSP  Les Tags permettent de différencier le code HTML au code Java  Tag de directive :  <%@ … %>  Tag de commentaire :  <%-- blabla --%>  Tag de déclaration :  <%! … %>  Tag de Scriplet :  <% …%>  Tag d’expression :  <%= … %> Attention ne pas se tromper dans la nomination des tags. Ils ont tous une signification différente Éléments de scripts 140 JSP - M. Baron - Page keulkeul.blogspot.com Directives JSP  Les directives contrôlent comment le serveur WEB doit générer la Servlet  Elles sont placées entre les symboles <%@ et %>  Les directives suivantes sont disponibles  include : indique au compilateur d’inclure un autre fichier  taglib : indique une bibliothèque de balises a utiliser  page : définit les attributs spécifiques à une page (voir après) <%@ include file="unAutreFichier" %> <%@ taglib prefix="myprefix" uri="taglib/mytag.tld" %> Étudié en fin de partie 141 JSP - M. Baron - Page keulkeul.blogspot.com 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  Ne concerne que les ressources contenues dans le contexte  La racine du chemin du fichier à inclure est la racine du contexte  Pas de séparation de la portée des variables Il n’y a pas la possibilité de construire une chaîne d’interrogation <%@ include file="unAutreFichier" %> 142 JSP - M. Baron - Page keulkeul.blogspot.com Directives JSP : include  Exemple : inclusions par la directive JSP <%@ include file = "/entete.html" %> <%@ include file = "/corps.jsp" %> Bonjour <%= mon_nom %> <%@ include file = "/piedpage.html" %> La variable name est définie dans corps.jsp <HTML> <HEAD> <TITLE>Page de démonstration</TITLE> </HEAD> <BODY> <%! String mon_nom; %> <% mon_nom = "Baron Mickael"; %> Je suis dans le pied de page. </BODY> </HTML> Le fichier entete.html Le fichier corps.jsp Le fichier piedpage.html 143 JSP - M. Baron - Page keulkeul.blogspot.com Directives JSP : page  La directive page définit les attributs spécifiques à une page  import : importe un paquetage Java. Cette directive résulte en une instruction import dans la Servlet  langage : définit le langage de script utilisé dans la page  contentType : définit le type de contenu de la page générée  errorPage : indique la page à afficher si une exception se produit pendant le traitement de la requête HTTP  isErrorPage : vaut true si la page est une erreur et false pour une page normale <%@ page import="java.util.*, java.text.*" %> <%@ page contentType="text/plain" %> <%@ page errorPage="toto.jsp" %> <%@ page isErrorPage=false %> 144 JSP - M. Baron - Page keulkeul.blogspot.com É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 --%> <html> <head> <title>Bonjour tout le monde</title> </head> <body> <!-- affichage d'un message classique --> <h1>Bonjour tout le monde</h1> Nous sommes le <%= new java.util.Date().toString() %> et tout va bien. <%-- Utilisation de la classe Date --%> </body> </html> Les commentaires JSP n’apparaissent pas dans le code HTML du client 145 JSP - M. Baron - Page keulkeul.blogspot.com É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ées entre <%! et %>  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  Possibilité de redéfinir des méthodes jspInit() et jspDestroy() <%! private int count = 0; private int incrementCount() { return count++; } %> A voir plus tard au moment du cycle de vie d’une JSP 146 JSP - M. Baron - Page keulkeul.blogspot.com É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 ... <% for (int i = 0; i < 5 ; i++) { %> HelloWorld<br> <% incrementCount(); } %> ... Code JSP : scriplet Code HTML Méthode déclarée par l’élément de scripts déclaration précédent Ne pas oublier le ; En général les scriplets ne sont jamais utilisées, préférez l’utilisation des balises personnalisées (Taglib) 147 JSP - M. Baron - Page keulkeul.blogspot.com Éléments de scripts JSP : expression  Sert à évaluer une expression et à renvoyer sa valeur  Les expressions sont placées entre les symboles <%= %>  Retourne une valeur String de l’expression  Correspond à une scriplet comme <% out.println(…); %>  Se transforme en out.println("…"); dans la méthode _jspService(…) après génération ... <% String[] noms={"mickey","donald"}; for (int i = 0 ; i < noms.length ; i++) { %> Le <%= i %> ème nom est <%= noms[i] %> <% } %> ... Éléments de scripts JSP : scriplet Éléments de scripts JSP : expression Ne pas ajouter de ; à la fin d'un élément script expression 148 JSP - M. Baron - Page keulkeul.blogspot.com Éléments de scripts JSP : bilan public final class example_jsp extends HttpJspBase { String contenu[] = {"raoul","john","nicolas"}; public void _jspService(HttpServletRequest req, HttpServletResponse res) throws IOException, ... { out.write("\t\t<title>Bonjour tout le monde</title>\r\n"); out.write("\t</head>\r\n"); out.write("\t<body>\r\n"); for (int i = 0; i <contenu.length; i++) { out.write("\t\t\tLe "); out.print( i+1 ); out.write(" ème nom est "); out.print( contenu[i] ); out.write(" <p>\r\n"); out.write("\t\t"); } out.write("\t\t\r\n"); out.write("\t</body>\r\n"); } } <html> <head> <title>Bonjour tout </title> </head> <body> <%! String contenu[] = {"raoul","john","nicolas"}; %> <% for (int i = 0; i <contenu.length; i++) { %> Le <%= i+1 %> ème nom est <%= contenu[i] %> <p> <% } %> </body> </html>  Éléments de scripts et génération de Servlet Expression Déclaration Scriplet 149 JSP - M. Baron - Page keulkeul.blogspot.com Éléments de uploads/S4/ m1-j2ee-jsp.pdf

  • 39
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Nov 06, 2022
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.6874MB