34
eveloppement Web - Servlet eveloppement Web - Servlet Jean-Michel Richer [email protected] http://www.info.univ-angers.fr/pub/richer M1/M2 Informatique - 2010-2011 1 / 34

Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Developpement Web - Servlet

Jean-Michel [email protected]

http://www.info.univ-angers.fr/pub/richer

M1/M2 Informatique - 2010-2011

1 / 34

Page 2: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Plan

Plan

1 Introduction

2 Servlet

3 Classes et interfaces

4 Mise en application

5 Bibliographie

2 / 34

Page 3: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Introduction

Programmation Web avec Java

Objectifs

• initiation a la programmation Web avec Java

• base sur J2EE : ensemble d’API pour developper des sitesweb avec une technologie Java

Definition (J2EE)

Java 2 Platform Entreprise Edition est un environnement pourle developpement d’applications Web en Java

3 / 34

Page 4: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Introduction

Programmation Web avec Java

Objectifs

• initiation a la programmation Web avec Java

• base sur J2EE : ensemble d’API pour developper des sitesweb avec une technologie Java

Definition (J2EE)

Java 2 Platform Entreprise Edition est un environnement pourle developpement d’applications Web en Java

4 / 34

Page 5: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Servlet

Servlet

Servlet

5 / 34

Page 6: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Servlet

Qu’est ce qu’un Servlet ?

Definition (Servlet)

• un programme Java compile (.class)

• execute par un serveur web dedie

• invoque a travers une URL

Exemple

ajout nouveau client.html lie a AjoutClient.class

6 / 34

Page 7: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Servlet

Qu’est ce qu’un Servlet ?

Definition (Servlet)

• un programme Java compile (.class)

• execute par un serveur web dedie

• invoque a travers une URL

Exemple

ajout nouveau client.html lie a AjoutClient.class

7 / 34

Page 8: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Servlet

Les serveurs J2EE

Serveurs

Serveurs aussi qualifies 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

Page 9: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Servlet

Les serveurs J2EE

Serveurs

Serveurs aussi qualifies 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

Page 10: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Servlet

Les serveurs J2EE

Serveurs

Serveurs aussi qualifies 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

Page 11: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Servlet

Les serveurs J2EE

Serveurs

Serveurs aussi qualifies 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

Page 12: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Servlet

Les serveurs J2EE

Serveurs

Serveurs aussi qualifies 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

Page 13: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Servlet

Lien servlet / URL : WEB-INF

Structure du repertoire WEB-INF

Projet

WEB−INF

classes web.xml

index.html

HelloWorld.class

13 / 34

Page 14: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Servlet

Lien servlet URL

le fichier web.xml• descripteur de deploiement

• il permet de faire la liaison entre une URL (.html, .jsp)et le servlet (.class)

14 / 34

Page 15: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Servlet

Exemple de fichier web.xml

Exemple de fichier web.xml

1 <?xml version="1.0" encoding="UTF-8"?>2 <!DOCTYPE web-app PUBLIC3 "-//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

15 / 34

Page 16: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

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;67 public class HelloWorld extends HttpServlet8 {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 }1617 protected void doPost(HttpServletRequest request,18 HttpServletResponse response)19 throws ServletException, java.io.IOException {20 doGet (request, response);21 }22 }23

16 / 34

Page 17: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Servlet

Deploiement et fichier WAR

Deploiement

consiste en l’installation des fichiers (servlets, html, JSP) sur leconteneur de servlets

WAR file

un fichier WAR (Web Application ARchive) est un fichier JARutilise pour contenir un ensemble de JavaServer Pages,servlets, classes Java, fichiers XML, et des pages webstatiques

17 / 34

Page 18: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Classes et interfaces

Classes et Interfaces

Classes et Interfaces

18 / 34

Page 19: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Classes et interfaces

Classe HttpServlet

classe HttpServlet

gere les requetes GET ou POST

methodes• void doGet(request, response) : appele lors du

traitement d’une requete GET

• void doPost(request, response) : appele lors dutraitement d’une requete POST

• void init() : initialisation au demarrage (une seule fois)

• void destroy() : arret du servlet

19 / 34

Page 20: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Classes et interfaces

Classe HttpServlet

classe HttpServlet

gere les requetes GET ou POST

methodes• void doGet(request, response) : appele lors du

traitement d’une requete GET

• void doPost(request, response) : appele lors dutraitement d’une requete POST

• void init() : initialisation au demarrage (une seule fois)

• void destroy() : arret du servlet

20 / 34

Page 21: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Classes et interfaces

Interface HttpServletRequest

Interface HttpServletRequest

encapsule des donnees de la requete, notamment :

• parametres de formulaire : <form> </form>

• attributs

• cookies

• session

21 / 34

Page 22: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Classes et interfaces

Interface HttpServletRequest

methodes• String getParameter(String) : valeur du parametre

• String[] getParameterValues(String) : valeurs duparametre (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

Page 23: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Classes et interfaces

Interface HttpServletRequest, exemple

Exemple

12 // recupere les champs ’nom’ et ’prenom’ d’un formulaire3 String nom=reponse.getParameter("nom").trim();4 String prenom=reponse.getParameter("prenom").trim();56 // en cas d’erreur7 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

23 / 34

Page 24: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Classes et interfaces

Interface HttpServletResponse

Interface HttpServletResponse

permet d’ecrire des donnees texte au sein du navigateur

• obtenir le flux de sortie par getWriter()• specifier le format de sortie setContentType(”text/html”)

24 / 34

Page 25: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Classes et interfaces

Interface HttpServletResponse, exemple

Exemple

12 PrintWriter out = response.getWriter();3 response.setContentType("text/html");4 out.println ("hello world");5

25 / 34

Page 26: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Classes et interfaces

Interface RequestDispatcher

Interface RequestDispatcher

propose deux methodes

• forward(request, response) : passe le controle a uneautre servlet, le flux de sortie produit par la servletcourante est supprime

• include(request, response) : inclusion dynamique d’unservlet, equivalent a un appel de sous-programme

26 / 34

Page 27: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Classes et interfaces

Interface HttpSession

Interface HttpSession

permet de gerer la session courante

• void setAttribute(String nom, Object obj) : positionne unattribut a la valeur donnee

• Object getAttribute(String nom) : obtenir la valeur del’attribut

• Enumeration getAttributeNames() : liste des nomsd’attributs

• removeAttribute(String nom) : supprime un attribut

27 / 34

Page 28: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Mise en application

Mise en application

Applications

28 / 34

Page 29: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Mise en application

Installation des logiciels

Logiciels a 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

Page 30: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Mise en application

Hello World !

creation du servlet HelloWorldServlet

ecrire un servlet qui affiche ”Hello World” :

• creer la structure des repertoires

• creer les fichiers web.xml et HelloWorldServlet.java

• creer un makefile pour automatiser la compilation et lacreation du fichier war

30 / 34

Page 31: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Mise en application

Formulaire

creation du servlet FormProcessorServlet

ecrire un servlet qui recupere les informations d’un formulaire(nom, prenom) et les affiche dans une nouvelle page html

31 / 34

Page 32: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Mise en application

Formulaire + ant

utilisation de ant

remplacer le makefile par un fichier build.xml qui permettrad’automatiser :

• compilation,

• generation du fichier war

• et deploiement

32 / 34

Page 33: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Bibliographie

Bibliographie

Bibliographie

33 / 34

Page 34: Developpement Web - Servlet´ · Developpement Web - Servlet´ Introduction Programmation Web avec Java Objectifs • initiation a la programmation Web avec Java` • base sur J2EE

Developpement Web - Servlet

Bibliographie

Bibliographie, sitographie

• Developpement Web avec J2EE, O’ Reilly, Eric Sarrion,Paris, 2005, ISBN 2-35402-140-2

• Agile Java Development with Sping, Hibernate andEclipse, Anil Hemrajani, Developer’s Library, 2006, ISBN9780672328961

• http://java.sun.com/products/servlet/ SUN

• http://java.developpez.com/cours/servlets/Tutorial par Julien Gilli

34 / 34