Développement Web

publicité
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
Téléchargement