SERVLET 1. Java pour le développementdapplications Web : Java EE Servlets Mick

SERVLET 1. Java pour le développementdapplications Web : Java EE Servlets Mickaël BARON - 200 7 (Rév. Mars 2010) mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr 2. Licence Creative Commons Contrat Paternité Partage des Conditions Initiales à lId entique 2.0 Francekeulkeul.blogspot.com http://creativecommons.org/licenses/by-s a/2.0/fr Servlets - M. Baron - Page2 3. Organisation du cours sur les Servlets Servlets et API Traitement des données d e formulaires Architecture de développement Cycle de vie Suivi de session Collabor ation de Servletskeulkeul.blogspot.com Sécurité : authentification Accès aux BD avec J DBC Servlets - M. Baron - Page 3 4. Quest ce quune Servlet Composant logiciel écrit en Java fonctionnant du coté serveu r Au même titre nous trouvons CGI (Common Gateway Interface) Langages de script co té serveur PHP, ASP (Active Server Pages) Permet de gérer des requêtes HTTP et de four nir au client une réponse HTTP Une Servlet sexécute dans un moteur de Servlet ou cont eneur de Servlet permettant détablir le lien entre lakeulkeul.blogspot.com Servlet et le serveur Web Une Servlet sexécute par lintermédiaire dune machine virtuelle Serv lets - M. Baron - Page 4 5. Architecture Servlets Processus principal Réponse HTTP Requête HTTP Conteneur de Servlets Servlet 1 Servlet 2 Client WEB Servlet 3 Serveur Machine virtuelle Java Webkeulkeul.blogspot.com Thread Les Servlets peuvent être toutes gérées par des threa d séparés au sein dun même processus de machine virtuelle Servlets - M. Baron - Page 5 6. Ok, mais à quoi ça sert ? Créer des pages HTML dynamiques, générer des images, ... Effe ctuer des tâches de type CGI qui sont des traitements applicatifs coté serveur WEB M anipulation dune base de données Gestion dun système de surveillance, ... Respecter le s principes dune architecture : écrire une application en Java dont linterface utili sateur est dans le clientkeulkeul.blogspot.com Applet (SWING) Téléphone portable (WA P) Navigateur (HTML) Servlets - M. Baron - Page 6 7. Puissance des Servlets Portabilité Technologie indépendante de la plate-forme et du serveur Un langage (Java) et plusieurs plate-forme (.NET plusieurs langages e t une plate-forme) Puissance Disponibilité de lAPI de Java Manipulation dimages, con nectivité aux bases de données (JDBC), Efficacité et endurance Une Servlet est chargée u ne seule fois (CGI chargée puis déchargée après utilisation)keulkeul.blogspot.com Une Se rvlet conserve son état (connexions à des bases de données) Sûreté Typage fort de Java Ges tion des erreurs par exception Servlets - M. Baron - Page 7 8. Première Servlet : HelloWorld Ne pas oublier dimporter la HelloWorld est un obj et Redéfinition de la méthode bibliothèque Java des Servlets de type HttpServlet doGet (traitement dune requête GET) import java.io.*; import javax.servlet.*; import ja vax.servlet.http.*; public class HelloWorld extends HttpServlet { public void do Get(HttpServletRequest req, HttpServletResponse res) throws ServletException, IO Exception { res.setContentType("text/hrml"); PrintWriter out = res.getWriter(); out.println("<HTML>"); out.println("<HEAD><TITLE>Bonjour tout le monde</TITLE></ HEAD>"); out.println("<BODY>"); out.println("<BIG>Bonjour tout le monde</BIG>"); keulkeul.blogspot.com out.println("</BODY></HTML>"); } } Réponse sous HelloWorld.j ava du projet format HTML HelloWorldServlet Le résultat sur le client Servlets - M . Baron - Page 8 9. LAPI Servlet : du générique à lHTTP Une Servlet doit implémenter linterface javax.ser vlet.Servlet et javax.servlet.ServletConfig Servlet << Interface >> ServletConfi g << Interface >> + init() + getInitParameter(String) : String + service() + getSe rvletName() : String + destroy() + ... Plus simplement lAPI Servlet fournit deux classes qui pro- posent déjà une implémentationkeulkeul.blogspot.com GenericServlet : pour la conception de Servlets indépendantes du protocole HttpServlet : pour la c onception de Servlets spécifiques au protocole HTTP Servlets - M. Baron - Page 9 10. LAPI Servlet : du générique à lHTTP Servlet << Interface >> ServletConfig << Inter face >> + init() + getInitParameter(String) : String + service() + getServletName( ) : String + destroy() + ... Étendre cette classe GenericServlet {abstraite} pour construire des + service(...) {abstraite} + ... Servlets "génériques"keulkeul.blogsp ot.com Étendre cette classe HttpServlet pour construire des + service() Servlets pr opre au + doXXX () protocole HTTP Servlets - M. Baron - Page 10 11. LAPI Servlet : la classe GenericServlet Une Servlet qui hérite GenericServlet {abstraite} de GenericServlet est une Servlet + service() {abstraite} + ... indépen dante du protocole Obligation dimplémenter la méthode service() qui reste le principa l point dentrée du client vers le serveur Besoin de vérifier explicitement le type d e protocole requêtekeulkeul.blogspot.com service(...) réponse Serveur Web Conteneur de Servlets : sous-classe de GenericServlet Servlets - M. Baron - Page 11 JSP Java pour le développementdapplications Web : Java EE Java Server Pages (JSP) Mickaël BARON - 2007 (Rév. Août 2009) mailto:baron.mickael@gmail.com ou mailto:baron@ensma. fr 2. Licence Creative Commons Contrat Paternité Partage des Conditions Initiales à lId entique 2.0 Francekeulkeul.blogspot.com http://creativecommons.org/licenses/by-s a/2.0/fr JSP - M. Baron - Page 2 3. Cest quoi JSP ? JSP = Java Server Pages Une JSP est un fichier contenant du co de 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 Servle t par le moteur de Servlets lors du premier appel à la JSP Lecture Réponse HTTP hell oJSP.jsp 2 Phase de traduction Requête HTTP 3 HelloServlet.javakeulkeul.blogspot.c om 1 Compile Génère 4 6 Phase de traitement 5 de la requête Serveur Web avec HelloServ let.class Client WEB Exécute conteneur JSP JSP - M. Baron - Page 3 4. Ok mais HelloWorld avec une Servlet Exemple : HelloWorld version Servlet Beso in de modifier le fichier web.xml public class HelloWorldServlet extends HttpSer vlet { protected void doGet(HttpServletRequest req, HttpServletResponse res) thr ows ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<html>"); out.println(" <head>"); out.print ln(" <title>Bonjour tout le monde</title>"); out.println(" </head>"); out.printl n(" <body>"); out.println(" <h1>Bonjour tout le monde</h1>"); out.println(" Nous sommes le " + (new java.util.Date().toString()) + " et tout va bien."); out.pri ntln(" </body>");keulkeul.blogspot.com out.println("</html>"); } } La partie str ucture du document HTML doit être précisée à laide de laffichage de sortie : devient vite contraignant JSP - M. Baron - Page 4 5. HelloWorld avec une JSP Exemple : HelloWorld version JSP helloworldjsp.jsp do it être placé à la racine de lapplication WEB Pas besoin de modifier le fichier web.xml <html> <head> Ajout de fragment <title>Bonjour tout le monde</title> </head> de code Java <body> <h1>Bonjour tout le monde</h1> Nous sommes le <%= new java.uti l.Date().toString() %> et tout va bien. </body> </html>keulkeul.blogspot.com Uti lisation dun outil daide à la conception de page WEB avec prise en charge de code JS P JSP - M. Baron - Page 5 6. HelloWorld avec une JSP après la génération Exemple : HelloWorld version Servlet pu blic final class helloworldjsp_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent { public void _jspServi ce(HttpServletRequest request, HttpServletResponse response) throws java.io.IOEx ception, ServletException { HttpSession session = null; ... Hérite de javax.servle t.jsp.HttpJspPage try { implémente la méthode _jspService() ... équivalente à service() _ spx_out = out; out.write("<html>rn");out.write("t<head>rn"); out.write("tt<title >Bonjour tout le monde</title>rn"); out.write("t</head>rn");out.write("t<body>rn "); out.write("tt<h1>Bonjour tout le monde</h1>rn"); out.write("ttNous sommes le ");out.print( new java.util.Date().toString() ); out.write(" et tout va bien.rn ");out.write("t</body>rn");out.write("</html>"); } catch (Throwable t) { if (!(t instanceof SkipPageException)){ out = _jspx_out;keulkeul.blogspot.com ... if (_ jspx_page_context != null) _jspx_page_context.handlePageException(t); } } finall y { if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context ); } } } JSP - M. Baron - Page 6 7. HelloWorld et les fichiers Servlet, JSP et Servlet générée Arborescence dune applica tion WEB : le retour Les fichiers JSP sont à la racine de lapplication WEB au même en droit que les fichiers HTMLkeulkeul.blogspot.com Les Servlets générées sont placées dans le répertoire work JSP - M. Baron - Page 7 8. Les Tags JSP Les Tags permettent de différencier le code HTML au code Java Tag de directive : Attention ne pas se tromper <%@ %> dans la nomination des tags. I ls ont tous une signification Tag de commentaire : différente <%-- blabla --%> Tag de déclaration : Éléments de scripts <%! %> Tag de Scriplet :keulkeul.blogspot.com <% %> Tag dexpression : <%= %> JSP - M. Baron - Page 8 9. Directives JSP Les directives contrôlent comment le serveur WEB doit générer la Ser vlet Elles sont placées entre les symboles <%@ et %> Les directives suivantes sont disponibles include : indique au compilateur dinclure un autre fichier <%@ inclu de file="unAutreFichier" %> Étudié en fin de partie taglib : indique une bibliothèque de balises a utiliserkeulkeul.blogspot.com <%@ taglib prefix="myprefix" uri="tag lib/mytag.tld" %> page : définit les attributs spécifiques à une page (voir après) JSP - M. Baron - Page 9 10. Directives JSP : include Cette inclusion se fait au moment de la conversion <%@ include file="unAutreFichier" %> Tout le contenu du fichier externe est incl us comme sil était saisi directement dans la page JSP Ne concerne que les ressource s contenues dans le contexte La racine du chemin du fichier à inclure est la racin e du contextekeulkeul.blogspot.com Pas de séparation de la portée des variables Il ny a pas la possibilité de construire une chaîne dinterrogation JSP - M. Baron - Page 1 0 11. Directives JSP : uploads/s1/ j-2-ee.pdf

  • 13
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jan 19, 2021
  • Catégorie Administration
  • Langue French
  • Taille du fichier 0.0657MB