1 / 34 Développement Web - Servlet Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer L3 Pro Informatique - 2010-2011
2 / 34 Plan Plan 1 Introduction 2 Servlet 3 Classes et interfaces 4 Mise en application 5 Bibliographie
3 / 34 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 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).
5 / 34 Servlet Servlet Servlet
6 / 34 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 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
8 / 34 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 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 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 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 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
13 / 34 Servlet Lien servlet / URL : WEB-INF Structure du répertoire WEB-INF Projet WEB INF index.html classes web.xml HelloWorld.class
14 / 34 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)
15 / 34 Servlet Exemple de fichier web.xml Exemple de fichier web.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE web-app PUBLIC 3 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 4 "http://java.sun.com/dtd/web-app 2 3.dtd"> 5 <web-app> 6 <servlet> 7 <servlet-name>bonjour</servlet-name> 8 <servlet-class>helloworld</servlet-class> 9 </servlet> 10 <servlet-mapping> 11 <servlet-name>bonjour</servlet-name> 12 <url-pattern>/say hello.htm</url-pattern> 13 </servlet-mapping> 14 </web-app> 15
16 / 34 Servlet Structure de base d un servlet Exemple 1 import java.io.printwriter; 2 import javax.servlet.servletexception; 3 import javax.servlet.http.httpservlet; 4 import javax.servlet.http.httpservletrequest; 5 import javax.servlet.http.httpservletresponse; 6 7 public class HelloWorld extends HttpServlet 8 { 9 protected void doget(httpservletrequest request, 10 HttpServletResponse response) 11 throws ServletException, java.io.ioexception { 12 PrintWriter out = response.getwriter(); 13 response.setcontenttype("text/html"); 14 out.println ("hello world"); 15 } 16 17 protected void dopost(httpservletrequest request, 18 HttpServletResponse response) 19 throws ServletException, java.io.ioexception { 20 doget (request, response); 21 } 22 } 23
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
18 / 34 Classes et interfaces Classes et Interfaces Classes et Interfaces
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
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
21 / 34 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
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
23 / 34 Classes et interfaces Interface HttpServletRequest, exemple Exemple 1 2 // recupere les champs nom et prenom d un formulaire 3 String nom=reponse.getparameter("nom").trim(); 4 String prenom=reponse.getparameter("prenom").trim(); 5 6 // en cas d erreur 7 if (nom.isempty() prenom.isempty()) { 8 request.setattribute("error msg", 9 "nom ou le prenom ne doivent pas etre vides"); 10 RequestDispatcher disp=request.getrequestdispatcher("ajoute personne.jsp"); 11 disp.forward(request, response); 12 } 13
24 / 34 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 )
25 / 34 Classes et interfaces Interface HttpServletResponse, exemple Exemple 1 2 PrintWriter out = response.getwriter(); 3 response.setcontenttype("text/html"); 4 out.println ("hello world"); 5
26 / 34 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
27 / 34 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
28 / 34 Mise en application Mise en application Applications
29 / 34 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)
30 / 34 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
31 / 34 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
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
33 / 34 Bibliographie Bibliographie Bibliographie
34 / 34 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