Servlet

32
Servlet M2 – MIAGE/SID [email protected]

description

Servlet. M2 – MIAGE/SID [email protected]. Objectif. Faciliter la programmation des pages dynamiques en JAVA Répartition des tâches : Serveur Web Conteneur Application. Principe. Navigateur. Adressage. Serveur Web. Principe. Navigateur. HTTP/GET. URL. Serveur Web. - PowerPoint PPT Presentation

Transcript of Servlet

Page 1: Servlet

Servlet

M2 – MIAGE/[email protected]

Page 2: Servlet

Miage SID 2

Objectif

• Faciliter la programmation des pages dynamiques en JAVA

• Répartition des tâches :– Serveur Web– Conteneur– Application

Page 3: Servlet

Miage SID 3

Principe

Navigateur

Serveur Web

Adressage

Page 4: Servlet

Miage SID 4

Principe

Navigateur

HTTP/GET

Serveur Web

URL

Page 5: Servlet

Miage SID 5

Principe

Navigateur

Serveur Web

TomCat

URL

Request

Page 6: Servlet

Miage SID 6

Principe

Navigateur

Serveur Web

TomCat

Request

ObjetServletObjet

ServletObjetServlet

Page 7: Servlet

Miage SID 7

Principe

Navigateur

Serveur Web

TomCat

Response

ObjetServlet

Page 8: Servlet

Miage SID 8

Principe

Navigateur

Serveur Web

TomCat

Response

ObjetServlet

HTML/TXT

Page 9: Servlet

Miage SID 9

Principe

Navigateur

Serveur Web

TomCat

ObjetServlet

HTML/TXT

Page 10: Servlet

Miage SID 10

Classes Java

Source: Leila Kefi-Khelif

Page 11: Servlet

Miage SID 11

Cycle de vie

N’existe pas Instanciation

Initialisation

Disponible

Appel service

Indisponible

Destruction

Page 12: Servlet

Miage SID 12

Cycle de vie

N’existe pas Instanciation

Initialisation

Disponible

Appel service

Indisponible

Destruction

Démarragedu conteneur

Page 13: Servlet

Miage SID 13

Cycle de vie

N’existe pas Instanciation

Initialisation

Disponible

Service

Indisponible

Destruction

Appel de init()

N’existe pas Instanciation

Initialisation

Disponible

Service

Indisponible

Destruction

Appel de init()

N’existe pas Instanciation

Initialisation

Disponible

Service

Indisponible

Destruction

Appel de init()

Page 14: Servlet

Miage SID 14

Cycle de vie

N’existe pas Instanciation

Initialisation

Disponible

Service

Indisponible

Destruction

Appel de service()

Page 15: Servlet

Miage SID 15

Cycle de vie

N’existe pas Instanciation

Initialisation

Disponible

Service

Indisponible

DestructionTimeout ou arrêt

du conteneur

Page 16: Servlet

Miage SID 16

Cycle de vie

N’existe pas Instanciation

Initialisation

Disponible

Service

Indisponible

Destruction

Libération

Page 17: Servlet

Miage SID 17

Exemple de Servlet

public class HelloServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML>\n" + "<HEAD><TITLE>Hello</TITLE></HEAD>\n" + "<BODY>\n" + "<H1>Hello Nancy !<H1>\n" + "</BODY></HTML>"); }}

Page 18: Servlet

Miage SID 18

HttpServlet

• doGet() : méthode associée à la requête HTTP GET • doPost() : méthode associée à la requête HTTP POST • init() and destroy() : gestion des ressources liées au cycle de

vie du Servlet• getServletInfo() : méthode associée à la description d’un

Servlet• HttpServletRequest : classe servant à récupérer les

paramètres d’une requête HTTP • HttpServletResponse : classe servant à envoyer la réponse à

d’une requête HTTP

Page 19: Servlet

Miage SID 19

Arborescence

• <Contexte>/– *.html, *.jsp…

– WEB-INF/• web.xml : descripteur de l’application

• classes/ : les classes utilisées par l’application (y compris les servlets)

• lib/ : les .jar utilisés par l’application

– META-INF/• context.xml : descripteur des ressources de l’application

(uniquement .war)

Page 20: Servlet

Miage SID 20

Projet Web/Eclipse

• Créer une application avec un seul Servlet qui affiche « Bonjour Nancy !» avec un URL de type:– http://<serveur>/hello/servlet

Page 21: Servlet

Miage SID 21

Eclipse

• File>New>Dynamic Web Project– Créer un projet (hello)

• File>New>Other>Web>Servlet– Créer le servlet HelloServlet (mettre du code)

• Ajouter le projet au serveur local et démarrer le serveur local

• Tester avec un navigateur (http://localhost/hello/HelloServlet)

Page 22: Servlet

Miage SID 22

Web.xml

• Rajouter :<servlet-mapping>

<servlet-name>HelloServlet</servlet-name>

<url-pattern>/servlet</url-pattern>

</servlet-mapping>

• Tester à nouveau

Page 23: Servlet

Miage SID 23

Page d’accueil

• Ajouter une page d’accueil au projet (index.html)

Page 24: Servlet

Miage SID 24

Il y a une vie après le développement

• Documentation

• Distribution

• Déploiement

• Tests

Page 25: Servlet

Miage SID 25

Web.xml<?xml version="1.0" encoding="ISO-8859-1"?> <!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> <display-name> The name of the application </display-name> <description> C'mon, you know what goes into a description, don't you? </description> <servlet> <servlet-name>guess_what_name_of_servlet</servlet-name> <description>Again, some description</description> <servlet-class>com.foo-bar.somepackage.TheServlet</servlet-class> <init-param> <param-name>foo</param-name> <param-value>bar</param-value> </init-param>

</servlet>

Page 26: Servlet

Miage SID 26

Web.xml

<servlet-mapping> <servlet-name>name_of_a_servlet</servlet-name> <url-pattern>*.some_pattern</url-pattern> </servlet-mapping>

<servlet-mapping> <servlet-name>image</servlet-name> <url-pattern>/image</url-pattern> </servlet-mapping>

<session-config> <session-timeout>30</session-timeout> </session-config>

</web-app>

Page 27: Servlet

Miage SID 27

Modèle

• Nous proposons un « modèle » de projet qui s’appuie sur Ant (à installer préalablement)

• Objectif :– Rester compatible avec un projet Eclipse– Intégrer une documentation– Engendrer une distribution (source ou binaire)– Faciliter le déploiement

Page 28: Servlet

Miage SID 28

Exercice

• Ecrire une application composée d’un servlet qui affiche « Hello Nancy ! » en utilisant le web-modele fournit

Page 29: Servlet

Miage SID 29

Etapes

• Créer un dossier hello2 dans votre workspace

• Y recopier le contenu du dossier web-modele

• Créer un projet hello2 de type Dynamic Web sous Eclipse

• Recopier les sources du projet hello• Tester

Page 30: Servlet

Miage SID 30

Etapes

• Mettre à jour les fichiers– README.txt– CHANGELOG.txt– doc/*.html

• Engendrer une distribution source– Dans une fenêtre de commande:

• ant dist

• Déployer– Mettre à jour le fichier proj.properties– ant deploy

Page 31: Servlet

Miage SID 31

Application « bonjour »

Page 32: Servlet

Miage SID 32

Application « bonjour »