Java-Servlet-Jsp
Rapports de Stage : Java-Servlet-Jsp. Rechercher de 53 000+ Dissertation Gratuites et Mémoiresl'API servlet pour : •Initialiser et finaliser la servlet •Accéder à l'environnement de la servlet •Recevoir ou rediriger les requêtes et envoyer les réponses •Interagir avec d'autres servlets ou composants •Maintenir les informations de sessions du client •Filtrer avant ou après traitement les requêtes et les réponses •Implémenter la sécurité sur le tiers web
Servlet & JSP
4
par Philippe Poulard JSP = Document Centric servlet ASP PHP La technologie JSP fournit un moyen simple et extensible pour générer du contenu dynamique pour le client web.
JSP
Java Server Pages
Servlet & JSP
5
Une page JSP est un document texte qui décrit comment traiter la requête d'un client et comment créer une réponse. Une page JSP contient : •Des informations de formatage (modèle) du document web, habituellement en HTML ou XML. Les concepteurs web peuvent modifier cette partie de la page sans affecter les parties dynamiques. Cette approche permet de séparer la présentation du contenu dynamique. •Des éléments JSP et de script pour générer le contenu dynamique du document Web. La plupart des pages JSP utilisent aussi des JavaBeans et/ou des Enterprise JavaBeans pour réaliser les opérations complexes de l'application. Les JSP permettent en standard d'instancier des beans, de modifier ou lire leurs attributs et de télécharger des applets. La technologie JSP est extensible en utilisant des balises personnalisées qui peuvent être encapsulées dans des bibliothèques de balises personnalisées (taglibs)
par Philippe Poulard
Exemple JSP
Le résultat d'une page peut être : •HTML •XML •SVG •WML •…
Localized Dates Locale:
Servlet & JSP
6
Le résultat est une page HTML dynamique
par Philippe Poulard
Le conteneur Web
Les composants web sont hébergés dans des conteneurs de servlets, conteneurs de JSP et conteneurs web. En sus des fonctionnalités normales d'un conteneur de composants, un conteneur de servlets (servlets container) fournit les services réseaux par lesquels les requêtes et réponses sont émises.
Servlet & JSP
Il décode également les requêtes et formate les réponses dans le format approprié. Tous les conteneurs de servlets doivent supporter le protocole HTTP et peuvent aussi supporter le protocole HTTPS. Un conteneur de JSP (JSP container) fournit les mêmes services qu'un conteneur de servlets. Ces conteneurs sont généralement appelés conteneurs web (Web containers). container Web requête HTTP servlet service création d'un Thread pour chaque requête
7
par Philippe Poulard
Technos Web
(pas de "bricolage") La technologie J2EE offre une approche beaucoup plus formelle pour le traitement des applications Web que les technologies alternatives apparentées (ASP, PHP, CGI, ISAPI, NSAPI…) CGI Un processus par requête est lancée sur le serveur Servlets •Résidentes •pas de temps de lancement •Multithreads •Gestion de cache •Connexions persistantes (BD) •Plus efficaces •Plus pratiques •Plus puissantes •Portables •Gratuites On peut faire des choses impossibles à réaliser avec des scripts CGI C'est du Java !
…ça rame
Servlet & JSP
8
•gratuit •implémenté sur tous les serveurs Web •supporte tous les langages (les utilisateurs l'utilisent surtout avec PERL) •assez lent •parfois difficile à développer Manque d'évolutivité (plusieurs processus créés, serveur très sollicité) Contournement : •FastCGI : instance partagée des programmes CGI •mod_perl (Apache) : script CGI interprété et exécuté dans le serveur Web
par Philippe Poulard
Avantages de Java côté serveur
Servlet & JSP
Servlets plus pratiques : C'est du Java ! API pour gérer : •les cookies •le suivi de session •le protocole HTTP (headers HTTP)
Portabilité de Java Supportées sur tous les serveurs : •Apache •Microsoft IIS •WebStar…
Plus facile à utiliser que CGI/PERL
Partage de données entre servlets Chaînage de servlets Gestion de sessions
9
Inconvénient : Comme toutes les technos Web, l'interface graphique utilisateur est limitée à HTML
par Philippe Poulard
Requêtes HTTP Contenu d'une requête HTTP
•infos d’en-tête •URL de la ressource •données de formatage Requête GET : •pour extraire des informations sur le serveur •intègre les données de formatage à l ’URL
http://www.inria.fr/hello?param1=value1&…
Servlet & JSP
Requête POST : •pour modifier les données sur le serveur •données de la page assemblées/envoyées vers le serveur
Traitement d'une requête par le serveur
Avec la requête HTTP, le serveur Web : •identifie l’environnement d ’exploitation à charger (mapping) •en fonction de l ’extension du fichier (.jsp , .cgi , .php...) •ou du répertoire où il se trouve ( cgi-bin/, servlet/) •charge l’environnement d ’exécution (run-time) •interpréteur Perl pour les programmes CGI en Perl •JVM pour les servlets Java •…
10
par Philippe Poulard
Utilisation d'une servlet
Une servlet doit implémenter l’interface javax.servlet.Servlet •soit directement, •soit en dérivant d’une classe qui implémente déjà cette interface (comme GenericServlet ou HttpServlet ) L'interface javax.servlet.Servlet possède les méthodes pour : •initialiser la servlet : init() •recevoir et répondre aux requêtes des clients : service() •détruire la servlet et ses ressources : destroy()
import javax.servlet.*; public class MyServlet implements Servlet { public void init(ServletConfig config) throws ServletException { // phase d'initialisation } public void service( ServletRequest req, ServletResponse rep) throws ServletException, IOException { // phase de traitement des requêtes } public void destroy() { // phase d'arrêt }
Servlet & JSP
11
}
par Philippe Poulard
Cycle de vie
moteur de servlet
démarrage du serveur
crée un pool de Thread instancie la servlet initialise la servlet
Thread
Thread Servlet init()
Servlet & JSP
requête HTTP 1 requête HTTP 2 réponse HTTP 1 réponse HTTP 2
arrêt du serveur
affecter à un Thread affecter à un Thread service() service()
terminer le pool de Thread détruire la servlet destroy()
12
par Philippe Poulard
Utilisation d'une servlet Web
Une servlet Web étend la classe javax.servlet.http.HttpServlet (elle implémente javax.servlet.Servlet) Plusieurs méthodes spécifiques au protocole HTTP remplacent la méthode service(), qui appelle la méthode correspondant au type de requête : Méthode Type de requête HTTP GET POST PUT DELETE HEAD OPTIONS TRACE
import javax.servlet.*; import javax.servlet.http.*; public class SimpleServlet extends HttpServlet {
Servlet & JSP
doGet() doPost() doPut() doDelete() doHead() doOptions() doTrace()
public void init(ServletConfig c) throws ServletException { // phase d'initialisation } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { // phase de traitement des requêtes HTTP GET } public void destroy() { // phase d'arrêt } public String
...