Академический Документы
Профессиональный Документы
Культура Документы
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;
}
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);
}
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
C: Object A: GenericServlet
I: ServletResponse I: HttpServletResponse
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)
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
19
L’interface ServletResponse
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