Vous êtes sur la page 1sur 21

Java EE

Les Servlets
Partie 2

1
Introduction
 Une application web est une application client/serveur
 L’API servlet est l’une des APIs de base pour le
développement côté serveur de l’application web
 Les servlets sont des composants permettant de :
 Générer des pages dynamique
 Traiter et/ou stocker des données recueillies via un formulaire
HTML
 Effectuer des traitements applicatifs côté serveur
 Gérer les sessions
 Exploiter toute L’API Java (JDBC, JMAIL, etc)

2
Structure d’une application web
 L’application web est archivée dans un web archive (.war) et
décrite par le descripteur de déploiement « web.xml »
 L’application web sera déployée dans le répertoire /webapps du
serveur web
 L’application web est structurée dans :
 Le dossier src qui va contenir les fichier sources *.java (Servlets)
 Le dossier WebContent qui va contenir le dossier WEB-INF et les
fichiers sources .JSP, html et xhtml
 le dossier WEB-INF qui va contenir les composants suivants:
 WEB-INF/web.xml : C’est le fichier XML permettant de décrire l’application
web
 WEB-INF/lib : contient les archives additionnels (.jar) dont a besoin l'application
web

3
Les Servlets
 Une servlet est un composant qui étend les fonctionnalités
d'un serveur web de manière portable et efficace
 Un serveur web héberge des classes Java servlets qui sont
exécutées à l'intérieur du conteneur web
 Le serveur web associe une ou plusieurs URLs à chaque
servlet et lorsque ces URLs sont appelées via une requête
HTTP de l'utilisateur la servlet est déclenchée
 Quand la servlet reçoit une requête du client, elle génère une
réponse, éventuellement en utilisant la logique métier
contenue dans des EJBs ou en interrogeant directement une
base de données
 Elle retourne alors une réponse HTML ou XML au client

4
Conteneur de Servlet
 Le conteneur de Servlets constitue l’environnement
d’exécution de la servlet et lui permet de persister entre
les requêtes des clients
 Le conteneur peut recevoir plusieurs requêtes, et il se
charge de sélectionner la Servlet qui va traiter chacune
de ces requêtes
 Le conteneur fournit aussi tout un ensemble de services
standards pour simplifier la gestion des requêtes et des
sessions
 Exemples de conteneur de servlets : le serveur Tomcat
d’Apache, Jboss, WebSphere Applcation Server d’IBM,
Weblogic de BEA
5
API Servlet
 Dans la plate-forme Java EE 6, les nouvelles fonctionnalités de
la technologie Java Servlet sont les suivantes :
 Prise en charge des Annotations
 Facilité de configuration
 Améliorations apportées à des API existantes
 Les servlets sont définies dans les packages suivants:
 javax.servlet
 javax.servlet.http
 Javax.servlet.annotation
 Javax.servlet.descriptor

6
Servlet
 Les servlets utilisent des classes et interfaces issues des 2
packages javax.servlet (servlets indépendantes des
protocoles) et javax.servlet.http (servlets spécifiques au
protocole http).
 Une servlet doit soit implémenter l’interface
 javax.servlet.Servlet ou étendre soit la classe
 javax.servlet.GenericServlet soit
 javax.servlet.http.HttpServlet.
 Une servlet n’a ni de méthode main() ni constructeur.
 Syntaxe : import javax.servlet.http.HttpServlet;

public class Atelier1 extends HttpServlet {

}
7
Servlet
 Les initialisations peuvent se faire dans une des méthodes init()
héritées de javax.servlet.GenricServlet.
@Override
public void init() throws ServletException {
super.init();
}

@Override
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}

 La méthode destroy() permet de libérer les ressources


acquises.

8
API Servlet
java.util javax.servlet.http

I:
I: EventListener HttpSessionBindingListener
javax.servlet I: HttpSession
SingleThreadModel
java.io C: Cookie

I: Serializable
ServletConfig C: HttpUtils
A: InputStream A: ServletInputStream
I: Servlet A: HttpServlet
A: OutputStream A: ServletOutputStream
I: ServletContext HttpServletContext

Java.lang I: ServletRequest I: HttpServletRequest

C: Object A: GenericServlet
I: ServletResponse I: HttpServletResponse

C: Exception C: ServletException I: Filter

9 extends
implements
Le package javax.servlet
 Les interfaces
 RequestDispatcher: Définition d'un objet qui permet le renvoi
d'une requête vers une autre ressource du serveur (une autre
servlet, une JSP ...)
 Servlet : Définition de base d'une servlet
 ServletConfig : Définition d'un objet pour configurer la servlet
 ServletContext : Définition d'un objet pour obtenir des
informations sur le contexte d'exécution de la servlet

10
Le package javax.servlet
 ServletRequest : Définition d'un objet contenant la
requête du client
 ServletResponse : Définition d'un objet qui contient la
réponse renvoyée par la servlet
 SingleThreadModel : Permet de définir une servlet qui ne
répondra qu'à une seule requête à la fois

11
Le package javax.servlet
 Les classes
 GenericServlet : Classe définissant une servlet indépendante de
tout protocole
 ServletInputStream : Flux permet la lecture des données de la
requête cliente
 ServletOutputStream : Flux permettant l'envoie de la réponse
de la servlet
 ServletException : Exception générale en cas de problème
durant l'exécution de la servlet
 UnavailableException : Exception levée si la servlet n'est pas
disponible

12
Le package javax.servlet.http
 Les interfaces
 HttpServletRequest : Hérite de ServletRequest et définit un objet
contenant une requête selon le protocole http
 HttpServletResponse : Hérite de ServletResponse et définit un
objet contenant la réponse de la servlet selon le protocole http
 HttpSession : Définit un objet qui représente une session
 Syntaxe :
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
}
13
Le package javax.servlet.http
 Les classes
 Cookie : Classe représentant un cookie (ensemble de données
sauvegardées par le navigateur web sur le poste client)
 HttpServlet : Hérite de GenericServlet et définit une servlet
utilisant le protocole http
 HttpUtils : Classe proposant des méthodes statiques utiles
pour le développement de servlet http

14
Servlets
 Une servlet est un objet qui peut être manipulé par le
conteneur via l’interface suivante:
« Interface »
Servlet

Void destroy()
ServletConfig getServletConfig()
String getServletInfo()
void init(ServletConfig)
Void service(ServletRequest, ServletResponse)

 Lorsque le conteneur reçoit une requête, il la transmet au


Servlet qui correspond à l’URL pour que la requête soit
traitée effectivement

15
GenericServlet
Servlets HTTP void destroy()
String getInitParameter(String)
« interface » Enumeration getInitParameterNames()
Servlet ServletConfig getServletConfig()
ServletContext getServletContext()
Void destroy() String getServletInfo()
ServletConfig getServletConfig() String getServletName()
String getServletInfo() void init()
void init(ServletConfig) void init(ServletConfig)
void service(ServletRequest, ServletResponse) void log(String)
void log(String, Throwable)
MaServlet void service(ServletRequest, ServletResponse)
void doGet (HttpServletRequest,
HttpServletResponse)
HttpServlet
void doPost(HttpServletRequest,
HttpServletResponse) # void doDelete(HttpServletRequest, HttpServletResponse)
void doWhatYouWant() # void doGet(HttpServletRequest, HttpServletResponse)
# void doHead(HttpServletRequest, HttpServletResponse)
# void doOptions(HttpServletRequest, HttpServletResponse)
La classe MaServlet doit implémenter# void doPost(HttpServletRequest, HttpServletResponse)
l’interface Servlet du package javax.servlet# void doPut(HttpServletRequest, HttpServletResponse)
ou simplement étendre la classe# void doTrace(HttpServletRequest, HttpServletResponse)
HttpServlet du package javax.servlet.http # long getLastModified(HttpServletRequest)
# void service(HttpServletRequest, HttpServletResponse)
16
void service(ServletRequest, ServletResponse)
L’interface Servlet
 Elle définit 5 méthodes qui permettent au conteneur web
de dialoguer avec la servlet
 void service(ServletRequest req, ServletResponse res)
Cette méthode est exécutée par le conteneur web lorsque la
servlet est sollicitée par une requête du client
 void init(ServletConfig conf) Permet l’initialisation de la
servlet. Cette méthode est appelée une seule fois après
l'instanciation de la servlet
 ServletConfig getServletConfig() Renvoie l'objet
ServletConfig qui est passé en paramètre à la méthode init

17
L’interface Servlet
 void destroy()
Cette méthode est appelée par le serveur lors de la
destruction de la servlet Elle permet de libérer proprement les
ressources allouées par la fonction init

 String getServletInfo()
Renvoie des informations sur la servlet

18
L’interface ServletRequest

 Elle définit deux méthodes permettant d'obtenir un flux


pour les données de la requête client :
 ServletInputStream getInputStream()
 BufferedReader getReader()

19
L’interface ServletResponse

 Elle définit trois méthodes permettant de fournir une


réponse à la requête client :
 void setContentType (String type) : Permet de préciser le type
MIME de la réponse
 ServletOutputStream getOutputStream() : Permet d'obtenir
un flux pour envoyer la réponse
 PrintWriter getWriter() : Permet d'obtenir un flux pour
envoyer la réponse
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
response.setContentType("text/html");
out.println("<tr>");}
20
Requêtes et Réponses HTTP
« interface »
ServletRequest «interface»
ServletResponse
Object getAttribute(String)
int getContentLength() int getBufferSize()
ServletInputStream getInputStream() String getContentType()
int getLocalPort() ServletOutputStream getOutputStream()
String getParameter(String) PrintWriter getWriter()
Enumeration getParameterNames()
void setContentType(String)
String[] getParameterValues(String)
// Other methods not listed here…
// Other methods not listed here…

HttpServletRequest HttpServletResponse
String getContextPath() void addCookie(Cookie cookie)
Cookie[] getCookies()
void addHeader(String, String)
String getHeader(String)
String getMethod() String encodeRedirectURL(String)
String getQueryString() void sendError(int, String)
HttpSession getSession() void setStatus(int)
// Other methods not listed here… // Other methods not listed here…
21
extends

Vous aimerez peut-être aussi