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