Java - Servlet et JSP Servlets JSP (Java Server Pages) Tomcat

Slides:



Advertisements
Présentations similaires
JEE 5 - JSF F.Pfister 2 institut eerie Les technologies du web Servlets JSP MVC Model 1 : servlets + JSP MVC Model.
Advertisements

Transformation de documents XML
Exposé de Système - Informatique et Réseau
Programmation Web Les JSP.
Cours 5.3 : XML et les architectures N-tiers – Tier Présentation
Cours 6 : XML et les architectures N-tiers – Tier Applicatif

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
Environnement Premier projet.
TP 3-4 BD21.
JSP Java Server Pages. Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java propose trois solutions.
Servlet JAVA.
JSP 2 Crash Course Michel Buffa UNSA
Introduction aux Session Beans
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Common Gateway Interface
Oct.-2000DESS IIDEE © B. BAH 1 ASP Caractéristiques dun fichier ASP Son extension : « *.asp » La balise: Son indépendance vis à vis de toute plate–forme,
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Struts 1 & 2 Tlohi ibtissam Tabit boutaina Ilias bouras
Applications Internet
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
SERVLETS PRESENTATION
Développement Rapide dApplications Web avec.NET « Mon premier site »
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Création d'un projet Web avec Netbeans
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
Le formulaire Les chaînes de requêtes. Les chaînes de requêtes (QueryStrings) correspondent à des informations associées à l'adresse URL avec un point.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
JSTL JSP Standard Tag Library
Servlets.
JSP (Java Server Pages)
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Adaptée du cours de Richard Grin
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
Les servlets Java Les bases de la génération dynamique HTML en Java Sébastien Limet etGérard Rozsavolgyi Licence Professionnelle
Chapitre 2 Développement Web avec les technologies JSP/Servlets
La notion de type revisitée en POO
PHP 5° PARTIE : LES COOKIES
Créer des packages.
Annexe 2 entêtes HTTP et cookies. Accéder aux objets requêtes et réponses Ces objets sont disponibles dans les classes clé depuis la méthode awake les.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Tutorat en bio-informatique
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Struts.
PHP 6° PARTIE : LES SESSIONS 1.Introduction 2.Identificateur de session 3.Variables de session 4.Client / Serveur 5.Principe 6.Ouverture de session 7.Enregistrement.
 Formulaires HTML : traiter les entrées utilisateur
Cours MIAGE « Architectures Orientées Services »Henry Boccon-GibodCours MIAGE « Architectures Orientées Services »Henry Boccon-Gibod 1 Architectures Orientées.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
M2 – MIAGE/SID Servlet et session M2 – MIAGE/SID
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Service de vidéo à la demande Projet Tutoré : Groupe C3 Université Paris 5.
Architecture Client/Serveur
Les Java Server Pages Dans ce chapitre, nous allons :
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
IFT 6800 Atelier en Technologies d’information Chapitre 5 Introduction aux Servelets & JSP.
JAVA EE 5 Q.R. C’est quoi une servlets?
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Développement d’applications Web
Transcription de la présentation:

Java - Servlet et JSP Servlets JSP (Java Server Pages) Tomcat Programmation coté serveur Entièrement JAVA

Les Servlets

Servlet - Sommaire Qu'est-ce que c'est ? Cycle de vie Partager l'information Initialisation Écriture des services Invoquer d'autres ressources Accéder au contexte de l'application

Servlet - Sommaire Maintenir un état client Finaliser une servlet

Qu'est-ce qu'une servlet ? Classe Java spécifique Étend les capacités d'un serveur à travers un modèle requête/réponse Une Servlet peut répondre à n'importe quel type de requête Il existe une classe Java spécifique orienté HTTP

Qu'est-ce qu'une servlet ? Packages/APIs échanges génériques : javax.servlet échanges HTTP : javax.servlet.http Tous implémente l'interface Servlet Classe GenericServlet

Qu'est-ce qu'une servlet ? Services reposant sur HTTP La classe HttpServlet doGet doPost

Cycle de vie Le cycle de vie d'une servlet est controlée par un conteneur Un conteneur est le programme qui héberge une ou plusieurs applications web

Cycle de vie Lorsqu'une requête est mappée à une servlet : si une instance de la servlet n'existe pas la classe de la servlet est chargée le conteneur instancie la classe la méthode init est lancée (initialisation vue plus loin) la méthode service est invoquée avec les objets les objets de requête et réponse.

Cycle de vie Si le conteneur lance la méthode destroy : quand il doit être arreté quand l'application n'est plus déployée ... Une application peut déclarer des « listener » pour gérer ses différents cycles de vie

Partager l'information Les composants web échangent avec d'autres objets pour accomplir certaines tâches : JavaBean bases de données autres ressources web ...

Partager l'information Un des principaux moyens pour une application web d'echanger avec d'autres objets : Scope Objects Ce sont des objets de « visibilité » qui permettent d'accéder à des ressources Cette notion induit un niveau variable d'échange possible => notion de contexte

Partager l'information Il existe plusieurs contextes (du plus large au plus fin ): web : composants web de la servlet session : composants gérant une requête qui appartiennent à une session request : composants de la requête Les propriétés de ces objets sont accessibles via des méthodes get|set

Partager l'information Attention aux accès concurrents ! des composants peuvent être partagés par le jeu des contextes : le contexte le plus large est visible par toutes les applications pour un même contexte, un objet peut aussi être mis en concurrence d'accès attention au multithreading

Partager l'information exemple de code « synchronisé » : public class Counter { private int counter; public Counter() { counter = 0; } public synchronized int getCounter() { return counter; } public synchronized int setCounter(int c) { counter = c; public synchronized int incCounter() { return(++counter);

Initialisation phase se déroulant juste après le chargement de la servlet par le conteneur méthode init () surchargeable exemple : initialisation de ressources configuration propre à l'application activité qui doit être lancé au démarrage

Initialisation exemple public class MyServlet extends HttpServlet { private BookDBAO bookDB; public void init() { // code d'initialisation de la servlet }

Écriture des services le service d'une servlet est une implémentation de la méthode service de la classe GenericServlet service = doXXX : Get, Delete Options, Post Put, Trace

Écriture des services Ce sont des surcharges de méthodes de la classe HttpServlet la méthode service de la classe Servlet peut aussi être surchargée pour des besoins non HTTP

Écriture des services le modèle commun d'écriture de service : extraction des informations d'une requête accès aux ressources externes nécessaires peuplement de la réponse en conséquence réponse au client

Écriture des services point de vue programmatif : récupérer un flux de sortie pour la réponse si besoin modifier les en-têtes écrire un corps de réponse dans un buffer vider le buffer dans le flux de sortie

Écriture des services -Extraire les informations d'une requête une requête contient des informations passées entre le client et l'application : validation de formulaire n'importe quelle requête web (AJAX...) toutes les requêtes implémentent l'interface ServletRequest

Écriture des services -Extraire les informations d'une requête L'interface ServletRequest récupérer les paramètres informations sur le protocole utilisé informations de localisation (langue, encodage ...) objets Java passés par le conteneur ou par une autre servlet interface générique

Écriture des services -Extraire les informations d'une requête Exemple String bookId = request.getParameter("Add"); request est un objet implicite crée par le conteneur getParameter est une des méthodes de javax.servlet.ServletRequest

Écriture des services -Extraire les informations d'une requête spécialisation pour HTTP : HttpServletRequest requetes purement HTTP données d'URL historiquement tout ce qu'on peut trouver dans QUERY_STRING

Écriture des services -Extraire les informations d'une requête URL http://[host]:[port][chemin]?[query string] le chemin est découpé en plusieurs informations : un contexte qui identifie l'application chemin vers la servlet le chemin vers la servlet peut être un mapping logique du conteneur

Écriture des services -Extraire les informations d'une requête query_string contient toutes les informations transmises Client <a href="/bookstore1/catalog?Add=101"> Add To Cart</a> Serveur String bookId = request.getParameter("Add");

Écriture des services -Construction de la réponse données transmises du serveur vers le client toutes les réponses implémentent l'interface javax.servlet.ServletResponse

Écriture des services -Construction de la réponse récupération d'un flux de sortie pour écrire les données vers le client déclaration du type de contenu (MIME) gestion du buffer (par defaut non utilisé) gestion des locales

Écriture des services -Construction de la réponse spécialisation pour HTTP javax.servlet.HttpServletResponse gestion des codes HTTP (404 ...) gestion des cookies petite quantité d'information stockée chez le client utilisé pour garder un identifiant de session (session tracking)

Écriture des services -Construction de la réponse Exemple public class BookDetailsServlet extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) { response.setContentType("text/html"); response.setBufferSize(8192); PrintWriter out = response.getWriter(); out.println("<html>" + "<head><title>+ messages.getString("TitleBookDescription") +</title></head>"); ...

Invoquer d'autres ressources processus qui fait parti de la construction d'une réponse il existe deux modèles d'invocation : par inclusion par délégation La classe RequestDispatcher est l'aiguillage des applications web

Invoquer d'autres ressources -L'inclusion cas d'inclusion bannières informatives information de type copyright en fonction d'un contenu ... RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/banniere"); if (dispatcher != null) dispatcher.include(request, response);

Invoquer d'autres ressources -L'inclusion un composant intégré par inclusion dans une page a accès à l'objet request : peut écrire dans le corps de la réponse n'a pas le droit de modifier les en-têtes HTTP

Invoquer d'autres ressources -Le transfert vers un autre composant plus utilisé dans un modèle de traitement que de contribution directe à une réponse exemples pré-traiter une requête pour générer un objet intermédiaire effectuer un test applicatif comme une identification ...

Invoquer d'autres ressources -Le transfert vers un autre composant exemple RequestDispatcher dispatcher = request. getRequestDispatcher("/template.jsp"); if (dispatcher != null) dispatcher.forward(request,response);

Accéder au contexte de l'application les composants web s'executent dans un contexte objet implémentant ServletContext paramètres d'initialisation ressources associées (objets, pool de connexion à une BD ...) contraintes d'identification

Accéder au contexte de l'application le contexte de l'application (web context) est l'endroit ou l'information peut être partagée setAttribute (name) getAttribute (Name,Object) Attention, la visibilité/portée est globale !

Maintenir un état client beaucoup d'applications web ont besoin de stocker des informations durant une série de requêtes série de requêtes = transaction une transaction a parfois besoin d'une certaine quantité de données persistantes

Maintenir un état client les données gerées par une transaction sont maintenues dans une session une session maintient « en vie » les données de l'application pendant une transaction cette nécessité est inhérente à la nature même de HTTP (sans état)

Maintenir un état client -Accéder à une session les sessions sont des instances de la classe HttpSession une servlet met sa session à disposition avec la méthode getSession il se peut qu'elle n'existe pas au premier appel, dans ce cas elle est instanciée

Maintenir un état client -Associer des objets à une session n'importe quel objet peut être stocké dans la session mécanisme d'association nommé attention à ne pas confondre objet et applicatif et données (une sesssion n'est pas une BD)

Maintenir un état client -Associer des objets à une session tous les composants appartenant au même contexte voient ce qui est stocké dans la session ET qui partagent une requête de la même session

Maintenir un état client -Associer des objets à une session exemple HttpSession session = request.getSession(); ShoppingCart cart; cart=(ShoppingCart)session.getAttribute("cart");

Maintenir un état client -Notification d'événements de session un objet peut être notifié de son appartenance à une session quand l'objet est ajouté/enlevé de la session javax.servlet.http.HttpSessionBindingListener quand la session est réveillée ou mise en sommeil (ce qui permet d'optimiser le conteneur à travers une BD ... ) javax.servlet.http.HttpSessionActivationListener

Maintenir un état client -Gestion de la session un client ne peut pas notifier qu'il na plus besoin de session HTTP est un protocole sans état une session possède un timeout (configurable) [get|set]MaxInactiveInterval web.xml

Maintenir un état client -Gestion de la session lorsque la session est terminée, elle peut être invalidée par la méthode invalidate HttpSession session=request.getSession(); // traitements session.invalidate();

Maintenir un état client -Tracking de session un conteneur web peut utiliser plusieurs méthodes pour maintenir un état client dans tous les cas basées sur un identifiant peut être stocké dans un cookie à chaque URL retournée au client (écrite dans la réponse)

Maintenir un état client -Gestion de la session attention un client peut ne pas supporter les cookies ! dans ce cas response.encodeURL ajoute automatiquement un attribut jsessionid

Finaliser une servlet lorsqu'un conteneur décide qu'une servlet doit être retirée (hors de ressources, shutdown ...) destroy ()

Les JSP

JSP - Sommaire Qu'est-ce que c'est ? Création de contenu statique Création de contenu dynamique Unified Expression Language Objets implicites Composants JavaBean

JSP -Qu'est-ce que c'est ? abstraction de la classe HttpServlet passage d'un mode programmatif vers un mode déclaratif XML !

JSP -Qu'est-ce que c'est ? point de vue conteneur : JSP = Servlet au premier appel, un document JSP : est parsé comme un document XML transformé en langage Servlet compilé en .class chargé par le conteneur (cycle de vie identique)

JSP -Création de contenu statique en JSP, pas besoin de récupérer le flux de sortie pour écrire dedans le contenu statique est tout ce qui n'est pas JSP et automatiquement restitué vers le client mélange possible de syntaxe XHTML et JSP !

JSP -Création de contenu statique par défaut, le langage HTML est considéré dans le cas d'un autre langage intégré, il faut déclarer son type : <%@ page contentType="text/vnd.wap.wml"%>

JSP -Création de contenu dynamique comme les servlets, le contenu dynamique est généré : soit à partir de l'utilisation du langage Java composants JavaBean objets implicites

JSP -Unified Expression Language c'est un sous-langage de JSP qui permet d'accéder rapidement à des données association en notation pointée : d'un objet représentant une visibilité un composant à accéder une propriété à lire

JSP -Unified Expression Language exemple : sessionScope.cart.numberOfItems sessionScope est un objet implicite représentant la session cart est un objet stocké dans la session numberOfItems est une propriété de cart

JSP -Unified Expression Language - Evaluation intégration de la syntaxe EL dans un document JSP <element value="${sessionScope.cart.total}"/> ${sessionScope.cart.total} est converti, évalué et le résultat est transmis au « gestionnaire de tags »

JSP -Unified Expression Language - Evaluation ${variable} le conteneur recherche l'objet correspondant : page request session application

JSP -Unified Expression Language – référencer des propriétés notation avec [] ou . ${customer.name} = ${customer[''name'']} deux méthodes différentes pour accéder à une même propriété name les combinaisons sont possibles ${customer.address["street"]}

JSP -Unified Expression Language – référencer des propriétés accéder à une propriété : une classe Java correspondant à l'objet doit exister une méthode correspondante à la propriété doit exister sous la forme : [get|set]XXX

JSP -Objets implicites beaucoup d'objets sont directement accessibles écriture allégée

JSP -Objets implicites servletContext session request response

JSP -Objets implicites param : association d'une valeur à un paramètre d'une requête paramValues : association nom/valeur de paramètres associés à la requête cookie : association d'un cookie à son nom

JSP -Objets implicites Ces objets sont des découpages de la session selon des durées de vie différentes : pageScope : document requestScope : requête sessionScope : session applicationScope : application

JSP -Exemples ${1 > (4/2)} false ${4.0 >= 3} true ${(10*10) ne 100} false ${'a' < 'b'} true ${'hip' gt 'hit'} false ${4 > 3} true ${1.2E4 + 1.4} 12001.4 ${3 div 4} 0.75 ${10 mod 4} 2 ${!empty param.Add} True if the request parameter named Add is null or an empty string ${pageContext.request.contextPath}The context path

JSP -Exemples ${sessionScope.cart.numberOfItems} The value of the numberOfItems property of the session-scoped attribute named cart ${param['mycom.productId']} The value of the request parameter named mycom.productId ${header["host"]} The host ${departments[deptName]} The value of the entry named deptName in the departments map

JSP -Composants JavaBean classes Java réutilisables par différentes applications web (contextes) syntaxe particulière pour être reconnue par le conteneur les JB sont bien intégrés dans la syntaxe JSP