1 / 34

Servlet

Servlet. M2 – MIAGE/SID Azim.Roussanaly@univ-nancy2.fr. Objectif. Faciliter la programmation des pages dynamiques en JAVA Répartition des tâches : Serveur Web Conteneur Application. Principe. Navigateur. Adressage. Serveur Web. Principe. Navigateur. HTTP/GET. URL. Serveur Web.

matsu
Download Presentation

Servlet

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Servlet M2 – MIAGE/SID Azim.Roussanaly@univ-nancy2.fr

  2. Objectif • Faciliter la programmation des pages dynamiques en JAVA • Répartition des tâches : • Serveur Web • Conteneur • Application Miage SID

  3. Principe Navigateur Adressage Serveur Web Miage SID

  4. Principe Navigateur HTTP/GET URL Serveur Web Miage SID

  5. Principe URL Navigateur Request TomCat Serveur Web Miage SID

  6. Principe Navigateur Request ObjetServlet ObjetServlet ObjetServlet TomCat Serveur Web Miage SID

  7. Principe Navigateur ObjetServlet Response TomCat Serveur Web Miage SID

  8. Principe Navigateur HTML/TXT ObjetServlet Response TomCat Serveur Web Miage SID

  9. Principe Navigateur HTML/TXT ObjetServlet TomCat Serveur Web Miage SID

  10. Classes Java Source: Leila Kefi-Khelif Miage SID

  11. Cycle de vie N’existe pas Instanciation Initialisation Indisponible Disponible Destruction Appel service Miage SID

  12. Cycle de vie Démarragedu conteneur N’existe pas Instanciation Initialisation Indisponible Disponible Destruction Appel service Miage SID

  13. Cycle de vie N’existe pas Instanciation N’existe pas N’existe pas Instanciation Instanciation Appel de init() Appel de init() Appel de init() Initialisation Initialisation Initialisation Indisponible Disponible Indisponible Indisponible Disponible Disponible Destruction Service Destruction Destruction Service Service Miage SID

  14. Cycle de vie N’existe pas Instanciation Initialisation Indisponible Disponible Appel de service() Destruction Service Miage SID

  15. Cycle de vie N’existe pas Instanciation Initialisation Indisponible Disponible Destruction Service Timeout ou arrêtdu conteneur Miage SID

  16. Cycle de vie N’existe pas Instanciation Initialisation Libération Indisponible Disponible Destruction Service Miage SID

  17. Exemple de Servlet publicclass HelloServlet extends HttpServlet { publicvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML>\n" + "<HEAD><TITLE>Hello</TITLE></HEAD>\n" + "<BODY>\n" + "<H1>Hello Nancy !<H1>\n" + "</BODY></HTML>"); } } Miage SID

  18. HttpServlet • doGet() : méthode associée à la requête HTTP GET • doPost() : méthode associée à la requête HTTP POST • init() and destroy() : gestion des ressources liées au cycle de vie du Servlet • getServletInfo() : méthode associée à la description d’un Servlet • HttpServletRequest : classe servant à récupérer les paramètres d’une requête HTTP • HttpServletResponse : classe servant à envoyer la réponse à d’une requête HTTP Miage SID

  19. Arborescence • <Contexte>/ • *.html, *.jsp… • WEB-INF/ • web.xml : descripteur de l’application • classes/ : les classes utilisées par l’application (y compris les servlets) • lib/ : les .jar utilisés par l’application • META-INF/ • context.xml : descripteur des ressources de l’application (uniquement .war) Miage SID

  20. Projet Web/Eclipse • Créer une application avec un seul Servlet qui affiche « Bonjour Nancy !» avec un URL de type: • http://<serveur>/hello/servlet Miage SID

  21. Eclipse • File>New>Dynamic Web Project • Créer un projet (hello) • File>New>Other>Web>Servlet • Créer le servlet HelloServlet (mettre du code) • Ajouter le projet au serveur local et démarrer le serveur local • Tester avec un navigateur (http://localhost/hello/HelloServlet) Miage SID

  22. Web.xml • Rajouter : <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/servlet</url-pattern> </servlet-mapping> • Tester à nouveau Miage SID

  23. Page d’accueil • Ajouter une page d’accueil au projet (index.html) Miage SID

  24. Il y a une vie après le développement • Documentation • Distribution • Déploiement • Tests Miage SID

  25. Web.xml <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name> The name of the application </display-name> <description> C'mon, you know what goes into a description, don't you? </description> <servlet> <servlet-name>guess_what_name_of_servlet</servlet-name> <description>Again, some description</description> <servlet-class>com.foo-bar.somepackage.TheServlet</servlet-class> <init-param> <param-name>foo</param-name> <param-value>bar</param-value> </init-param> </servlet> Miage SID

  26. Web.xml <servlet-mapping> <servlet-name>name_of_a_servlet</servlet-name> <url-pattern>*.some_pattern</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>image</servlet-name> <url-pattern>/image</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> </web-app> Miage SID

  27. Modèle • Nous proposons un « modèle » de projet qui s’appuie sur Ant (à installer préalablement) • Objectif : • Rester compatible avec un projet Eclipse • Intégrer une documentation • Engendrer une distribution (source ou binaire) • Faciliter le déploiement Miage SID

  28. Exercice • Ecrire une application composée d’un servlet qui affiche « Hello Nancy ! » en utilisant le web-modele fournit Miage SID

  29. Etapes • Créer un dossier hello2 dans votre workspace • Y recopier le contenu du dossier web-modele • Créer un projet hello2 de type Dynamic Web sous Eclipse • Recopier les sources du projet hello • Tester Miage SID

  30. Etapes • Mettre à jour les fichiers • README.txt • CHANGELOG.txt • doc/*.html • Engendrer une distribution source • Dans une fenêtre de commande: • ant dist • Déployer • Mettre à jour le fichier proj.properties • ant deploy Miage SID

  31. Application « bonjour » Miage SID

  32. Application « bonjour » Miage SID

  33. Gestion des sessions • HTTP : protocole sans état • Impossibilité de garder des informations d’une requête à l’autre (identifier un client d’un autre) • Utilisation de différentes solutions pour remédier au problème d’état dont: • Cookies • HttpSession Miage SID

  34. HttpSession //get the session object HttpSession session = request.getSession(); //get the resource Integer count = (Integer)session.getAttribute("count"); //if it is the first call, create it if (count == null) { count = new Integer(0); }else{//update the resource count = new Integer(count.intValue()+1); } // store the new resource session.setAttribute("count", count); Miage SID

More Related