logging in or signing up Applications Web avec Java aSGuest32850 Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINT lite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 1144 Category: Entertainment License: All Rights Reserved Like it (0) Dislike it (0) Added: November 30, 2009 This Presentation is Public Favorites: 0 Presentation Description No description available. Comments Posting comment... Premium member Presentation Transcript Applications Web avec Java : Applications Web avec Java AgroParisTech : Module 2A Duke Sommaire : Applications Web en Java 2 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Sommaire : Applications Web en Java 3 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Les différents types d’applis : Applications Web en Java 4 Les différents types d’applis Applications autonomes Exécutable Données Les différents types d’applis : Applications Web en Java 5 Les différents types d’applis Applications déportées Terminal ouémulateur Données Gestionnaired'écrans Les différents types d’applis : Applications Web en Java 6 Les différents types d’applis Applications client/serveur Exécutable Données Les différents types d’applis : Applications Web en Java 7 Les différents types d’applis Applications client/serveur distribuées ou 3-tiers Exécutable Données Exécutable Les différents types d’applis : Applications Web en Java 8 Les différents types d’applis Les applications client léger ou applications web NavigateurHTML/Javascript Données Serveurd'applications Applications Java : Applications Web en Java 9 Applications Java Java permet de réaliser tous les types d'applications Mais les interfaces utilisateur développées en Java sont relativement peu performantes Par contre, Java est très adapté pour réaliser des applications Web : développer sous Windows, déployer sous UNIX richesse des programmes et API disponibles peu d’impacts sur les performances AWT Swing SWT Sommaire : Applications Web en Java 10 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Structurer d'une application Web Base de données et serveurs d'applications Déployer son application Web Historique du Web : Applications Web en Java 11 Historique du Web Le Web à l'origine : permet d'accéder à des pages d'informations reliées par des liens hypertextes nécessite uniquement la présence d'un navigateur Web sur le poste de l'utilisateur permet de générer des pages dynamiquement pour des applications spécifiques et limitées (ex : moteur de recherche) Outils du web à l’origine : Applications Web en Java 12 Outils du web à l’origine Editeurs de pages HTML/Javascript : Microsoft FrontPage Macromédia DreamWeaver NVU Transfert de pages : FTP webdav FTP WebDav Evolution du Web : Applications Web en Java 13 Evolution du Web Développement des pages dynamiques : générées à partir d'une base de données : pas besoin d'écrire des centaines de pages HTML (ex : site de presse) apportent un contenu personnalisé à l'utilisateur (ex : Mon Yahoo!) ne nécessitent pas d'installation sur le poste de l'utilisateur(ex : annuaire de l'école) HTML Technologies du web dynamique : Applications Web en Java 14 Technologies du web dynamique 3 solutions : ASP (.Net) : Active Server Page fonctionne uniquement avec un serveur MS Windows PHP : PHP Hypertext Processor gratuit : communauté libre fonctionne avec tout type de serveur simple à apprendre limité (mais nouvelles versions…) ASP PHP Technologies du web dynamique : Applications Web en Java 15 Technologies du web dynamique 3 solutions : Java : Servlets/JSP : gratuit , mais sous la houlette de Sun fonctionne avec tout type de serveur programmation objet structurée, modulaire et évolutive richesse des interfaces répandu dans les entreprises peu d’hébergements disponibles servlet JSP Web dynamique : principes : Applications Web en Java 16 Web dynamique : principes Formulaire :- champs de saisie - bouton de validation Web dynamique : principes : Applications Web en Java 17 Web dynamique : principes Transmission des données du formulaire Réponse à la demande Web dynamique : principes : Applications Web en Java 18 Web dynamique : principes 2 : le serveur accepte la connexion reçoit la requête, retrouve les informations transmises et recherche les données correspondantes Web dynamique : session : Applications Web en Java 19 Web dynamique : session Le dialogue entre le navigateur et le serveur est déconnecté : 1 : le navigateur se connecte au serveur Web 2 : le navigateur envoie une requête 3 : le serveur renvoie une réponse 4 : la connexion est rompue ! Comment assurer le « suivi de l'utilisateur » (ex : webmail, panier dans un site de commerce) ? Web dynamique : cookies : Applications Web en Java 20 Web dynamique : cookies 2 : le serveur accepte la connexion reçoit la requête, retrouve les informations transmises et recherche les données correspondantes.Il génère également un cookie et garde en mémoire les informations associées Les applications Web en Java : Applications Web en Java 21 Les applications Web en Java Serveur web capable d'exécuter du Java : serveur d'application J2EE web container J2EE Un serveur J2EE est capable d'exécuter : des servlets : classes Java exécutées côté serveur des JSP : Java Server Pages Fichiers de script qui « mélangent » du Java et du HTML/Javascript J2EE Sommaire : Applications Web en Java 22 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Structurer d'une application Web Base de données et serveurs d'applications Déployer son application Web Tomcat : Applications Web en Java 23 Tomcat Un « conteneur web » (web container) J2EE Implémentation Java de référence Serveur open-source gratuit et multi-plateformes (écrit en Java) Téléchargeable sur http://jakarta.apache.org/tomcat Tomcat installation : Applications Web en Java 24 Tomcat installation Prérequis : nécessite un SDK http://java.sun.com/j2se/1.4.2/download.html Installation possible : programme d’installation sous Windows installation manuelle sous Linux après décompression de fichier d’archive Tomcat : organisation générale : Applications Web en Java 25 Tomcat : organisation générale Exécutables Classes Java communes à toutes les applications Fichiers de configuration Fichiers de logs (messages d'erreurs…) Emplacement par défaut des applications Tomcat : démarrage/arrêt : Applications Web en Java 26 Tomcat : démarrage/arrêt Avec Lomboz : Tomcat : bon fonctionnement : Applications Web en Java 27 Tomcat : bon fonctionnement http://localhost:8080 Sommaire : Applications Web en Java 28 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Créer une Application Web : Applications Web en Java 29 Créer une Application Web Dans Eclipse : Menu File > New > Project… Sélectionner Web > Dynamic Web Project Project name : TestTomcat Target runtime : Apache tomcat V5.0 finish Arborescence d'une application : Applications Web en Java 30 Arborescence d'une application TP1 : Applications Web en Java 31 TP1 Démarrer Tomcat sur le poste de travail Tester le bon fonctionnement de l'application Créer un projet TestTomcat Créer une servlet, via les menus d’Eclipse, selon les indications données par l’enseignant Sommaire : Applications Web en Java 32 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Servlet : création : Applications Web en Java 33 Servlet : création Une servlet est une classe dérivée de javax.servlet.http.HttpServlet. On la trouve dans l'arborescence WEB-INF/src Cette classe définit (surtout) 4 méthodes : init(ServletConfig) doGet(HttpServletRequest, HttpServletResponse) doPost(HttpServletRequest, HttpServletResponse) destroy() Servlet : méthodes : Applications Web en Java 34 Servlet : méthodes init(ServletConfig) exécutée au chargement de la servlet doGet(HttpServletRequest, HttpServletResponse) exécutée à chaque connexion d'un navigateur doPost(HttpServletRequest, HttpServletResponse) exécutée à chaque validation de formulaire destroy() exécutée lors de l'arrêt du serveur Servlet : paramètres : Applications Web en Java 35 Servlet : paramètres Paramètre HttpServletRequest : encapsule la requête HTTP issue du navigateur permet d'accéder aux valeurs du formulaire :String nom = request.getParameter( "nom"); Paramètre HttpServletResponse : encapsule la réponse renvoyée au navigateur permet de générer par exemple du HTML :PrintWriter out = response.getWriter();out.println("…");out.close(); Servlet : exemple simple : Applications Web en Java 36 Servlet : exemple simple public class SimpleServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>"); out.println("<h1>Bonjour !</h1>"); out.println("</html>"); out.println("</body>"); out.close(); } } http://localhost:8080/TestTomcat/servlet/SimpleServlet Servlet : avec un formulaire : Applications Web en Java 37 Servlet : avec un formulaire Mentionner la servlet comme action dans le formulaire HTML : <form name="Formulaire" method="post" action="servlet/FormulaireServlet"> Entrez votre nom : <input type="text" name="nom"> <input type="submit" value="valider"> </form> http://localhost:8080/TestTomcat/Formulaire.html Servlet : réponse au formulaire : Applications Web en Java 38 Servlet : réponse au formulaire La servlet récupère le nom et génère une page avec : public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String nom = request.getParameter("nom"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>"); out.println("<h1>Bonjour " + nom + " !</h1>"); out.println("</html>"); out.println("</body>"); out.close(); } Servlet : récapitulatif formulaire : Applications Web en Java 39 Servlet : récapitulatif formulaire Formulaire.html 1 : le navigateur rassemble les informations du formulaire, il se connecte au serveur et lui transmet ces informations dans une requête HTTP 2 : le serveur génère dynamiquement une page avec le résultat, l'envoie en réponse HTTP au navigateur Servlet/FormulaireServlet Servlet : GET ou POST ? : Applications Web en Java 40 Servlet : GET ou POST ? Attribut method de la balise form GET : correspond à l'appel d'une page par le navigateur (barre d'adresse ou lien)Transmet les paramètres dans l'URL : http://localhost:8080/servlet/test?param=value POST : plus adapté au transfert de données depuis un formulaire Une servlet peut déterminer ainsi si elle est appelée comme validation d'un formulaire ou non Method POST Method GET Servlet : formulaire et traitement : Applications Web en Java 41 Servlet : formulaire et traitement public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Méthode GET : barre d'adresse response.setContentType("text/html");PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<html>"); out.println("<form name=\"Formulaire\" method=\"post\" action=\"FormulaireServletDeuxEnUn\">"); out.println("Entrez votre nom :"); out.println("<input type=\"text\" name=\"nom\">"); out.println("<input type=\"submit\" value=\"valider\">"); out.println("</form>"); out.println("</html>"); out.println("</body>"); out.close(); } Servlet : formulaire et traitement : Applications Web en Java 42 Servlet : formulaire et traitement public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Méthode POST : validation du formulaire response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>"); String nom = request.getParameter("nom"); out.println("<h1>Bonjour " + nom + " !</h1>"); out.println("</html>"); out.println("</body>"); out.close(); } Servlet : récap formulaire/traitement : Applications Web en Java 43 Servlet : récap formulaire/traitement TP2 : Applications Web en Java 44 TP2 Dans le projet TestTomcat, développer une servlet qui demande un nombre à l'utilisateur et renvoie le calcul de la factorielle de ce nombre Servlet : session : Applications Web en Java 45 Servlet : session L'objet requête passée en paramètre permet de fixer/retrouver des objets pour une session utilisateur L'objet session est une collection d'objets associés à des clés HttpSession : Applications Web en Java 46 HttpSession import javax.servlet.http.HttpSession; … HttpSession session = request.getSession(); … MaClasse monObjet = (MaClasse)session.getAttribute("nom"); … session.setAttribute("nom", monObjet); Servlet : exemple session : Applications Web en Java 47 Servlet : exemple session public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); ArrayList listeCourse = (ArrayList) session.getAttribute("listeCourse"); if (listeCourse == null) { // La liste des courses de l'utilisateur n'a pas ete créée session.setAttribute("listeCourse", new ArrayList()); } //... } TP3 : Applications Web en Java 48 TP3 Ecrire une servlet qui initialise une somme à 0 et demande un nombre via un formulaire Ce nombre est ajouté à la somme renvoyée à l'utilisateur, auquel on demande aussi un nouveau nombre (affichage du résultat précédent et du formulaire sur la page) Le nouveau nombre vient s'ajouter à la somme Et ainsi de suite... Les JSP : Applications Web en Java 49 Les JSP Inconvénients des servlets : générer du code HTML est fastidieux (plusieurs lignes de out.println("") impossible d'utiliser les outils WYSIWYG HTML (Frontpage, Dreamweaver…) pour concevoir la partie présentation des pages Une solution : les Java Server Pages ! JSP JSP :exemple : Applications Web en Java 50 JSP :exemple <%@ page session ="true" %> <%@ page buffer="none" %> <%@ page import="java.util.*" %> <%@ page import="java.text.*" %> <html> <head> <title>Test JSP</title> </head> <body> <% DateFormat df = SimpleDateFormat.getInstance(); %> <h1>Maintenant : <%= df.format(new Date()) %></h1> </body> </html> JSP : principe : Applications Web en Java 51 JSP : principe Au lieu d' écrire du HTML dans une classe Java, on inclut du Java dans une page HTML Des tags spécifiques : <%@ %> : directives (imports, etc.) <% %> : code Java à exécuter <%= %> : résultat Java à afficher Des variables implicites : request, response, session, etc. tags request response JSP : exécution : Applications Web en Java 52 JSP : exécution Lors de la demande d'une page JSP : si c'est la première demande, ou si la page a été modifiée depuis la dernière demande, la page JSP est transformée automatiquement en servlet ; le moteur de servlet exécute la servlet correspondante et renvoie le résultat de l'exécution TP4 : Applications Web en Java 53 TP4 Ecrire une page JSP qui affiche la table de multiplication du nombre 7 Modifier cette page pour pouvoir passer le nombre dont on veut la table dans la requête :http://…/multiplication.jsp?nombre=5 Ajout d’un fichier .jsp : Clic droit sur WebContentJSP Sommaire : Applications Web en Java 54 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Servlets & JSP : Applications Web en Java 55 Servlets & JSP Servlets : Adaptées pour programmer des traitements en Java JSP : Adaptés pour réaliser l'affichage dans une page HTML Conclusion : il faut combiner servlets & JSP ! Le modèle MVC : Applications Web en Java 56 Le modèle MVC Consiste à séparer les différentes fonctions du logiciel Séparation : Modèle : les données manipulées par le logiciel Vue : l'affichage présenté à l'utilisateur Contrôleur : traite les actions de l'utilisateur MVC Le modèle MVC Web : Applications Web en Java 57 Le modèle MVC Web Servlet : contrôleur (réception/envoi des données) JSP : vue (affichage) 1 : Transmission des informations du formulaire Objet Java Objet Java Objet Java (traitement) 2 : Traitements et instanciation des objet 2 : Transmission des objets à la page JSP pour afficher le résultat Utiliser Javascript : Applications Web en Java 58 Utiliser Javascript Dans les exemples précédents, les contrôles sont réalisés dans la servlet après validation du formulaire Or, Javascript permet de réaliser des contrôles dans le navigateur avant la validation du formulaire, ce qui évite un aller-retour sur le réseau javascript JavaScript : exemple (1/3) : Applications Web en Java 59 JavaScript : exemple (1/3) function contientNombre(champ) { // La valeur du champ contenu = champ.value; // Création de l'expression régulière e = new RegExp(/^\d+$/); // Test de conformité return e.test(contenu); } Javascript : exemple (2/3) : Applications Web en Java 60 Javascript : exemple (2/3) function validation(formulaire) { var message =''; if (!contientNombre(formulaire['base'])) { message +='Vous devez choisir un nombre entier pour la base !\n'; } if (!contientNombre(formulaire['hauteur'])) { message += '... un nombre entier pour la hauteur !\n'; } if (message.length == 0) { // Pas d'erreur : on peut valider le formulaire return true; } else { // Erreur : on affiche le message alert(message); return false; } } Javascript : exemple (3/3) : Applications Web en Java 61 Javascript : exemple (3/3) Il faut appeler la méthode de validation sur l'événement onSubmit() du formulaire : <form name="calculAire" method="post" action="servlet/AireServletAvecValidation" onSubmit="return validation(document.forms['calculAire']);"> Les services Web : Applications Web en Java 62 Les services Web Comment fournir un service à tous Utilisation des services web Transport de l’information en XML Les protocoles REST XML-RPC SOAP (le plus utilisé et le plus répandu) HESSIAN (mode binaire, pas de xml) Web service SOAP XML Sommaire : Applications Web en Java 63 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Schéma général : Applications Web en Java 64 Schéma général Données 1 : requête HTTP depuis un formulaire 2 : connexion à la base de données 5 : ensemble de données extraites de la base 6 : page de réponse générée à partir des résultat 4 : requête SQL 3 : objet connexion Problématique : Applications Web en Java 65 Problématique Ouvrir une connexion sur une base de données prend du temps On ne peut pas utiliser la même connexion pour différentes requêtes simultanées La solution réside dans la constitution d'un pool de connexion Architecture optimisée : Applications Web en Java 66 Architecture optimisée Données 1 : requête HTTP depuis un formulaire 5 : ensemble de données extraites de la base 6 : page de réponse générée à partir des résultat 4 : requête SQL POOL 2 : demande de connexion au pool 3 : récupération d'une connexion disponible Configuration du pool (1/2) : Applications Web en Java 67 Configuration du pool (1/2) Dans tomcat\conf\server.xml : <Context path="/TestBD" reloadable="true" docBase="C:\Applis\eclipse\workspace\TestBD " workDir="C:\Applis\eclipse\workspace\TestBD\work\org\apache\jsp" > ... <Resource name="jdbc/TestBD" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/TestBD"> ... <!-- MySQL dB username and password for dB connections --> <parameter> <name>username</name> <value>root</value> </parameter> <parameter> <name>password</name> <value></value> </parameter> Configuration du pool (2/2) : Applications Web en Java 68 Configuration du pool (2/2) <!-- Class name for mm.mysql JDBC driver --> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <!-- The JDBC connection url for connecting to your MySQL dB. The autoReconnect=true argument to the url makes sure that the mm.mysql JDBC Driver will automatically reconnect if mysqld closed the connection. mysqld by default closes idle connections after 8 hours. --> <parameter> <name>url</name> <value>jdbc:mysql://127.0.0.1/TestBD?autoReconnect=true</value> </parameter> </ResourceParams> </Context> Récupération d'une connexion : Applications Web en Java 69 Récupération d'une connexion D’abord récupérer le contexte de l’application web… … puis la connexion Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/TestBD"); Connection conn = ds.getConnection(); … utilisation de la connexion TP 5 : Applications Web en Java 70 TP 5 Une base de données existante contient une table Personne, avec 3 champs : id, nom, prenom, age Suivre les indications de l'enseignant pour obtenir les paramètres de connexion à la base de données Programmer une servlet/un JSP qui affichent dans un tableau les noms de toutes les personnes triés par ordre alphabétique Programmer une servlet/un JSP qui affichent les détails d'une personne dans une fenêtre Popup lorsqu'on clique sur le nom d'une personne Sommaire : Applications Web en Java 71 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Déployer une application : Applications Web en Java 72 Déployer une application L’hébergement d’une application nécessite un serveur : Windows NT/2000/XP Linux 2 solutions : création de son propre serveur délégation de l’hébergement à un professionnel Comment créer son serveur ? : Applications Web en Java 73 Comment créer son serveur ? Utiliser un PC robuste et bien ventilé Installer/Configurer Linux ou Windows Installer/Configurer Java Installer/Configurer MySQL Installer/Configurer Tomcat Webographie : Applications Web en Java 74 Webographie JAVA http://java.sun.com/ HTML/CSS/javascript http://www.devguru.com/ http://www.w3schools.com/ Serveurs d’applications http://www.jboss.com/products/jbossas/ http://tomcat.apache.org/ Webographie : Applications Web en Java 75 Webographie Développement http://lomboz.objectweb.org/ Framework http://www.springframework.org/ http://ws.apache.org/axis/ http://struts.apache.org/ http://java.sun.com/products/jsp/jstl/ http://jakarta.apache.org/commons/ You do not have the permission to view this presentation. In order to view it, please contact the author of the presentation.
Applications Web avec Java aSGuest32850 Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINT lite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 1144 Category: Entertainment License: All Rights Reserved Like it (0) Dislike it (0) Added: November 30, 2009 This Presentation is Public Favorites: 0 Presentation Description No description available. Comments Posting comment... Premium member Presentation Transcript Applications Web avec Java : Applications Web avec Java AgroParisTech : Module 2A Duke Sommaire : Applications Web en Java 2 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Sommaire : Applications Web en Java 3 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Les différents types d’applis : Applications Web en Java 4 Les différents types d’applis Applications autonomes Exécutable Données Les différents types d’applis : Applications Web en Java 5 Les différents types d’applis Applications déportées Terminal ouémulateur Données Gestionnaired'écrans Les différents types d’applis : Applications Web en Java 6 Les différents types d’applis Applications client/serveur Exécutable Données Les différents types d’applis : Applications Web en Java 7 Les différents types d’applis Applications client/serveur distribuées ou 3-tiers Exécutable Données Exécutable Les différents types d’applis : Applications Web en Java 8 Les différents types d’applis Les applications client léger ou applications web NavigateurHTML/Javascript Données Serveurd'applications Applications Java : Applications Web en Java 9 Applications Java Java permet de réaliser tous les types d'applications Mais les interfaces utilisateur développées en Java sont relativement peu performantes Par contre, Java est très adapté pour réaliser des applications Web : développer sous Windows, déployer sous UNIX richesse des programmes et API disponibles peu d’impacts sur les performances AWT Swing SWT Sommaire : Applications Web en Java 10 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Structurer d'une application Web Base de données et serveurs d'applications Déployer son application Web Historique du Web : Applications Web en Java 11 Historique du Web Le Web à l'origine : permet d'accéder à des pages d'informations reliées par des liens hypertextes nécessite uniquement la présence d'un navigateur Web sur le poste de l'utilisateur permet de générer des pages dynamiquement pour des applications spécifiques et limitées (ex : moteur de recherche) Outils du web à l’origine : Applications Web en Java 12 Outils du web à l’origine Editeurs de pages HTML/Javascript : Microsoft FrontPage Macromédia DreamWeaver NVU Transfert de pages : FTP webdav FTP WebDav Evolution du Web : Applications Web en Java 13 Evolution du Web Développement des pages dynamiques : générées à partir d'une base de données : pas besoin d'écrire des centaines de pages HTML (ex : site de presse) apportent un contenu personnalisé à l'utilisateur (ex : Mon Yahoo!) ne nécessitent pas d'installation sur le poste de l'utilisateur(ex : annuaire de l'école) HTML Technologies du web dynamique : Applications Web en Java 14 Technologies du web dynamique 3 solutions : ASP (.Net) : Active Server Page fonctionne uniquement avec un serveur MS Windows PHP : PHP Hypertext Processor gratuit : communauté libre fonctionne avec tout type de serveur simple à apprendre limité (mais nouvelles versions…) ASP PHP Technologies du web dynamique : Applications Web en Java 15 Technologies du web dynamique 3 solutions : Java : Servlets/JSP : gratuit , mais sous la houlette de Sun fonctionne avec tout type de serveur programmation objet structurée, modulaire et évolutive richesse des interfaces répandu dans les entreprises peu d’hébergements disponibles servlet JSP Web dynamique : principes : Applications Web en Java 16 Web dynamique : principes Formulaire :- champs de saisie - bouton de validation Web dynamique : principes : Applications Web en Java 17 Web dynamique : principes Transmission des données du formulaire Réponse à la demande Web dynamique : principes : Applications Web en Java 18 Web dynamique : principes 2 : le serveur accepte la connexion reçoit la requête, retrouve les informations transmises et recherche les données correspondantes Web dynamique : session : Applications Web en Java 19 Web dynamique : session Le dialogue entre le navigateur et le serveur est déconnecté : 1 : le navigateur se connecte au serveur Web 2 : le navigateur envoie une requête 3 : le serveur renvoie une réponse 4 : la connexion est rompue ! Comment assurer le « suivi de l'utilisateur » (ex : webmail, panier dans un site de commerce) ? Web dynamique : cookies : Applications Web en Java 20 Web dynamique : cookies 2 : le serveur accepte la connexion reçoit la requête, retrouve les informations transmises et recherche les données correspondantes.Il génère également un cookie et garde en mémoire les informations associées Les applications Web en Java : Applications Web en Java 21 Les applications Web en Java Serveur web capable d'exécuter du Java : serveur d'application J2EE web container J2EE Un serveur J2EE est capable d'exécuter : des servlets : classes Java exécutées côté serveur des JSP : Java Server Pages Fichiers de script qui « mélangent » du Java et du HTML/Javascript J2EE Sommaire : Applications Web en Java 22 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Structurer d'une application Web Base de données et serveurs d'applications Déployer son application Web Tomcat : Applications Web en Java 23 Tomcat Un « conteneur web » (web container) J2EE Implémentation Java de référence Serveur open-source gratuit et multi-plateformes (écrit en Java) Téléchargeable sur http://jakarta.apache.org/tomcat Tomcat installation : Applications Web en Java 24 Tomcat installation Prérequis : nécessite un SDK http://java.sun.com/j2se/1.4.2/download.html Installation possible : programme d’installation sous Windows installation manuelle sous Linux après décompression de fichier d’archive Tomcat : organisation générale : Applications Web en Java 25 Tomcat : organisation générale Exécutables Classes Java communes à toutes les applications Fichiers de configuration Fichiers de logs (messages d'erreurs…) Emplacement par défaut des applications Tomcat : démarrage/arrêt : Applications Web en Java 26 Tomcat : démarrage/arrêt Avec Lomboz : Tomcat : bon fonctionnement : Applications Web en Java 27 Tomcat : bon fonctionnement http://localhost:8080 Sommaire : Applications Web en Java 28 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Créer une Application Web : Applications Web en Java 29 Créer une Application Web Dans Eclipse : Menu File > New > Project… Sélectionner Web > Dynamic Web Project Project name : TestTomcat Target runtime : Apache tomcat V5.0 finish Arborescence d'une application : Applications Web en Java 30 Arborescence d'une application TP1 : Applications Web en Java 31 TP1 Démarrer Tomcat sur le poste de travail Tester le bon fonctionnement de l'application Créer un projet TestTomcat Créer une servlet, via les menus d’Eclipse, selon les indications données par l’enseignant Sommaire : Applications Web en Java 32 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Servlet : création : Applications Web en Java 33 Servlet : création Une servlet est une classe dérivée de javax.servlet.http.HttpServlet. On la trouve dans l'arborescence WEB-INF/src Cette classe définit (surtout) 4 méthodes : init(ServletConfig) doGet(HttpServletRequest, HttpServletResponse) doPost(HttpServletRequest, HttpServletResponse) destroy() Servlet : méthodes : Applications Web en Java 34 Servlet : méthodes init(ServletConfig) exécutée au chargement de la servlet doGet(HttpServletRequest, HttpServletResponse) exécutée à chaque connexion d'un navigateur doPost(HttpServletRequest, HttpServletResponse) exécutée à chaque validation de formulaire destroy() exécutée lors de l'arrêt du serveur Servlet : paramètres : Applications Web en Java 35 Servlet : paramètres Paramètre HttpServletRequest : encapsule la requête HTTP issue du navigateur permet d'accéder aux valeurs du formulaire :String nom = request.getParameter( "nom"); Paramètre HttpServletResponse : encapsule la réponse renvoyée au navigateur permet de générer par exemple du HTML :PrintWriter out = response.getWriter();out.println("…");out.close(); Servlet : exemple simple : Applications Web en Java 36 Servlet : exemple simple public class SimpleServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>"); out.println("<h1>Bonjour !</h1>"); out.println("</html>"); out.println("</body>"); out.close(); } } http://localhost:8080/TestTomcat/servlet/SimpleServlet Servlet : avec un formulaire : Applications Web en Java 37 Servlet : avec un formulaire Mentionner la servlet comme action dans le formulaire HTML : <form name="Formulaire" method="post" action="servlet/FormulaireServlet"> Entrez votre nom : <input type="text" name="nom"> <input type="submit" value="valider"> </form> http://localhost:8080/TestTomcat/Formulaire.html Servlet : réponse au formulaire : Applications Web en Java 38 Servlet : réponse au formulaire La servlet récupère le nom et génère une page avec : public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String nom = request.getParameter("nom"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>"); out.println("<h1>Bonjour " + nom + " !</h1>"); out.println("</html>"); out.println("</body>"); out.close(); } Servlet : récapitulatif formulaire : Applications Web en Java 39 Servlet : récapitulatif formulaire Formulaire.html 1 : le navigateur rassemble les informations du formulaire, il se connecte au serveur et lui transmet ces informations dans une requête HTTP 2 : le serveur génère dynamiquement une page avec le résultat, l'envoie en réponse HTTP au navigateur Servlet/FormulaireServlet Servlet : GET ou POST ? : Applications Web en Java 40 Servlet : GET ou POST ? Attribut method de la balise form GET : correspond à l'appel d'une page par le navigateur (barre d'adresse ou lien)Transmet les paramètres dans l'URL : http://localhost:8080/servlet/test?param=value POST : plus adapté au transfert de données depuis un formulaire Une servlet peut déterminer ainsi si elle est appelée comme validation d'un formulaire ou non Method POST Method GET Servlet : formulaire et traitement : Applications Web en Java 41 Servlet : formulaire et traitement public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Méthode GET : barre d'adresse response.setContentType("text/html");PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<html>"); out.println("<form name=\"Formulaire\" method=\"post\" action=\"FormulaireServletDeuxEnUn\">"); out.println("Entrez votre nom :"); out.println("<input type=\"text\" name=\"nom\">"); out.println("<input type=\"submit\" value=\"valider\">"); out.println("</form>"); out.println("</html>"); out.println("</body>"); out.close(); } Servlet : formulaire et traitement : Applications Web en Java 42 Servlet : formulaire et traitement public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Méthode POST : validation du formulaire response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>"); String nom = request.getParameter("nom"); out.println("<h1>Bonjour " + nom + " !</h1>"); out.println("</html>"); out.println("</body>"); out.close(); } Servlet : récap formulaire/traitement : Applications Web en Java 43 Servlet : récap formulaire/traitement TP2 : Applications Web en Java 44 TP2 Dans le projet TestTomcat, développer une servlet qui demande un nombre à l'utilisateur et renvoie le calcul de la factorielle de ce nombre Servlet : session : Applications Web en Java 45 Servlet : session L'objet requête passée en paramètre permet de fixer/retrouver des objets pour une session utilisateur L'objet session est une collection d'objets associés à des clés HttpSession : Applications Web en Java 46 HttpSession import javax.servlet.http.HttpSession; … HttpSession session = request.getSession(); … MaClasse monObjet = (MaClasse)session.getAttribute("nom"); … session.setAttribute("nom", monObjet); Servlet : exemple session : Applications Web en Java 47 Servlet : exemple session public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); ArrayList listeCourse = (ArrayList) session.getAttribute("listeCourse"); if (listeCourse == null) { // La liste des courses de l'utilisateur n'a pas ete créée session.setAttribute("listeCourse", new ArrayList()); } //... } TP3 : Applications Web en Java 48 TP3 Ecrire une servlet qui initialise une somme à 0 et demande un nombre via un formulaire Ce nombre est ajouté à la somme renvoyée à l'utilisateur, auquel on demande aussi un nouveau nombre (affichage du résultat précédent et du formulaire sur la page) Le nouveau nombre vient s'ajouter à la somme Et ainsi de suite... Les JSP : Applications Web en Java 49 Les JSP Inconvénients des servlets : générer du code HTML est fastidieux (plusieurs lignes de out.println("") impossible d'utiliser les outils WYSIWYG HTML (Frontpage, Dreamweaver…) pour concevoir la partie présentation des pages Une solution : les Java Server Pages ! JSP JSP :exemple : Applications Web en Java 50 JSP :exemple <%@ page session ="true" %> <%@ page buffer="none" %> <%@ page import="java.util.*" %> <%@ page import="java.text.*" %> <html> <head> <title>Test JSP</title> </head> <body> <% DateFormat df = SimpleDateFormat.getInstance(); %> <h1>Maintenant : <%= df.format(new Date()) %></h1> </body> </html> JSP : principe : Applications Web en Java 51 JSP : principe Au lieu d' écrire du HTML dans une classe Java, on inclut du Java dans une page HTML Des tags spécifiques : <%@ %> : directives (imports, etc.) <% %> : code Java à exécuter <%= %> : résultat Java à afficher Des variables implicites : request, response, session, etc. tags request response JSP : exécution : Applications Web en Java 52 JSP : exécution Lors de la demande d'une page JSP : si c'est la première demande, ou si la page a été modifiée depuis la dernière demande, la page JSP est transformée automatiquement en servlet ; le moteur de servlet exécute la servlet correspondante et renvoie le résultat de l'exécution TP4 : Applications Web en Java 53 TP4 Ecrire une page JSP qui affiche la table de multiplication du nombre 7 Modifier cette page pour pouvoir passer le nombre dont on veut la table dans la requête :http://…/multiplication.jsp?nombre=5 Ajout d’un fichier .jsp : Clic droit sur WebContentJSP Sommaire : Applications Web en Java 54 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Servlets & JSP : Applications Web en Java 55 Servlets & JSP Servlets : Adaptées pour programmer des traitements en Java JSP : Adaptés pour réaliser l'affichage dans une page HTML Conclusion : il faut combiner servlets & JSP ! Le modèle MVC : Applications Web en Java 56 Le modèle MVC Consiste à séparer les différentes fonctions du logiciel Séparation : Modèle : les données manipulées par le logiciel Vue : l'affichage présenté à l'utilisateur Contrôleur : traite les actions de l'utilisateur MVC Le modèle MVC Web : Applications Web en Java 57 Le modèle MVC Web Servlet : contrôleur (réception/envoi des données) JSP : vue (affichage) 1 : Transmission des informations du formulaire Objet Java Objet Java Objet Java (traitement) 2 : Traitements et instanciation des objet 2 : Transmission des objets à la page JSP pour afficher le résultat Utiliser Javascript : Applications Web en Java 58 Utiliser Javascript Dans les exemples précédents, les contrôles sont réalisés dans la servlet après validation du formulaire Or, Javascript permet de réaliser des contrôles dans le navigateur avant la validation du formulaire, ce qui évite un aller-retour sur le réseau javascript JavaScript : exemple (1/3) : Applications Web en Java 59 JavaScript : exemple (1/3) function contientNombre(champ) { // La valeur du champ contenu = champ.value; // Création de l'expression régulière e = new RegExp(/^\d+$/); // Test de conformité return e.test(contenu); } Javascript : exemple (2/3) : Applications Web en Java 60 Javascript : exemple (2/3) function validation(formulaire) { var message =''; if (!contientNombre(formulaire['base'])) { message +='Vous devez choisir un nombre entier pour la base !\n'; } if (!contientNombre(formulaire['hauteur'])) { message += '... un nombre entier pour la hauteur !\n'; } if (message.length == 0) { // Pas d'erreur : on peut valider le formulaire return true; } else { // Erreur : on affiche le message alert(message); return false; } } Javascript : exemple (3/3) : Applications Web en Java 61 Javascript : exemple (3/3) Il faut appeler la méthode de validation sur l'événement onSubmit() du formulaire : <form name="calculAire" method="post" action="servlet/AireServletAvecValidation" onSubmit="return validation(document.forms['calculAire']);"> Les services Web : Applications Web en Java 62 Les services Web Comment fournir un service à tous Utilisation des services web Transport de l’information en XML Les protocoles REST XML-RPC SOAP (le plus utilisé et le plus répandu) HESSIAN (mode binaire, pas de xml) Web service SOAP XML Sommaire : Applications Web en Java 63 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Schéma général : Applications Web en Java 64 Schéma général Données 1 : requête HTTP depuis un formulaire 2 : connexion à la base de données 5 : ensemble de données extraites de la base 6 : page de réponse générée à partir des résultat 4 : requête SQL 3 : objet connexion Problématique : Applications Web en Java 65 Problématique Ouvrir une connexion sur une base de données prend du temps On ne peut pas utiliser la même connexion pour différentes requêtes simultanées La solution réside dans la constitution d'un pool de connexion Architecture optimisée : Applications Web en Java 66 Architecture optimisée Données 1 : requête HTTP depuis un formulaire 5 : ensemble de données extraites de la base 6 : page de réponse générée à partir des résultat 4 : requête SQL POOL 2 : demande de connexion au pool 3 : récupération d'une connexion disponible Configuration du pool (1/2) : Applications Web en Java 67 Configuration du pool (1/2) Dans tomcat\conf\server.xml : <Context path="/TestBD" reloadable="true" docBase="C:\Applis\eclipse\workspace\TestBD " workDir="C:\Applis\eclipse\workspace\TestBD\work\org\apache\jsp" > ... <Resource name="jdbc/TestBD" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/TestBD"> ... <!-- MySQL dB username and password for dB connections --> <parameter> <name>username</name> <value>root</value> </parameter> <parameter> <name>password</name> <value></value> </parameter> Configuration du pool (2/2) : Applications Web en Java 68 Configuration du pool (2/2) <!-- Class name for mm.mysql JDBC driver --> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <!-- The JDBC connection url for connecting to your MySQL dB. The autoReconnect=true argument to the url makes sure that the mm.mysql JDBC Driver will automatically reconnect if mysqld closed the connection. mysqld by default closes idle connections after 8 hours. --> <parameter> <name>url</name> <value>jdbc:mysql://127.0.0.1/TestBD?autoReconnect=true</value> </parameter> </ResourceParams> </Context> Récupération d'une connexion : Applications Web en Java 69 Récupération d'une connexion D’abord récupérer le contexte de l’application web… … puis la connexion Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/TestBD"); Connection conn = ds.getConnection(); … utilisation de la connexion TP 5 : Applications Web en Java 70 TP 5 Une base de données existante contient une table Personne, avec 3 champs : id, nom, prenom, age Suivre les indications de l'enseignant pour obtenir les paramètres de connexion à la base de données Programmer une servlet/un JSP qui affichent dans un tableau les noms de toutes les personnes triés par ordre alphabétique Programmer une servlet/un JSP qui affichent les détails d'une personne dans une fenêtre Popup lorsqu'on clique sur le nom d'une personne Sommaire : Applications Web en Java 71 Sommaire Les différents types d'applications Les applications Web Présentation de Tomcat Utilisation d’Eclipse Servlets & JSP Structurer une application Web Base de données et serveurs d'applications Déployer son application Web Déployer une application : Applications Web en Java 72 Déployer une application L’hébergement d’une application nécessite un serveur : Windows NT/2000/XP Linux 2 solutions : création de son propre serveur délégation de l’hébergement à un professionnel Comment créer son serveur ? : Applications Web en Java 73 Comment créer son serveur ? Utiliser un PC robuste et bien ventilé Installer/Configurer Linux ou Windows Installer/Configurer Java Installer/Configurer MySQL Installer/Configurer Tomcat Webographie : Applications Web en Java 74 Webographie JAVA http://java.sun.com/ HTML/CSS/javascript http://www.devguru.com/ http://www.w3schools.com/ Serveurs d’applications http://www.jboss.com/products/jbossas/ http://tomcat.apache.org/ Webographie : Applications Web en Java 75 Webographie Développement http://lomboz.objectweb.org/ Framework http://www.springframework.org/ http://ws.apache.org/axis/ http://struts.apache.org/ http://java.sun.com/products/jsp/jstl/ http://jakarta.apache.org/commons/