Développement Web
Transcription
Développement Web - Servlet Développement Web - Servlet Jean-Michel Richer [email protected] http://www.info.univ-angers.fr/pub/richer L3 Pro Informatique - 2010-2011 1 / 34 Développement Web - Servlet Plan Plan 1 Introduction 2 Servlet 3 Classes et interfaces 4 Mise en application 5 Bibliographie 2 / 34 Développement Web - Servlet Introduction Programmation Web avec Java Objectifs • initiation à la programmation Web avec Java • basé sur J2EE : ensemble d’API pour développer des sites web avec une technologie Java Definition (J2EE) Java 2 Platform Entreprise Edition est un environnement pour le développement d’applications Web en Java. Initialement développé par Sun puis maintenant chez Oracle (rachat avril 2009). 3 / 34 Développement Web - Servlet Introduction Programmation Web avec Java Objectifs • initiation à la programmation Web avec Java • basé sur J2EE : ensemble d’API pour développer des sites web avec une technologie Java Definition (J2EE) Java 2 Platform Entreprise Edition est un environnement pour le développement d’applications Web en Java. Initialement développé par Sun puis maintenant chez Oracle (rachat avril 2009). 4 / 34 Développement Web - Servlet Servlet Servlet Servlet 5 / 34 Développement Web - Servlet Servlet Qu’est ce qu’un Servlet ? Definition (Servlet) • un programme Java compilé (.class) • exécuté par un serveur web dédié • invoqué à travers une URL Exemple ajout nouveau client.html lié á AjoutClient.class 6 / 34 Développement Web - Servlet Servlet Qu’est ce qu’un Servlet ? Definition (Servlet) • un programme Java compilé (.class) • exécuté par un serveur web dédié • invoqué à travers une URL Exemple ajout nouveau client.html lié á AjoutClient.class 7 / 34 Développement Web - Servlet Servlet Les serveurs J2EE Serveurs Serveurs aussi qualifiés de conteneurs de servlets : • Tomcat (Apache) • Websphere (IBM) • GlassFish (SUN Microsystems) • JBoss (Red Hat) • voir aussi Wikipedia pour une liste exhaustive http://fr.wikipedia.org/wiki/Conteneurs_de_servlets 8 / 34 Développement Web - Servlet Servlet Les serveurs J2EE Serveurs Serveurs aussi qualifiés de conteneurs de servlets : • Tomcat (Apache) • Websphere (IBM) • GlassFish (SUN Microsystems) • JBoss (Red Hat) • voir aussi Wikipedia pour une liste exhaustive http://fr.wikipedia.org/wiki/Conteneurs_de_servlets 9 / 34 Développement Web - Servlet Servlet Les serveurs J2EE Serveurs Serveurs aussi qualifiés de conteneurs de servlets : • Tomcat (Apache) • Websphere (IBM) • GlassFish (SUN Microsystems) • JBoss (Red Hat) • voir aussi Wikipedia pour une liste exhaustive http://fr.wikipedia.org/wiki/Conteneurs_de_servlets 10 / 34 Développement Web - Servlet Servlet Les serveurs J2EE Serveurs Serveurs aussi qualifiés de conteneurs de servlets : • Tomcat (Apache) • Websphere (IBM) • GlassFish (SUN Microsystems) • JBoss (Red Hat) • voir aussi Wikipedia pour une liste exhaustive http://fr.wikipedia.org/wiki/Conteneurs_de_servlets 11 / 34 Développement Web - Servlet Servlet Les serveurs J2EE Serveurs Serveurs aussi qualifiés de conteneurs de servlets : • Tomcat (Apache) • Websphere (IBM) • GlassFish (SUN Microsystems) • JBoss (Red Hat) • voir aussi Wikipedia pour une liste exhaustive http://fr.wikipedia.org/wiki/Conteneurs_de_servlets 12 / 34 Développement Web - Servlet Servlet Lien servlet / URL : WEB-INF Structure du répertoire WEB-INF Projet index.html WEB−INF classes web.xml HelloWorld.class 13 / 34 Développement Web - Servlet Servlet Lien servlet URL le fichier web.xml • descripteur de déploiement • il permet de faire la liaison entre une URL (.html, .jsp) et le servlet (.class) 14 / 34 Développement Web - Servlet Servlet Exemple de fichier web.xml Exemple de fichier web.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?xml version="1.0" encoding="UTF-8"?> <!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> <servlet> <servlet-name>bonjour</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>bonjour</servlet-name> <url-pattern>/say hello.htm</url-pattern> </servlet-mapping> </web-app> 15 / 34 Développement Web - Servlet Servlet Structure de base d’un servlet Exemple 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloWorld extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { PrintWriter out = response.getWriter(); response.setContentType("text/html"); out.println ("hello world"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { doGet (request, response); } } 16 / 34 Développement Web - Servlet Servlet Déploiement et fichier WAR Déploiement consiste en l’installation des fichiers (servlets, html, JSP) sur le conteneur de servlets WAR file un fichier WAR (Web Application ARchive) est un fichier JAR utilisé pour contenir un ensemble de JavaServer Pages, servlets, classes Java, fichiers XML, et des pages web statiques 17 / 34 Développement Web - Servlet Classes et interfaces Classes et Interfaces Classes et Interfaces 18 / 34 Développement Web - Servlet Classes et interfaces Classe HttpServlet classe HttpServlet gère les requêtes GET ou POST méthodes • void doGet(request, response) : appelé lors du traitement d’une requête GET • void doPost(request, response) : appelé lors du traitement d’une requête POST • void init() : initialisation au démarrage (une seule fois) • void destroy() : arrêt du servlet 19 / 34 Développement Web - Servlet Classes et interfaces Classe HttpServlet classe HttpServlet gère les requêtes GET ou POST méthodes • void doGet(request, response) : appelé lors du traitement d’une requête GET • void doPost(request, response) : appelé lors du traitement d’une requête POST • void init() : initialisation au démarrage (une seule fois) • void destroy() : arrêt du servlet 20 / 34 Développement Web - Servlet Classes et interfaces Interface HttpServletRequest Interface HttpServletRequest encapsule des données de la requête, notamment : • paramètres de formulaire : <form> </form> • attributs • cookies • session 21 / 34 Développement Web - Servlet Classes et interfaces Interface HttpServletRequest méthodes • String getParameter(String) : valeur du paramètre • String[] getParameterValues(String) : valeurs du paramètre (cas d’une liste) • void setAttribute(String nom, Object obj) • Object getAttribute(String nom) • Cookie[] getCookies() • HttpSession getSession() • RequestDispatcher getRequestDispatcher(path) : pour faire un forward 22 / 34 Développement Web - Servlet Classes et interfaces Interface HttpServletRequest, exemple Exemple 1 2 3 4 5 6 7 8 9 10 11 12 13 // recupere les champs ’nom’ et ’prenom’ d’un formulaire String nom=reponse.getParameter("nom").trim(); String prenom=reponse.getParameter("prenom").trim(); // en cas d’erreur if (nom.isEmpty() || prenom.isEmpty()) { request.setAttribute("error msg", "nom ou le prenom ne doivent pas etre vides"); RequestDispatcher disp=request.getRequestDispatcher("ajoute personne.jsp"); disp.forward(request, response); } 23 / 34 Développement Web - Servlet Classes et interfaces Interface HttpServletResponse Interface HttpServletResponse permet d’écrire des données texte au sein du navigateur • obtenir le flux de sortie par getWriter() • spécifier le format de sortie setContentType(”text/html”) 24 / 34 Développement Web - Servlet Classes et interfaces Interface HttpServletResponse, exemple Exemple 1 2 PrintWriter out = response.getWriter(); 3 response.setContentType("text/html"); 4 out.println ("hello world"); 5 25 / 34 Développement Web - Servlet Classes et interfaces Interface RequestDispatcher Interface RequestDispatcher propose deux méthodes • forward(request, response) : passe le contrôle à une autre servlet, le flux de sortie produit par la servlet courante est supprimé • include(request, response) : inclusion dynamique d’un servlet, équivalent à un appel de sous-programme 26 / 34 Développement Web - Servlet Classes et interfaces Interface HttpSession Interface HttpSession permet de gérer la session courante • void setAttribute(String nom, Object obj) : positionne un attribut à la valeur donnée • Object getAttribute(String nom) : obtenir la valeur de l’attribut • Enumeration getAttributeNames() : liste des noms d’attributs • removeAttribute(String nom) : supprime un attribut 27 / 34 Développement Web - Servlet Mise en application Mise en application Applications 28 / 34 Développement Web - Servlet Mise en application Installation des logiciels Logiciels à installer • serveur Tomcat (www.apache.org) dans /opt • JDK 1.6 (java.sun.com) ou openjdk (Synaptic) • J2EE (java.sun.com) /opt • Eclipse (www.eclipse.org) 29 / 34 Développement Web - Servlet Mise en application Hello World ! création du servlet HelloWorldServlet écrire un servlet qui affiche ”Hello World” : • créer la structure des répertoires • créer les fichiers web.xml et HelloWorldServlet.java • créer un makefile pour automatiser la compilation et la création du fichier war 30 / 34 Développement Web - Servlet Mise en application Formulaire création du servlet FormProcessorServlet écrire un servlet qui récupère les informations d’un formulaire (nom, prénom) et les affiche dans une nouvelle page html 31 / 34 Développement Web - Servlet Mise en application Formulaire + ant utilisation de ant remplacer le makefile par un fichier build.xml qui permettra d’automatiser : • compilation, • génération du fichier war • et déploiement 32 / 34 Développement Web - Servlet Bibliographie Bibliographie Bibliographie 33 / 34 Développement Web - Servlet Bibliographie Bibliographie, sitographie • Développement Web avec J2EE, O’ Reilly, Eric Sarrion, Paris, 2005, ISBN 2-35402-140-2 • Agile Java Development with Spring, Hibernate and Eclipse, Anil Hemrajani, Developer’s Library, 2006, ISBN 9780672328961 • http://java.sun.com/products/servlet/ SUN • http://java.developpez.com/cours/servlets/ Tutorial par Julien Gilli 34 / 34
Documents pareils
TP 5 JSTL, MVC - LRDE
http://localhost:8080/TP5_Contacts/ControllerServlet ). Ensuite, la ControllerServlet charge la liste
des contacts dans la requête (request.setAttribute("listContacts", contactFacade.findAll())), p...
SERVLET TP 1 Installation du JDK Installation de Glassfish
Ant to build, package, and deploy the sample applications.
III. L`environnement Web Au sommaire 1. Introduction 1. Introduction
1.0 version initiale
2.0 version standardisée W3C
3.0 version étendue (tableaux, images cliquables, applets)
4.0 version étendue (frames, feuilles de styles)
Applications WEB à base de Servlets
fenêtre de dialogue (name+password)
L’utilisateur renseigne les informations demandées, le
navigateur renvoie la requête
Les Servlets
Reprenons ce programme et modifions-le pour qu'il prenne en compte un paramètre envoyé par
une requête GTTP de type GET et affiche la valeur de ce paramètre.