1
1
Architectures Java/Web :
Servlets & JSP
Alain Paoli
Novembre 2001
2
Plan
• Architectures CGI, PHP, Servlets, JSP
• Principes de programmation CGI vs. Servlet et PHP vs. JSP
• Servlets
– Exemple
– Cycle de vie
– Traitement des formulaires
– Sessions
– Connexions au bases de données
• JSP
– Syntaxe
– Tags JSP pré-définis: traitement des formulaires HTML
– Exemple simple
– Architecture MVC: Exemple
2
3
Architecture CGI
• Module CGI (Common Gateway Interface): appelle le programme
CGI correspondant à la requête.
• Pour chaque requête, un processus système est créé sur le serveur.
OK
logon: xx@...
pass: ****
Vous êtes
enregistré !
Serveur
Web
Module
CGI
Requête HTTP
Page Réponse
Programme
CGI
Client Serveur
Page HTML
4
Architecture PHP
• Pour chaque requête:
– Suivant la plate-forme (Apache/mySQl/Unix, ou autre), on utilise un
processus existant, ou on en crée un pour interpréter la page PHP et
générer la page de réponse.
Vous êtes
enregistré !
Serveur
Web Module
PHP
Requête HTTP
Page Réponse
Client Serveur
OK
logon: xx@...
pass: ****
<?php …..
….. ?> MySQL
Page PHP
Interprète la page PHP et
génère la page de réponse
3
5
Architecture Servlet
• ServletEngine: dirige la requête vers le servlet correspondant.
• Servlet = instance d’une classe héritant de javax.servlet.http.HttpServlet
– Une seule instance est crée par le moteur de servlet.
• Pour chaque requête
– Lancement d’un nouveau thread sur la méthode doGet ou doPost de l’instance
unique du servlet pour générer la page de réponse.
Vous êtes
enregistré !
Serveur
Web
Servlet
Engine
Requête HTTP
Page Réponse
Instance
du Servlet
Client Serveur
Thread
Page HTML
OK
logon: xx@...
pass: ****
6
Architecture JSP
• JSP Engine:
– Si la page JSP n’a pas encore été compilée sous la forme d’un servlet:
• Génère le source d’un servlet, puis compile ce source.
– Passe la requête au Servlet Engine, qui crée l’instance de ce servlet.
Vous êtes
enregistré !
Serveur
Web
Servlet
Engine
Requête HTTP
Page Réponse
Instance
du Servlet
Client Serveur
Thread
JSP
Engine
OK
logon: xx@...
pass: ****
<% …..
….. %>
Page JSP
4
7
Programmation CGI vs. Servlet
• Un même principe:
– Un programme génère le code HTML de la page de réponse.
• Logique de l’application et présentation ne sont pas séparées.
• Différences:
– CGI: Programmation classique.
• Les paramètres de la requête HTTP sont passés au programme appelé.
– Servlet: C’est une instance d’une classe qui hérite de la classe
javax.servlet.httpHttpServlet et qui redéfini la (ou les)
méthode(s) doPost ou doGet.
• Appel de la méthode doPost ou doGet du servlet suivant le type de la requête
HTTP (GET ou POST)
• Les paramètres de la requête HTTP sont encapsulés dans un objet
(javax.servlet.http.HttpServletRequest) passé en paramètre des méthodes
doPost ou doGet.
• Code réentrant: le servlet ne doit pas mémoriser d’état.
8
Programmation PHP / JSP
• Un même principe:
– On insère du code PHP (vs. JSP) dans du code HTML
• Séparation (partielle ou complète) entre logique de l’application et
présentation.
• Différences entre PHP et JSP:
– Syntaxiques: en JSP on distingue entre:
• du code Java qui retourne une valeur: expression entre ‘<%=‘ et ‘%>
• du code Java qui exécute une action: scriptlet entre ‘<%‘ et ‘%>
– Sémantiques: sessions, connexions aux bases de données, ...
– En JSP on peut :
• Utiliser les tags pré-définis JSP
• Définir ses propres tags JSP: permet d’étendre le langage JSP.
5
9
Programmation des Servlets
10
Servlet - Idiome
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MonServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// (1) Utiliser l’objet "request" pour lire les headers HTTP (ex. cookies)
// et les paramètres transmis par un formulaire HTML
// (2) Spécifie les headers HTTP (e.x. MIME type, passer des cookies) à l’aide de l’objet
// "response" pour écrire la page réponse, et récupère le flot de sortie via cet objet "response"
PrintWriter out = response.getWriter();
// Utiliser l’objet "out" pour écrire la page réponse envoyée au navigateur
}
}
Déclaration des noms de packages dont on va
utiliser les classes. Permet de citer les classes
avec leur nom ‘court’.
‘MonServlet’ hérite de HttpServlet
Surcharge la méthode doGet
Objet encapsulant la requête HTTP Objet encapsulant la réponse
1 / 19 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!