Application Web et J2EE - Servlet

Transcription

Application Web et J2EE - Servlet
Servlet
Application Web et J2EE
Servlet
Pierre Gambarotto
<[email protected]>
Département Informatique et Math appli
ENSEEIHT
Pierre Gambarotto <[email protected]>
Appli Web et J2EE
Servlet
Plan
1
Servlet
Définition et cycle de vie
HTTPServlet
Pierre Gambarotto <[email protected]>
Appli Web et J2EE
Servlet
Définition et cycle de vie
HTTPServlet
Plan
1
Servlet
Définition et cycle de vie
HTTPServlet
Pierre Gambarotto <[email protected]>
Appli Web et J2EE
Servlet
Définition et cycle de vie
HTTPServlet
Définition
Servlet : classe Java respectant une spécification (version 2.4 à ce
jour)
interface Servlet
Méthode init()
init(ServletConfig config)
Méthode service()
service(ServletRequest req, ServletResponse res)
Méthode destroy()
Méthode getServletConfig()
Pierre Gambarotto <[email protected]>
Appli Web et J2EE
Définition et cycle de vie
HTTPServlet
Servlet
Cycle de vie d’une servlet
servlet associée à un nom de
ressource, défini dans web.xml
init()
service()
première requête de ce nom :
chargement de la classe dans la JVM,
instanciation, exécution de la méthode
init()
toute requête :
création des objets requêtes et
réponses
création d’un thread. Exécution de la
méthode service() ou d’une
sous-méthode.
destroy()
fin de vie : appel à destroy() et
destruction de l’objet.
Pierre Gambarotto <[email protected]>
Appli Web et J2EE
Servlet
Définition et cycle de vie
HTTPServlet
Plan
1
Servlet
Définition et cycle de vie
HTTPServlet
Pierre Gambarotto <[email protected]>
Appli Web et J2EE
Servlet
Définition et cycle de vie
HTTPServlet
servlet HTTP
Servlet HTTP : classe HTTPServlet
implémente l’interface Servlet
méthode service déja écrite : appel à des sous
méthodes en fonction du type de requêtes (GET, POST. . .)
Pierre Gambarotto <[email protected]>
Appli Web et J2EE
Servlet
Définition et cycle de vie
HTTPServlet
Ecriture d’une servlet HTTP
1
nouvelle classe, héritant de HTTPServlet
2
Redéfinir éventuellement init() et destroy()
Méthodes de services :
3
GET → doGET()
POST → doPOST()
Les requêtes doXxx() prennent comme argument
HttpServletRequest et HttpServletResponse.
représentation objet de la requête et de la réponse HTTP
Pierre Gambarotto <[email protected]>
Appli Web et J2EE
Servlet
Définition et cycle de vie
HTTPServlet
Ecriture d’une servlet HTTP
Exemple
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class T e s t S e r v l e t extends H t t p S e r l v e t {
public void i n i t ( ) throws S e r v l e t E x c e p t i o n {
// instruction d ’ initialisation
/ / u s u e l : connexion à des r e s s o ur c e s t y p e BD
}
public void doGet ( H t t p S e r v l e t R e q u e s t request ,
HttpServletResponse response )
{
/ / t r a i t e m e n t d ’ une ê r e q u t e de t y p e GET
}
public void d e s t r o y ( ) throws S e r v l e t E x c e p t i o n {
/ / n e t t o y a g e avant de q u i t t e r
/ / u s u e l : f e r m e r l e s connexions
/ / o u v e r t e s dans i n i t ( )
}
}
Pierre Gambarotto <[email protected]>
Appli Web et J2EE
Servlet
Définition et cycle de vie
HTTPServlet
Ecriture d’une servlet
Méthode de services 1
Récupérer les informations de la requête : méthodes de
l’interface HttpServletRequest.
String getParameter(String key)
String[] getParameterValues(String key)
Enumeration getParameterNames()
Exemple avec l’URL
http://.../ressource?id=Pit&action=2,3
getParameter("id") ⇒ "Pit"
getParameter("action") ⇒ "2"
getParameterValues("action") ⇒ ["2","3"]
getParameterNames() ⇒ énumération de "id" et
"action"
Pierre Gambarotto <[email protected]>
Appli Web et J2EE
Servlet
Définition et cycle de vie
HTTPServlet
Ecriture d’une servlet
Méthode de services 2
Construire la réponse : méthodes de l’interface
HttpServletResponse.
Création des en-têtes de la réponses.
setContentType(String| type)
Fixe le type MIME de la réponse HTTP, par exemple
"text/html".
Créer un objet de sortie, qui contiendra le corps de la
réponse.
PrintWriter getWriter()
Pour du contenu de type texte. A remplir avec println().
ServletOutputStream getOutputStrem()
A réserver pour produire un contenu binaire.
Pierre Gambarotto <[email protected]>
Appli Web et J2EE
Servlet
Définition et cycle de vie
HTTPServlet
Ecriture d’une servlet HTTP
Exemple
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import j a v a . i o . ∗ ;
import j a v a . u t i l . ∗ ;
import j a v a x . s e r v l e t . ∗ ;
public class H e l l o S e r v l e t extends H t t p S e r v l e t {
public void doGet ( H t t p S e r v l e t R e q u e s t request ,
HttpServletResponse response )
throws S e r v l e t E x c e p t i o n , IOException
{
response . setContentType ( " t e x t / h t m l " ) ;
P r i n t W r i t e r o u t = response . g e t W r i t e r ( ) ;
o u t . p r i n t l n ( " <html > " +
" <head>< t i t l e > H e l l o < / t i t l e > </ head> " ) ;
o u t . p r i n t l n ( " <body b g c o l o r = \ " # f f f f f f \ " > " +
" <h2> S a l u t O Monde . </ h2> "
o u t . p r i n t l n ( " </ body > </ html > " ) ;
out . close ( ) ;
}
}
Pierre Gambarotto <[email protected]>
Appli Web et J2EE