Java pour le développement d’applications Web : Java EE Mickaël BARON - 2007 (R

Java pour le développement d’applications Web : Java EE Mickaël BARON - 2007 (Rév. Août 2009) mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr Java Server Pages (JSP) 2 JSP - M. Baron - Page keulkeul.blogspot.com Creative Commons Contrat Paternité Partage des Conditions Initiales à l'Identique 2.0 France http://creativecommons.org/licenses/by-sa/2.0/fr Licence 3 JSP - M. Baron - Page keulkeul.blogspot.com C’est quoi JSP ? h JSP = Java Server Pages h Une JSP est un fichier contenant du code HTML et des fragments de code Java exécutés sur le moteur de Servlets h Comparable aux langages côtés serveur de type PHP, ASP, … h 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 4 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>"); } } h Exemple : HelloWorld version Servlet h 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 5 JSP - M. Baron - Page keulkeul.blogspot.com HelloWorld avec une JSP h Exemple : HelloWorld version JSP h helloworldjsp.jsp doit être placé à la racine de l’application WEB h 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 6 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(…) h Exemple : HelloWorld version Servlet 7 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 h Arborescence d’une application WEB : le retour 8 JSP - M. Baron - Page keulkeul.blogspot.com Les Tags JSP h Les Tags permettent de différencier le code HTML au code Java h Tag de directive : h < %@ … %> h Tag de commentaire : h < %-- blabla --%> h Tag de déclaration : h < %! … %> h Tag de Scriplet : h < % …%> h Tag d’expression : h < %= … %> Attention ne pas se tromper dans la nomination des tags. I ls ont tous une signification différente Éléments de scripts 9 JSP - M. Baron - Page keulkeul.blogspot.com Directives JSP h Les directives contrôlent comment le serveur WEB doit générer la Servlet h Elles sont placées entre les symboles < % @ et % > h Les directives suivantes sont disponibles h include : indique au compilateur d’inclure un autre fichier h taglib : indique une bibliothèque de balises a utiliser h 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 10 JSP - M. Baron - Page keulkeul.blogspot.com Directives JSP : include h Cette inclusion se fait au moment de la conversion h Tout le contenu du fichier externe est inclus comme s’il était saisi directement dans la page JSP h Ne concerne que les ressources contenues dans le contexte h La racine du chemin du fichier à inclure est la racine du contexte h Pas de séparation de la portée des variables I l n’y a pas la possibilité de construire une chaîne d’interrogation <%@ include file="unAutreFichier" %> 11 JSP - M. Baron - Page keulkeul.blogspot.com Directives JSP : include h 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 12 JSP - M. Baron - Page keulkeul.blogspot.com Directives JSP : page h La directive page définit les attributs spécifiques à une page h import : importe un paquetage Java. Cette directive résulte en une instruction import dans la Servlet h langage : définit le langage de script utilisé dans la page h contentType : définit le type de contenu de la page générée h errorPage : indique la page à afficher si une exception se produit pendant le traitement de la requête HTTP h 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 %> 13 JSP - M. Baron - Page keulkeul.blogspot.com Éléments de scripts JSP : commentaire h Cet élément de script est utilisé pour faire un commentaire dans le code JSP h Le texte dans un commentaire JSP ne sera pas envoyé au client ni compilé dans la Servlet h 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 14 JSP - M. Baron - Page keulkeul.blogspot.com Éléments de scripts JSP : déclaration h Une déclaration permet d’insérer du code dans la classe de la Servlet h Les déclarations sont placées entre < % ! et % > h Elle peut être utilisée pour h Déclarer un attribut de classe h Spécifier et implémenter des méthodes h Les attributs et les méthodes déclarées dans la page JSP sont utilisables dans toute la page JSP h 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 15 JSP - M. Baron - Page keulkeul.blogspot.com Éléments de scripts JSP : scriplet h C’est un bloc de code Java qui est placé dans _jspService(…) de la Servlet générée (équivalent à service(...)) h Les scriplets sont placées entre les symboles < % et % > h Tout code java a accès : h aux attributs et méthodes définis par le tag déclaration < % ! … % > h 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) 16 JSP - M. Baron - Page keulkeul.blogspot.com Éléments de scripts JSP : expression h Sert à évaluer une expression et à renvoyer sa valeur h Les expressions sont placées entre les symboles < % = % > h Retourne une valeur String de l’expression h Correspond à une scriplet comme < % out.println(…); %> h 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 17 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] uploads/S4/ 0235-formation-web-jsp.pdf

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