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 linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !