840 likes | 1.12k Views
Applications Web avec Java. AgroParisTech : Module 2A. Duke. 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
E N D
Applications Web avec Java AgroParisTech : Module 2A Duke
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 Applications Web en Java
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 Applications Web en Java
Les différents types d’applis • Applications autonomes Données Exécutable Applications Web en Java
Les différents types d’applis • Applications déportées Données Gestionnaired'écrans Terminal ouémulateur Applications Web en Java
Les différents types d’applis • Applications client/serveur Données Exécutable Applications Web en Java
Les différents types d’applis • Applications client/serveur distribuées ou 3-tiers Données Exécutable Exécutable Applications Web en Java
Les différents types d’applis • Les applications client léger ou applications web Données NavigateurHTML/Javascript Serveurd'applications Applications Web en Java
AWT Swing SWT 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 Applications Web en Java
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 Applications Web en Java
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) Applications Web en Java
Outils du web à l’origine • Editeurs de pages HTML/Javascript : • Microsoft FrontPage • Macromédia DreamWeaver • NVU • Transfert de pages : • FTP • webdav FTP WebDav Applications Web en Java
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 Applications Web en Java
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 Applications Web en Java
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 Applications Web en Java
Web dynamique : principes Formulaire :- champs de saisie - bouton de validation Applications Web en Java
Web dynamique : principes Transmission des données du formulaire Réponse à la demande Applications Web en Java
1 : le navigateur rassemble les informations du formulaire, il se connecte au serveur et lui transmet ces informations dans une requête HTTP 4 : le navigateur affiche la page et rompt la connexion 3 : le serveur génère dynamiquement une page avec le résultat, l'envoie en réponse HTTP au navigateur Web dynamique : principes 2 : le serveur accepte la connexion reçoit la requête, retrouve les informations transmises et recherche les données correspondantes Applications Web en Java
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) ? Applications Web en Java
1 : le navigateur rassemble les informations du formulaire, il se connecte au serveur et lui transmet ces informations dans une requête HTTP 3 : le serveur génère dynamiquement une page avec le résultat, l'envoie en réponse HTTP au navigateur, accompagnée du cookie. 4 : Le navigateur garde le cookie et affiche la page 5 : lors de la requête suivante, le navigateur retransmet le cookie au serveur, qui saura ainsi identifier l'utilisateur... 3 : le serveur génère une page en fonction de l'utilisateur identifié par son cookie 5 : etc. Alfred Gérard 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 Applications Web en Java
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 Applications Web en Java
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 Applications Web en Java
Tomcat • Un « conteneur web » (web container) J2EE • Implémentation Java de référence • Serveur open-source gratuit et multi-plateformes (écrit en Java) Applications Web en Java
Tomcat installation • Prérequis : • nécessite un Software Development Kit • JDK : Java Development Kit http://www.oracle.com/technetwork/java/javase/downloads/index.html • Eclipse Europa pour développement J2EEhttp://www.eclipse.org/downloads/moreinfo/jee.php • Tomcathttp://jakarta.apache.org/tomcat Applications Web en Java
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 Applications Web en Java
Tomcat / eclipse • Création d'un serveur Tomcat sous eclipse • Fichier/Nouveau/Autres • Serveur/Serveur, Next • Apache/Tomcat 5.5 Server, Finish Applications Web en Java
Tomcat : démarrage/arrêt Applications Web en Java
Tomcat : bon fonctionnement • http://localhost:8080 Applications Web en Java
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 Applications Web en Java
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.5 • finish Applications Web en Java
Arborescence d'une application Applications Web en Java
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 Applications Web en Java
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 Applications Web en Java
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() Applications Web en Java
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 Applications Web en Java
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(); Applications Web en Java
Servlet : exemple simple publicclassSimpleServletextendsHttpServlet{ publicvoiddoGet(HttpServletRequestrequest, HttpServletResponseresponse)throwsServletException,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 Applications Web en Java
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 Applications Web en Java
Servlet : réponse au formulaire • La servlet récupère le nom et génère une page avec : publicvoiddoPost(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException,IOException{ Stringnom=request.getParameter("nom"); response.setContentType("text/html"); PrintWriterout=response.getWriter(); out.println("<html>"); out.println("<body>"); out.println("<h1>Bonjour "+nom+" !</h1>"); out.println("</html>"); out.println("</body>"); out.close(); } Applications Web en Java
Servlet : récapitulatif formulaire 1 : le navigateur rassemble les informations du formulaire, il se connecte au serveur et lui transmet ces informations dans une requête HTTP Formulaire.html Servlet/FormulaireServlet 2 : le serveur génère dynamiquement une page avec le résultat, l'envoie en réponse HTTP au navigateur Applications Web en Java
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 Applications Web en Java
Servlet : formulaire et traitement publicvoiddoGet(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException,IOException{ // Méthode GET : barre d'adresse response.setContentType("text/html");PrintWriterout=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(); } Applications Web en Java
Servlet : formulaire et traitement publicvoiddoPost(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException,IOException{ // Méthode POST : validation du formulaire response.setContentType("text/html"); PrintWriterout=response.getWriter(); out.println("<html>"); out.println("<body>"); Stringnom=request.getParameter("nom"); out.println("<h1>Bonjour "+nom+" !</h1>"); out.println("</html>"); out.println("</body>"); out.close(); } Applications Web en Java
1 : appel de la servlet via la barre d'adresse : méthode GET 2 : renvoi du formulaire 3 : appel de la servlet via le bouton de validation : méthode POST 4 : renvoi du résultat Servlet : récap formulaire/traitement Applications Web en Java
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 Applications Web en Java
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 Applications Web en Java
HttpSession import javax.servlet.http.HttpSession; … HttpSession session = request.getSession(); … MaClasse monObjet = (MaClasse)session.getAttribute("nom"); … session.setAttribute("nom", monObjet); Applications Web en Java
Servlet : exemple session publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ HttpSessionsession=request.getSession(); ArrayListlisteCourse=(ArrayList)session.getAttribute("listeCourse"); if(listeCourse==null){ // La liste des courses de l'utilisateur n'a pas ete créée session.setAttribute("listeCourse",newArrayList()); } //... } Applications Web en Java
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... Applications Web en Java
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 Applications Web en Java