1 / 48 10 / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB ARCHITECTURE WEB – COURS III

Slides:



Advertisements
Présentations similaires
Serveur d’applications JEE
Advertisements

La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Architecture. Architecture Enjeux Les Enjeux Trouver une solution e-Business Accessible à partir d’un navigateur Web Accédant au système via un Portail.
Servlet JSP & © Philippe Poulard.
Exposé de Système - Informatique et Réseau
Programmation Web Les JSP.
Les technologies XML Cours 3 : Les APIS XML Janvier Version 1.0 -
Cours 5.3 : XML et les architectures N-tiers – Tier Présentation
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
Les Bases de données et le Web

UV JSP JSP : Java Server Page
UV Servlets Les Servlets
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
Common Gateway Interface
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
CGI, Servlet. Script CGI, Servlet Motivation Exécution dun traitement coté serveur web Traitement de formulaire Génération de pages html à la volée Ex.
Connexion Web et Bases de Données : Les SERVLETS
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Struts 1 & 2 Tlohi ibtissam Tabit boutaina Ilias bouras
Applications Internet
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
SERVLETS PRESENTATION
Développement Web en J2EE (Servlet & JSP)
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.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
JSTL JSP Standard Tag Library
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
Servlets.
JSP (Java Server Pages)
Servlets. 2 H. Fauconnier M2-Internet Contenu dynamique Perl/cgi indépendant de la plateforme Extensions du serveur exemple ASP M2-Internet 3 H. Fauconnier.
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Michel Coletta - Journées PATTERNS Avril Grenoble1 STRUTS Introduction Technologies Java Architecture Développement Enseigner quoi ?
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.
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Initiation au web dynamique - TP
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Animateur : Med HAIJOUBI
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
Utilisation avancée.
Marc Le BihanStruts 1.x1 Marc Le Bihan. Struts 1.x2 Plan I)Développement web par Servlets et JSP. II)Prise en charge de Struts. III)Principe de fonctionnement.
PHP & My SQL.
Les servlets Java Les bases de la génération dynamique HTML en Java Sébastien Limet etGérard Rozsavolgyi Licence Professionnelle
Module I-C3 : Applications Web IUT R&T 2e année
Chapitre 2 Développement Web avec les technologies JSP/Servlets
PHP 5° PARTIE : LES COOKIES
UV J2EE Module Java Expert
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Tutorat en bio-informatique
Les sockets.
Conférence Technique Java 2 Frédéric Jacquet. Au programme  Présenter les différents outils  Découverte - Java coté serveur  Appréhender l ’existant.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Struts.
 Formulaires HTML : traiter les entrées utilisateur
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Initiation au JavaScript
M2 – MIAGE/SID Servlet et session M2 – MIAGE/SID
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Serveurs Web à contenu dynamique Emmanuel Cecchet INRIA Rhône-Alpes, Projet Sardes Rice University, Systems lab
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.
Transcription de la présentation:

1 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB ARCHITECTURE WEB – COURS III ( )

2 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB OBJECTIFS Introduction à un langage objet pour le Web Montrer les avantages de l’objet appliqué au Web Serveurs d’applications

3 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB PLAN Java et le Web Les Servlets Les JSP

4 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Java et le Web –Applets, Servlets, JSP –Apports de Java pour le Web –Les serveurs de servlets Java Les Servlets Les JSP

5 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Java et le Web Applet Java –« Petite Application » Java compilée Téléchargée à partir d’un serveur Web Exécution sécurisée par la JVM du client Web Servlets –Équivalent du CGI pour Java avec des extensions –Application Java compilée Réside sur le serveur Exécution par la JVM du serveur Java Server Pages (JSP) –Langage de script

6 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Java et le Web (2) Quel est l’apport de Java pour le web? –Langage de haut niveau (OO) –Un ensemble de classes/packages dans l ’API HTTP Servlet/Jsp De l’objet dans le web… –Encapsulation du protocole –Objets request, response Accesseurs sur des attributs d’objets plutôt que sur des chaînes de caractères –Gestion plus fine et plus simple des fonctionnalités Authentification, session...

7 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Servlet2 Servlet1 Java et le Web (3) HTTP Client WebServeur Web Servlet container

8 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les serveurs de servlet Tomcat, Jakarta Project (gratuit) –Open Source –Respecte toujours les dernières spécifications des normes WebSphere Application Server ($795 à $6000) BEA Weblogic Application Server ( $4000) –Écrit entièrement en Java Allaire Jrun Web Server –Gratuit pour une utilisation non commerciale iPlanet Web Server Entreprise Edition ( $1495/processeur ) –Netscape/Sun –Une des meilleures implantations d’un serveur de Servlet

9 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Le serveur applicatif Tomcat Jakarta ( –Ensemble de projets Open Source autour d’Apache et Java Librairies, outils, Api (Ant, Log4j, Taglibs, …) Frameworks, moteurs (Struts, Turbine, cactus, …) Serveurs d’applications (Tomcat, Jetspeed, James, …) Respect des normes du W3C –Tomcat 4.x Java Servlet 2.2 Java Server Page 1.2

10 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les Servlets Java et le Web Les Servlets –Rappel sur le CGI –Introduction aux Servlets –Structure et exemples –API –Gestion des sessions (Session Tracking) Les JSP

11 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Rappel sur les formulaires et CGI Client WebServeur Web Script CGI 1- Requête 2- Envoi 3- Validation 4- Envoi vers CGI 5- Expédition sortie 6- Envoi sortie Chargement du formulaire Traitement des données Réception sortie (HTML) Complètement puis HTML/HTTPCGI

12 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Exemple de CGI Affiche les variables d’environnement #!/bin/bash # Affiche les variables d’environnement # #En-tête HTTP echo “Content-type: text/html “ echo “” #Corps HTTP echo " " echo " Variables CGI " echo " " # #La commande set affiche les variables d’environnement # set # #Fermeture des balises ouvertes echo " "

13 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les Servlets Modèle objet des servlets Servlet1 Objet RequestObjet Response Objet Session setBufferSize setHeader setRedirect getParameter getAttribute getHeaders getCookies getAttribute

14 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les Servlets (2) Parallèle CGI / servlet –Procédurale (C, script shell, perl, …) / OO Avantages des servlets –Efficacité : CGI : 1 utilisateur / 1 processus Servlet –Initialisation = JVM –Processus légers (thread) Système // objet –Convivialité Pas de nouveau langage (!) Langage OO, haut niveau

15 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les Servlets (3) –Puissances Fonctionnalités dans l’API –HTTP est invisible pour le programmeur (protocole de transport) –Facilités de l’API Java (JDBC, caching, tracking, …) –Portabilités (API standard) Code indépendant du système Code indépendant du serveur d’applications Une servlet est du bytecode Java (.class) –Elle doit être compilée! (javac)

16 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les Servlets - structures MaServlet.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MaServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Objet "request" permet de lire l’en-tête HTTP (ex: cookies, …) // ainsi que les données d’un formulaire HTML // Objet "response" permet de spécifier la réponse (en-tête HTTP) comme // le type des données en retour (Cf. content-type) PrintWriter out = response.getWriter(); // objet out permet de renvoyer le contenu HTML au navigateur client }

17 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les Servlets - exemples HelloWWW.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWWW extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n" + " \n" + " Hello WWW \n" + " \n" + " Hello WWW \n" + " "); }

18 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les Servlets – exemples (2) UtilitaireServlet.java package monPackage; public class UtilitaireServlet { public static final String DOCTYPE = " "; public static String headWithTitle(String title) { return(DOCTYPE + "\n" + " \n" + " " + title + " \n"); } }

19 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les Servlets – exemples (3) HelloWWW2.java package monPackage; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWWW2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(UtilitaireServlet.headWithTitle("Hello WWW") + " \n" + " Hello WWW \n" + " "); }

20 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB API javax.servlet.* Javax.servlet.HttpServlet –Méthode d’initialisation Init() –Traitement et réponse à une requête HTTP GET doGet(HttpServletRequest request, HttpServletResponse response) –Traitement et réponse à une requête HTTP POST doPost(HttpServletRequest request, HttpServletResponse response) –Traitement et réponse à une requête HTTP GET ou POST service(HttpServletRequest request, HttpServletResponse response)

21 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB API javax.servlet.*(2) Objets utiles et fonctionnement de base –javax.servlet.http.HttpServletRequest Gestion de la requête HTTP –Lire des données d’un formulaire / URL –Lire l’entête HTTP Méthodes sur Header –Enumeration getHeaderNames() Méthodes sur données d’un formulaire et des cookies –Enumeration getParameterNames() –String getParameter(String nomParam) –String[] getParameterValues(String nomParam) –Cookie[] getCookies() Variables CGI –String getRemoteHost() –String getMethod() –String getQueryString() –Enumeration getHeaderNames()

22 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB API javax.servlet.*(3) –javax.servlet.http.HttpServletResponse Méthodes sur le code de retour (status code) –Les codes de retour sont des attributs static –Ex : response.sendError (int code, String message) Méthodes sur Header –setContentType(String type) –setContentLength() –addCookie(Cookie cookie) –sendRedirect(String location) –SetHeader(String name, String value) Méthodes sur les données (corps HTTP) –PrintWriter getWriter()

23 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Formulaires et Servlets Lecture de trois paramètres package monPackage; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class TroisParams extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = « Lecture de trois paramètres d’un formualire"; out.println(ServletUtilities.headWithTitle(title) + ….

24 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Formulaires et Servlets (2) Lecture de trois paramètres (suite) " \n" + " " + title + " \n" + " \n" + " param1: " + request.getParameter("param1") + "\n" + " param2: " + request.getParameter("param2") + "\n" + " param3: " + request.getParameter("param3") + "\n" + " \n" + " "); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }

25 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB API javax.servlet.*(4) –javax.servlet.http.Cookie Constructeur –Cookie Cookie(String name, String value) Accesseurs sur attributs d’un Cookie –String getName() –String getValue() –setValue(String newValue) Exemple d’envoie d’un cookie au client Cookie userCookie = new Cookie(" user ", " uid1234" ); Response.addCookie(userCookie);

26 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Session Tracking Le protocole HTTP bien que persistant est un protocole sans état (respect des propriétés des transactions pour le télécommerce) Solutions –Problème: bien que simple dans leur implantation, mécanisme complexe sont nécessaires Cookie (solution la plus répandue) URL rewriting Hidden form fields – Session tracking API (HttpSession API) –Offre une interface de haut niveau pour gérer ces solutions

27 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Session Tracking (2) –Créer une session HttpSession session = request.getSession(true) –Obtenir des informations sur une session –boolean isNew() Obtenir l’identifiant d’une session –String getId() Obtenir la date de création d’une session –Long getCreationTime() … –Associer des informations à une session Associer un objet à une session: –setAttribute(String name, Object objet) Retourne un objet à partir d’une clé: –Object getValue(String name)

28 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Session Tracking - exemple Gestion d’un caddy HttpSession session = request.getSession(true); //Ici on écrase la précédente valeur de la page de référence session.setAttribute("referringPage", (String)request.getHeader("Referer")); Caddy articles = (Caddy)session.getAttribute("articles"); if (articles == null) { articles = new Caddy(...); } String itemID = request.getParameter("itemID"); articles.addArticles(Catalog.getArticles(itemID)); // On fait un setAttribute pour sauvegarder le caddy au cas où // c’est la création du caddy. Ici, on met maj le Caddy session.setAttribute("articles", (Caddy) articles);

29 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les JSP Java et le Web Les Servlets Les JSP

30 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les JSP Parallèle avec les langage de scripts PHP ou ASP –Langage de script –Au sein du code HTML, on insert du code java qui sera compilé (lors du premier accès à une page JSP) –Exécutées sur le serveur –Extensible via des librairies de tag existantes ou définis par le développeur Avantages par rapport au Servlet et CGI –Une page dynamique générée par un CGI ou une servlet possède toujours une partie statique –Les JSP permettent de bien séparer les deux

31 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les JSP - exemples Mapage.jsp Bienvenue au cours d’architecture Web Bienvenue Bonjour, Pour accéder au serveur Tomcat, cliquer ici.

32 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les JSP (2) Vie d’une JSP –Le serveur d’applications (tomcat) transforme le fichier.jsp en source java –Le code source correspond au code d’une servlet Le HTML est transformé en –out.print(« mon code HTML ») Le code java est transformé et inclus dans le corps de la méthode servlet.service() –Le fichier java est ensuite compilé en.class la servlet est prête à être exécutée Importance du serveur d’applications dans la phase de génération du code (respect de l’API et de ses spécifications)

33 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les JSP – exemple de code généré Mapage.java public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { printWriter out = response.getWriter(); out.println(" \n"); … out.println(Utils.getUserNameFromCookie(request));... out.println("Pour accéder au serveur Tomcat, cliquer"); out.println(" ici. "); … out.println(" "); out.close(); }

34 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les JSP (3) Balises –JSP Expressions out.print(expression java) –JSP Scriptlets Code java inclus dans le corps de la méthode service() –JSP Déclarations Déclaration d’attributs ou de méthodes de la classe servlet générée Ex : redéfinition de la méthode init()

35 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les JSP (4) –JSP Directives JSP page directive –Ensemble de raccourcis vers des attributs du protocoles HTTP et du contenu HTML »Content-Type »Session »isErrorPage JSP include directive –Inclus un fichier dans la jsp juste avant la génération du code java –ex : header, tailer, menu, … –Actions jsp:include –Inclus une page(URL) au moment ou la servlet répond à une requête –Inclusion dynamique de contenu »choix dynamique de la page à inclure : l ’attribut page peut être une expression java »si la page est une jsp, celle-ci est executée avant d ’être incluse

36 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les JSP (5) jsp:useBean, jsp:setProperty et jsp:getProperty –Instancie un objet et l’initialise en dehors d’une JSP Scriptlet jsp:forward –Équivaut setLocation() jsp:plugin –Description XML d’un plugin dans une page HTML Variables prédéfinies –request, response, out, session,.. –Accesseurs sur des attributs des objets Servlet –session Les arguments de la méthode service –request –response

37 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Les JSP (6) Limites des JSP –Propreté du code : mélange code applicatif et code de présentation Ex : connexion JDBC, mise en page, … Les JSP doivent essentiellement (exclusivement) être utilisées pour la présentation (modèle MVC) Solution : JSP Action et taglib qui permettent de décrire en XML du code –une JSP est son propre contrôleur Pas de génération de code dynamique Problèmes rencontrés lors d’inclusions multiples

38 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB JSP Expressions Variables ou constantes intégrées dans la page résultat Code JSP Code Java public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException {... out.print( "tralala" ); … }

39 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB JSP Scriptlets Bloc de code Java intégrés dans la JSP <% String s = "tralala"; out.print(s); %> Code JSP Code Java public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException {... String s = "tralala"; out.print(s);... }

40 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB JSP Declarations Comme en Java <%! String s = "tralala"; public String maMethode(String s) { return "Chaine à traiter : " + s; } %> Code JSP Code Java public class test$jsp extends HttpJspBase { String s = "tralala"; public String maMethode(String s) { return "Chaine à traiter : " + s; }

41 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB JSP Page Directive Traitées lors de la compilation de la page en servlet: include ou Code JSP Code Java package org.apache.jsp; import java.util.Vector; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import org.apache.jasper.runtime.*; public class test$jsp extends HttpJspBase {...

42 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB JSP Page Directive (2) Paramètres HTTP ou Code JSP Code Java public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException {... response.setContentType("text/plain");... }

43 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB JSP Include Directive Include Code JSP Code Java public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException {... out.write("Contenu du fichier file.txt");... }

44 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB JSP useBean, setProperty, getProperty Accesseurs et modifieurs d’attributs Code JSP

45 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB JSP useBean, setProperty, getProperty (2) Code Java public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException {... test.MonBean monBean = null; boolean _jspx_specialmonBean = false; synchronized (pageContext) { monBean= (test.MonBean) pageContext.getAttribute("monBean",PageContext.PAGE_SCOPE); if ( monBean == null ) { _jspx_specialmonBean = true; try { monBean = (test.MonBean) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "test.MonBean"); } catch (ClassNotFoundException exc) { throw new InstantiationException(exc.getMessage()); } catch (Exception exc) {

46 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB JSP useBean, setProperty, getProperty (3) Code Java (suite) throw new ServletException (" Cannot create bean of class "+"test.MonBean", exc); } pageContext.setAttribute("monBean", monBean, geContext.PAGE_SCOPE); } if(_jspx_specialmonBean == true) { JspRuntimeLibrary.introspecthelper(pageContext.findAttribute("monBean"), "att1","valeur1",null,null, false); JspRuntimeLibrary.introspecthelper(pageContext.findAttribute("monBean"), "att2","valeur2",null,null, false); }... }

47 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Formulaires et JSP Lecture de deux paramètres Exemple JSP Exemple JSP <% String sn1, sn2; int param1,param2; sn1 = request.getParameter(" param1"); sn2 = request.getParameter(" param2"); param1 = Integer.parseInt(sn1); param2 = Integer.parseInt(sn2); out.println("Les paramètres sont: " + sn1 + " et " + sn2); out.println(" "); out.println("La somme est égale à: " + (param1+param2)); %>

48 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB Questions ? ? ? ? ? ? ?