Developpement Web - Servlet´richer/ens/l3pro/crs_servlet.pdf · Developpement Web - Servlet´...

Post on 10-Mar-2020

6 views 0 download

Transcript of Developpement Web - Servlet´richer/ens/l3pro/crs_servlet.pdf · Developpement Web - Servlet´...

Developpement Web - Servlet

Developpement Web - Servlet

Jean-Michel Richerjean-michel.richer@univ-angers.fr

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

L3 Pro Informatique - 2010-2011

1 / 34

Developpement Web - Servlet

Plan

Plan

1 Introduction

2 Servlet

3 Classes et interfaces

4 Mise en application

5 Bibliographie

2 / 34

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. Initialementdeveloppe par Sun puis maintenant chez Oracle (rachat avril2009).

3 / 34

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. Initialementdeveloppe par Sun puis maintenant chez Oracle (rachat avril2009).

4 / 34

Developpement Web - Servlet

Servlet

Servlet

Servlet

5 / 34

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

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

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

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

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

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

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

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

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

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

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

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

Developpement Web - Servlet

Classes et interfaces

Classes et Interfaces

Classes et Interfaces

18 / 34

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

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

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

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

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

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

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

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

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

Developpement Web - Servlet

Mise en application

Mise en application

Applications

28 / 34

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

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

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

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

Developpement Web - Servlet

Bibliographie

Bibliographie

Bibliographie

33 / 34

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 Spring, 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