Web Tier : déploiement de servlets



Documents pareils
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.

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

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

JavaServer Pages (JSP)

Le développement d applications Web

Architecture Orientée Service, JSON et API REST

Utilisation de Jakarta Tomcat

Java pour le Web. Cours Java - F. Michel

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

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

Application Web et J2EE

Groupe Eyrolles, 2005, ISBN :

Mise en œuvre des serveurs d application

Compte Rendu d intégration d application

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

Le développement d applications Web. François Charoy Pascal Molli Pascal Urso

Applications et Services WEB: Architecture REST

4. SERVICES WEB REST 46

Projet Java EE Approfondi

TP1 : Initiation à Java et Eclipse

Création d une application JEE

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

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Alfstore workflow framework Spécification technique

Les architectures 3-tiers Partie I : les applications WEB

Traitement des données de formulaires. Accès aux BD avec JDBC Servlets - M. Baron - Page

Bases Java - Eclipse / Netbeans

Introduction aux «Services Web»

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

Cedric Dumoulin (C) The Java EE 7 Tutorial

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

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

JOnAS Day 5.1. Outils de développements

Jahia CMS ET Portal Version 5.0

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Cours en ligne Développement Java pour le web

A. Architecture du serveur Tomcat 6

Tutoriel d installation de Hibernate avec Eclipse

La base de données XML exist. A. Belaïd

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

2 Chapitre 1 Introduction

Java Naming and Directory Interface

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

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

Application web de gestion de comptes en banques

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP1. Outils Java Eléments de correction

Introduction à Java. Philippe Genoud.

Refonte front-office / back-office - Architecture & Conception -

Java Aspect Components (JAC)

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Etude et développement d un moteur de recherche

Architectures Web Services RESTful

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

Développement Logiciel

Documentation CAS à destination des éditeurs

Datalift. + + Architecture Modularité Déploiements. d j = 09/04/2015 Laurent BIHANIC

Création d un service web avec NetBeans 5.5 et SJAS 9

Cloud. Définition? 08/11/2012. James Urquhart The Wisdom of Clouds

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

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

Construire des plug-ins pour SAS Management Console SAS 9.1

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

RMI le langage Java XII-1 JMF

Aspects techniques : guide d interfaçage SSO

Architectures client/serveur

Java DataBaseConnectivity

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

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

Formation en Logiciels Libres. Fiche d inscription

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

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Méta-annuaire LDAP-NIS-Active Directory

Livre Blanc WebSphere Transcoding Publisher

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Le Modèle de Sécurité dans JAVA

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

Grenoble INP Genie Industriel G-SCOP Université Joseph Fourier CNRS. Stages d excellence L2 Mathématiques Informatiques

Etude de cas : PGE JEE V2

TP1 : Initiation à Java et Eclipse

Best Practices : Utilisation des APIs de Lotus Web Content Management

Présentation du cours. Sécurité dans Java EE. Plan (1/2) Plan (2/2) Généralités sur la sécurité

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Projet gestion d'objets dupliqués

Module BD et sites WEB

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Remote Method Invocation (RMI)

Composants Logiciels. Le modèle de composant de CORBA. Plan

Introduction à. Oracle Application Express

Transcription:

Web Tier : déploiement de servlets 1 / 35

Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation des cookies et l objet HttpSession 2 / 35

Applications java web composants web la plate-forme java 2 fournit en standard les éléments de base permettant la réalisation de pages web dynamiques. Ces composants sont soit des Java servlets, des JSP pages, ou des web services. 4 / 35

Principe Applications java web 1 Le client envoie une requête HTTP au web server. 2 Un web server qui implémente la technologie JEE (Servlets et JSP) convertit la requête dans un objet HTTPServletRequest. 3 Cet objet est délivré à un web component, qui peut interagir avec un JavaBeans component ou une database pour générer un contenu dynamique. 4 Le web component peut ensuite générer un objet HTTPServletResponse ou passer la requête à un autre web component. 5 Quoi qu il en soit, un web component finira par générer un objet HTTPServletResponse. 6 Cet objet sera converti par le web server pour créer une réponse HTTP qui sera transmise au client. 5 / 35

Applications java web Principe 6 / 35

Servlets et JSP en bref Servlets Programmes java générant dynamiquement des pages web en traitant la requête et en construisant la réponse http. (programmation «service orienté») JavaServer Pages JSP document texte qui s exécute comme une servlet, mais permet une approche plus naturelle pour créer du contenu statique. (pour une programmation plus adaptée pour la génération de fichiers à base de tags (HTML, Scalable Vector Graphics (SVG), Wireless Markup Language (WML), XML,...) 7 / 35

Technologie java web 8 / 35

Cycle de vie d une application java web Cycle de vie d une application java web 1 Développer le code du composant web 2 Développer le web application deployment descriptor. 3 Compiler le composant web et les classes annexes qu il utilise. 4 Optionellement, packager l application dans une unité déployable. 5 Déployer l application dans un conteneur web. 6 Tester l URL qui référence l application web. 9 / 35

Une Servlet hérite de javax.servlet.http.httpservlet HttpServlet est une classe abstraite définissant : doget : pour les HTTP GET requests dopost, pour les HTTP POST requests doput, pour les HTTP PUT requests dodelete, pour les HTTP DELETE requests init et destroy : gestion du cycle de vie de la servlet (e.g. des ressources) getservletinfo, informations à propos de la Servlet 11 / 35

Hello.java import java. i o. IOException ; import java. i o. P r i n t W r i t e r ; import javax. s e r v l e t. ServletException ; import javax. s e r v l e t. h t t p. H t t p S e r v l e t ; import javax. s e r v l e t. h t t p. HttpServletRequest ; import javax. s e r v l e t. h t t p. HttpServletResponse ; p u b l i c class Hello extends HttpServlet { } protected void doget ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response. setcontenttype ( " t e x t / html " ) ; P r i n t W r i t e r out = response. g e t W r i t e r ( ) ; out. p r i n t l n ( " <HTML><HEAD><TITLE> Hello C l i e n t! < / TITLE> " + " </HEAD><BODY> Hello C l i e n t! < /BODY> </HTML> " ) ; out. close ( ) ; } 12 / 35

Hello dans le détail : Hello.java : import nécessaires / / Exception IO import java. i o. IOException ; / / pour l e f l u x d e c r i t u r e import java. i o. P r i n t W r i t e r ; / / Exception l i e e au cycle de vie de l a Servlet import javax. s e r v l e t. ServletException ; / / classes o b l i g a t o i r e s import javax. s e r v l e t. h t t p. H t t p S e r v l e t ; import javax. s e r v l e t. h t t p. HttpServletRequest ; import javax. s e r v l e t. h t t p. HttpServletResponse ; 13 / 35

Hello.java : héritage et méthode doget / / La s e r v l e t h e r i t e de l a classe H t t p S e r v l e t p u b l i c class Hello extends HttpServlet { / / Cette Servlet peut etre appele par une requete HTTP GET protected void doget ( HttpServletRequest request, / / c o n t i e n t l e s i n f o s de l a requete HttpServletResponse response ) / / c o n t i e n t l a reponse a c o n s t r u i r e throws ServletException, IOException { / / exceptions 14 / 35

Hello dans le détail Avant toute chose : spécification du type de la réponse response. setcontenttype ( " t e x t / html " ) ; Récupération du flux d écriture P r i n t W r i t e r out = response. g e t W r i t e r ( ) ; Écriture de la réponse html out. p r i n t l n ( " <HTML><HEAD><TITLE> Hello C l i e n t! < / TITLE> " + " </HEAD><BODY> Hello C l i e n t! < /BODY> </HTML> " ) ; / / o p t i o n n e l mais u t i l e s i l y a v a i t des t r a i t e m e n t a d d i t i o n n e l s out. close ( ) ; 15 / 35

Déploiement de fichiers html simples Avec Eclipse Créer un nouveau projet de type de type "dynamic web project". Créer un nouveau fichier html (contenu indiférent) dans le répertoire WebContent : c est lui qui contient les pages html statiques et le JSP. Déployer le fichier html sur un serveur JEE avec Eclipse (run on server). 17 / 35

Déploiement d une première servlet Dans le même projet Créer une nouvelle Servlet (First.java) : elle affichera une page simple avec une image. Utiliser les fichiers suivants : First.java duke.waving.gif Déployer la servlet sur un serveur JEE. Modifier la place de la servlet sur le serveur en modifiant le web application deployment descriptor et tester. 18 / 35

Déploiement d une servlet utilisant des fichiers classes annexes Dans votre projet 1. Rajouter les classes suivantes dans votre projet. 2. Déployer la servlet correspondante sur un serveur JEE avec Eclipse. 3. Déployer la servlet correspondante sur le serveur à l aide d un fichier war. code source TimePage.java GiveMeTime.java 19 / 35

Mise en place du web module Structure d un web module 20 / 35

Mise en place d un web module Structure d un web module web.xml : The web application deployment descriptor Tag library descriptor files classes : un répertoire contenant les classes utilisées côté serveur : servlets, classes annexes, composants JavaBeans. tags : Un répertoire contenant des fichiers tag : des implémentations des librairies de tag. lib : Un répertoire contenant des fichiers JAR nécessaires aux classes côté serveur. Si le module web ne contient que des pages statiques ou des jsp : Alors l application deployment descriptor n est pas obligatoire (web-xml) 21 / 35

Déploiement d un web module première solution : tel quel Copier la structure du répertoire du module web tel quel sur le serveur deuxième solution : sous forme d un fichier archive Créer une archive web, un fichier WAR, à déployer sur le serveur. Pour que cela soit possible le fichier doit contenir un runtime deployment descriptor : sun-web.xml 22 / 35

runtime deployment descriptor Ce fichier xml décrit des informations sur le module (notamment le context root : racine de l application web par rapport à l adresse http du serveur). sun-web.xml 23 / 35

Déploiement d un module web sur un serveur Plusieurs solutions : Mettre le fichier war dans le répertoire domain-dir/autodeploy/ du serveur. Utiliser la console d administration (asadmin graphique) du serveur port 4848. En utilisant un ide. 24 / 35

Exemple : administration d un serveur avec GlassFish v2.0 Guide d administration du serveur sun Sun Java System Application Server 9.1 Administration Guide 25 / 35

Servlets mapping Dans le fichier web.xml (pour un web module version <= 2.5) (le web application deployment descriptor) 26 / 35

Servlets mapping Directement dans le code de la servlet grâce à une annotation (pour un web module version 3) @WebServlet ( " / h e l l o " ) p u b l i c class HelloWorld extends HttpServlet { protected void doget ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {... response. setcontenttype ( " t e x t / html " ) ; P r i n t W r i t e r out = response. g e t W r i t e r ( ) ; } } out. close ( ) ; 27 / 35

Paramètres contenus dans une url La méthode getparameter de l objet HttpServletRequest Il permet de récupérer la valeur d un paramètre contenu dans une url. par dans exemple : http ://localhost :8080/hello?username=toto&firstName=bob obtenu avec un formulaire de type get String username = request.getparameter("username") ; 29 / 35

L objet RequestDispatcher javax.servlet.requestdispatcher Il permet d utiliser d autres servlets pour la construction de la réponse. sur le principe include : une portion de la réponse ou forward :une autre servlet s occupe de la réponse Récupération de l objet en fonction de l url souhaitée RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher("/response") ; include ou forward. Attention : l url de la page ne change pas dispatcher.include(request, response) ; dispatcher.forward(request, response) ; 30 / 35

Redirection d une URL HttpServletResponse.sendRedirect(String) Permet d envoyer au navigateur une réponse contenant une redirection. Le paramètre correspond : soit à une url relative à la requête si il ne commence pas par un / soit à une url relative au context root si il commence par un / Pour garder l ID de la session, il faut utiliser les méthodes suivantes : HttpServletRequest.getContextPath() pour encoderedirecturl Permet de récupérer la valeur du context root e.g. String contextpath = request.getcontextpath() ; HttpServletResponse.encodeRedirectURL(String) String newurl = response.encoderedirecturl(contextpath+"/new") ; response.sendredirect(newurl) ; 31 / 35

Les cookies Utilisation des cookies L envoi d un cookie vers le navigateur du client se fait grâce à la méthode addcookie() de l objet HttpServletResponse : void AddCookie(Cookie cookie) Il est nécessaire de créer le cookie avant tout envoie de données : Cookie MonCookie = new Cookie("nom", "valeur") ; Pour récupérer les cookies provenant de la requête du client, il suffit d utiliser la méthode getcookies() de l objet HttpServletRequest : Cookie[] getcookies() La durée de vie d un cookie est réglable ; par défaut un cookie disparaît à la fermeture du navigateur, mais on peut le rendre persistant : int getmaxage() : Retourne la durée de validité du cookie (en secondes) void setmaxage(int duree) : Définit la durée de validité du cookie (en secondes) 33 / 35

L objet javax.servlet.http.httpsession Principe Il permet de stocker des données côté serveur pendant une durée déterminée : API JEE Il peut être créé à partir d un objet HttpServletRequest en utilisant la méthode getsession (cf. API) Voici des exemples de code basé sur ce principe : BookStoreServlet.java ShoppingCart.java 34 / 35

Bibliographie Références Ce cours reprend largement le tutoriel JEE proposé par Sun : JEE tutoriel 35 / 35