View
6
Download
0
Category
Preview:
Citation preview
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
Recommended