Plan. Environnement Client/Serveur. Cours 7 JavaServer Pages (1) JSP. Programmation Web coté serveur



Documents pareils
Web Tier : déploiement de servlets

Le développement d applications Web

JavaServer Pages (JSP)

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation Web. Introduction

Développement des Systèmes d Information

Mise en œuvre des serveurs d application

Application Web et J2EE

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

TP1. Outils Java Eléments de correction

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Programmation Internet Cours 4

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

4. SERVICES WEB REST 46

Initiation à JAVA et à la programmation objet.

1. Installation d'un serveur d'application JBoss:

Formation : WEbMaster

Architecture Orientée Service, JSON et API REST

Module BD et sites WEB

RMI le langage Java XII-1 JMF

Application web de gestion de comptes en banques

Projet Java EE Approfondi

Authentification avec CAS sous PRONOTE.net Version du lundi 19 septembre 2011

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

Architectures Web Services RESTful

Programmation Orientée Objet

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Devenez un véritable développeur web en 3 mois!

A. Architecture du serveur Tomcat 6

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Documentation CAS à destination des éditeurs

Aspects techniques : guide d interfaçage SSO

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Compte Rendu d intégration d application

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Hébergement de site web Damien Nouvel

(structure des entêtes)

DOM - Document Object Model

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

ACTIVITÉ DE PROGRAMMATION

Remote Method Invocation (RMI)

Applications et Services WEB: Architecture REST

VM Card. Manuel des paramètres des fonctions étendues pour le Web. Manuel utilisateur

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

L3 informatique TP n o 2 : Les applications réseau

Formation en Logiciels Libres. Fiche d inscription

Environnements de développement (intégrés)

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Java pour le Web. Cours Java - F. Michel

Architectures web/bases de données

les techniques d'extraction, les formulaires et intégration dans un site WEB

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Vulnérabilités et sécurisation des applications Web

LemonLDAP::NG / SAML2. Xavier GUIMARD (Gendarmerie Nationale) Clément OUDOT (Groupe LINAGORA)

Authentification et contrôle d'accès dans les applications web

Bases de données et Interfaçage Web

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Introduction aux «Services Web»

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Démonstration de la mise en cache via HTML 5 sur iphone

Point sur les solutions de développement d apps pour les périphériques mobiles

Pratique et administration des systèmes

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Architectures en couches pour applications web Rappel : Architecture en couches

Formation Webmaster : Création de site Web Initiation + Approfondissement

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Sessions en ligne - QuestionPoint

TP1 : Initiation à Java et Eclipse

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

< Atelier 1 /> Démarrer une application web

Introduction à. Oracle Application Express

Création de formulaires interactifs

contact@nqicorp.com - Web :

Le service FTP. M.BOUABID, Page 1 sur 5

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

TP JAVASCRIPT OMI4 TP5 SRC

Utilisation de Jakarta Tomcat

PHP 5.4 Développez un site web dynamique et interactif

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

Programmation Objet Java Correction

Présentation du Framework BootstrapTwitter

1. La plate-forme LAMP

Transcription:

Plan Environnement Client/Serveur Cours 7 JavaServer Pages (1) kn@lri.fr 7.1 Principe 7.2 Rappels HTTP 7.3 Le serveur web Tomcat Programmation Web coté serveur JSP 2/28 (rappel) génération de pages-web dynamiques (i.e. dont le contenu est calculé en fonction de la requête HTTP). Plusieurs choix de langage côté serveur. PHP (déploiement de site très simple, langage merdique particulier) Python, Ruby (manque de standardisation, plusieurs framework concurrents, problèmes de performances) ASP.NET (microsoft) Java/JSP (langage raisonnable, déploiement complexe) JSP (JavaServer Pages) est un framework permettant de créer des pages Web dynamiques en Java. Il fait partie de la suite Java EE (Entreprise Edition). Rappel : Java Card (Java pour cartes de crédit, très peu de choses, pas de GC) Java ME (Micro Edition, pour les périphériques embarqués, mobiles, etc.) Java SE (Standard Edition, java «normal») Java EE (Entreprise Edition, SE + packages pour JSP, et autres) 3/28 4/28

Architecture Nécessite un serveur Web particulier. Le standard est Apache Tomcat. Le programmeur écrit des fichiers.jsp, contenant du HTML + du java dans des balises spéciales (Le programmeur déploie les fichiers sur le serveur Tomcat) L'utilisateur navigue vers une page foo.jsp Le serveur Tomcat génère fooservlet.class La classe est chargée dans la JVM java et (sa métode principale) est exécutée, produisant une page HTML La page HTML est envoyée au navigateur Exemple <%@ page contenttype="text/html; charset=utf-8" %> <!DOCTYPE html> <html> <head> <title>test JSP</title> <meta charset="utf-8"/> </head> <body> Page generated on <% java.util.date d = new java.util.date(); out.println(d.tostring()); %> </body> </html> balises spéciales JSP 5/28 Exemple complet 6/28 JSP introduit 4 balises spéciales qui sont interprétée par le serveur Tomcat. Balise de configuration : <%@ %> (options HTML, import de packages, ) Balise de déclarations : <%! %> (déclarer des attributs et des méthodes) Balises d'instructions : <% %> (permet de mettre une suite d'instructions) Balises d'expressions : <%= %> (permet de mettre une expression dont le résultat est converti en String) 7/28 <%@ page contenttype="text/html; charset=utf-8" %> <%@ page import="java.util.date" %> <!DOCTYPE html> <html> <head><title>test JSP</title> <meta charset="utf-8"/> </head> <%! Date madate; Date mamethode() { return new Date(); } %> <body> <% madate = mamethode(); %> Page created on <%= madate %> </body> </html> 8/28

Pages JSP Plan Le code d'une page JSP est transformé en classe Java et compilé par le serveur Web (tomcat). La classe générée hérite de HttpServlet. On ne doit pas écrire de constructeur dans une page JSP, ni déclarer la classe courante avec class Toto {. Le compilateur JSP le fait automatiquement. Il est inutile de mettre une méthode public static void main (elle ne sera jamais appellée). Il n'est pas recommandé de déclarer des variables static dans un bloc de déclaration d'une page JSP. Par définition, une même page peut être appellée par plusieurs clients (navigateurs) différents de manière concurrent, l'accès aux ressources partagées doit être bien contrôlé. 7.1 Principe 7.2 Rappels HTTP 7.3 Le serveur web Tomcat Caractéristiques du protocole HTTP 9/28 Format des messages HTTP 10/28 Sans connexion permanente: Le client se connecte au serveur, envoie sa requête, se déconnecte Le serveur se connecte au client, envoie sa réponse, se déconnecte Indépendant du contenu : permet d'envoyer des documents (hyper) texte, du son, des images, Sans état: chaque paire requête/réponse est indépendante (le serveur ne maintient pas d'information sur le client entre les requêtes) Protocole en mode texte Les messages ont la forme suivante Ligne initiale CR LF zéro ou plusieurs lignes d'option CR LF CR LF Corp du message (document envoyé, paramètres de la requête, ) Requête la première ligne contient un nom de méthode (GET, POST, HEAD, ), le paramètre de la méthode et la version du protocole Réponse la version du protocole, le code de la réponse (200, 404, 403, ) et un message informatif 11/28 12/28

Objets implicites Le code placé dans les balises spéciales a accès à certains objets automatiquement déclarés (JSP implicit objects). Parmi les principaux : Classe JspWriter Fonctionne comme System.out (on peut donc appeler.print/.println) mais correspond a un endroit particulier de la page HTML JspWriter out : comme System.out mais écrit dans la page Web générée. HttpSession session : représente la session HTTP courante et contient les variables de session. ServletContext application : représente le contexte d'exécution de l'application JSP et permet de définir des variables d'application. HttpServletRequest request : représente la requête HTTP ayant provoqué le chargement de la page en cours. L'objet permet de récupérer les paramètres passés dans la requête HTTP (par exemple les valeurs d'un formulaire). HttpServletRespons response : correspond à l'objet qui sera envoyé au client permet de spécialiser la réponse envoyée au client (en-têtes HTTP, cookies, ). Classe HttpSession 17/28 Classe ServletContext 18/28 //Renvoie la valeur stockée sous le nom name Object getattribute(string name) //Stocke l'objet value sous le nom name void setattribute(string name, Object value) //Supprime l'association name value void removeattribute(string name) //Définit la durée (en secondes) d'inactivité d'une session void setmaxinactiveinterval(int interval) //Renvoie la durée (en secondes) d'inactivité d'une session int getmaxinactiveinterval() //Renvoie la date (en mili-secondes depuis EPOCH) de dernière utilisation long getlastaccessedtime() //Renvoie le chemin sur le système de fichier du serveur correspondant à la portion d'ur String getrealpath(string path) //Stocke l'objet donné dans l'espace global de l'application. Toutes //les pages de l'application et toutes les sessions y ont accès : void setattribute(string name, Object o) //Récupère l'objet précédemment stocké ou null si aucun objet //n'existe sous ce nom Object getattribute(string name) //Supprime l'objet stocké sous ce nom s'il en existe un void removeattribute(string name) //Détruit la session en cours void invalidate() 19/28 20/28

//Récupère la valeur des cookies: Cookie[] getcookies() Classe HttpServletRequest //Récupère les paramètres passés par un formulaire : Map<String, String[]> getparametermap() //Récupère un paramètre particulier String[] getparameter(string name) Classe HttpServletResponse //Renvoie une erreur HTTP (404 par exemple) void senderror(int code) //Ajoute un cookie au site void addcookie(cookie c) //Effectue une redirection temporaire void sendredirect(string url) //Renvoie le type de la requête (POST/GET/PUT) String getmethod() Classe Cookie 21/28 Plan 22/28 //Constructeur Cookie(String name, String value) //Expiration en secondes void setmaxage(int a) 7.1 Principe 7.2 Rappels HTTP 7.3 Le serveur web Tomcat 23/28 24/28

Architecture d'une application JSP Une application JSP est l'ensemble des classes et ressources (pages JSP, pages HTML, scripts javascripts, images, ) se trouvant sous un même répertoire. Le serveur Web tomcat utilise une JVM par application. Quelle sont les conséquences pour deux applications (tomcat) qui souhaitent communiquer? Elles doivent utiliser un système de communication sans mémoire partagée : fichiers partagés, connexion réseau, ou requête POST/GET en HTTP. Chemins par défaut Par défaut le serveur Tomcat tourne sur le port 8080 (configurable) /var/lib/tomcat/webapps/toto/ correspond à l'url http://domaine:8080/toto /var/lib/tomcat/webapps/toto/web-inf/ contient des fichiers de configuration /var/lib/tomcat/webapps/toto/web-inf/classes/ contient des fichiers.class auxiliaires On utilisera un serveur tomcat intégré dans eclipse. Il est indispensable que tout fonctionne correctement aujourd'hui, car TP noté lundi prochain! Plan 25/28 26/28 Si on n'utilise pas un projet eclipse pré-configuré, Il faut avoir le fichier jspapi.jar dans le classpath 7.1 Principe 7.2 Rappels HTTP 7.3 Le serveur web Tomcat javac -cp /chemin/vers/jsp-api.jar MaClasse.java On peut ensuite copier le.class dans WEB-INF/classes 27/28 28/28