Plan. Department of Informatics. Advanced Software Engineering J. Pasquier-Rocha Cours de Master en Informatique - SH 2003/04



Documents pareils
Web Tier : déploiement de servlets

WEB page builder and server for SCADA applications usable from a WEB navigator

Instructions Mozilla Thunderbird Page 1

Cedric Dumoulin (C) The Java EE 7 Tutorial

How to Login to Career Page

Plan. Department of Informatics

Application Form/ Formulaire de demande

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.

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Module BD et sites WEB

JavaServer Pages (JSP)

DOCUMENTATION - FRANCAIS... 2

OpenPaaS Le réseau social d'entreprise

Vanilla : Virtual Box

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

DOCUMENTATION - FRANCAIS... 2

Architecture Orientée Service, JSON et API REST

Once the installation is complete, you can delete the temporary Zip files..

SHAREPOINT PORTAL SERVER 2013

Application Web et J2EE

Java et les bases de données

Forthcoming Database

Contents Windows

Editing and managing Systems engineering processes at Snecma

UML : Unified Modeling Language

3615 SELFIE. HOW-TO / GUIDE D'UTILISATION

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Règlement sur le télémarketing et les centres d'appel. Call Centres Telemarketing Sales Regulation

English Q&A #1 Braille Services Requirement PPTC Q1. Would you like our proposal to be shipped or do you prefer an electronic submission?

calls.paris-neuroscience.fr Tutoriel pour Candidatures en ligne *** Online Applications Tutorial

Java DataBaseConnectivity

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

Tutoriel de formation SurveyMonkey

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

1.The pronouns me, te, nous, and vous are object pronouns.

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Lesson Plan Physical Descriptions. belle vieille grande petite grosse laide mignonne jolie. beau vieux grand petit gros laid mignon

AMENDMENT TO BILL 32 AMENDEMENT AU PROJET DE LOI 32

ANGULAR JS AVEC GDE GOOGLE

Principe de TrueCrypt. Créer un volume pour TrueCrypt

Les Portfolios et Moodle Petit inventaire

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Acce s aux applications informatiques Supply Chain Fournisseurs

accidents and repairs:

Introduction à JDBC. Accès aux bases de données en Java

Programming Server-Side Web Applications with Object-Oriented PHP NC Group Syllabus. Duration: 75 hours 1-2-2

The new consumables catalogue from Medisoft is now updated. Please discover this full overview of all our consumables available to you.

Le passé composé. C'est le passé! Tout ça c'est du passé! That's the past! All that's in the past!

Practice Direction. Class Proceedings

WDpStats Procédure d installation

Guide d'installation rapide TFM-560X YO.13

Get Instant Access to ebook Cest Maintenant PDF at Our Huge Library CEST MAINTENANT PDF. ==> Download: CEST MAINTENANT PDF

Academic Project. B2- Web Development. Resit Project. Version 1.0 Last update: 24/05/2013 Use: Students Author: Samuel CUELLA

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Exercices sur SQL server 2000

Compléter le formulaire «Demande de participation» et l envoyer aux bureaux de SGC* à l adresse suivante :

Configurer la supervision pour une base MS SQL Server Viadéis Services

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

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

CEST POUR MIEUX PLACER MES PDF

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

HSCS 6.4 : mieux appréhender la gestion du stockage en environnement VMware et service de fichiers HNAS Laurent Bartoletti Product Marketing Manager

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

GIGABIT PCI DESKTOP ADAPTER DGE-530T. Quick Installation Guide+ Guide d installation+

Architectures web/bases de données

MELTING POTES, LA SECTION INTERNATIONALE DU BELLASSO (Association étudiante de lʼensaparis-belleville) PRESENTE :

Contrôle d'accès Access control. Notice technique / Technical Manual

Mon Service Public - Case study and Mapping to SAML/Liberty specifications. Gaël Gourmelen - France Telecom 23/04/2007

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

DOCUMENTATION MODULE BLOCKCATEGORIESCUSTOM Module crée par Prestacrea - Version : 2.0

Module Title: French 4

MANUEL MARKETING ET SURVIE PDF

I>~I.J 4j1.bJ1UlJ ~..;W:i 1U

Comprendre l impact de l utilisation des réseaux sociaux en entreprise SYNTHESE DES RESULTATS : EUROPE ET FRANCE

Cette Leçon va remplir ces attentes spécifiques du curriculum :

Comment Créer une Base de Données Ab Initio

SCHOLARSHIP ANSTO FRENCH EMBASSY (SAFE) PROGRAM APPLICATION FORM

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

LES ACCES ODBC AVEC LE SYSTEME SAS

Dis où ces gens vont d après les images / Tell where these people are going based on the pictures.

RAPID Prenez le contrôle sur vos données

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

LOGICIEL D'ADMINISTRATION POUR E4000 & G4000 MANAGEMENT SOFTWARE FOR E4000 & G4000

Adeunis-RF Softwares. Stand-Alone configuration Manager V2. User guide version V1 FRANCAIS ENGLISH

Tammy: Something exceptional happened today. I met somebody legendary. Tex: Qui as-tu rencontré? Tex: Who did you meet?

Women s State of the Media Democracy 2012 L observatoire international des usages et interactions des médias

Formulaire d inscription (form also available in English) Mission commerciale en Floride. Coordonnées

Package Contents. System Requirements. Before You Begin

Notice Technique / Technical Manual

contact@nqicorp.com - Web :

10. Base de données et Web. OlivierCuré

Institut d Acclimatation et de Management interculturels Institute of Intercultural Management and Acclimatisation

that the child(ren) was/were in need of protection under Part III of the Child and Family Services Act, and the court made an order on

Transcription:

Plan 1. Application Servers 2. Servlets, JSP, JDBC 3. J2EE: Vue d ensemble 4. Programmation distribuée 5. Enterprise JavaBeans 6. Prise de recul critique

Servlets, JSP, JDBC 1. Introduction 2. Servlets 3. JSP 4. JDBC

2.1 Introduction Introduction Evolution des pages HTML statiques vs dynamiques (CGI, Servlet, JSP, EJB) Pages HTML statiques Pages HTML avec scripts (javascript) et applets CGI (Common Gateway Interface) (1ère génération web dynamique) / Servlets SSI (Server Side Include): ASP (Active Server Pages), JSP (JavaServer Pages) (2ème génération web dynamique) Serveurs d'applications cumulent les avantages d'un CGI et de SSI

2.1 Introduction Principe des pages statiques NAVIGATEUR WEB URL Page HTML SERVEUR WEB Nom de fichier Page HTML DISQUE DUR (stocke les pages HTML) Principe de base du Web: le serveur web ne fait que de servir des fichiers (pages HTML, images, ) stoquées localement.

2.1 Introduction Principe des pages avec scripts NAVIGATEUR WEB INTERPRETEUR ET/OU SANDBOX (JRE) URL Page HTML avec JavaScript ou Applet SERVEUR WEB Nom de fichier Page HTML avec JavaScript ou Applet DISQUE DUR (stocke les pages HTML) Les scripts et/ou les applets (qui ont été téléchargées) sont exécutés par le navigateur web, sur la machine client.

2.1 Introduction Principe des CGI / Servlets NAVIGATEUR WEB URL Page HTML SERVEUR WEB Paramètres Page HTML PROGRAMME EXTERNE (génère les pages HTML) Principe du Web dynamique des CGI: le programme externe peut être un binaire ou un script avec son interpréteur, mais le serveur Web n'a aucune maîtrise sur son fonctionnement.

2.1 Introduction Principe des SSI NAVIGATEUR WEB URL Page HTML sans code SERVEUR WEB INTERPRETEUR (transforme le code en information) Nom de fichier Page HTML avec code DISQUE DUR (stocke les pages HTML) Principe du Web dynamique des SSI: la logique applicative (sous forme de script) est traitée par un interpréteur affilié au serveur Web.

2.1 Introduction Récapitulation Client Navigateur Web requête HTTP page HTML Serveur WWW Serveur.html.jsp Servlets.gif.asp C/C++.jpg.php Perl statique interprété éxécuté

2.2 Servlets Servlets A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed via a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by Web servers. For such applications, Java Servlet technology defines HTTP-specific servlet classes.

2.2 Servlets Servlet Objet Java compilé Dérive/Hérite de javax.servlet.httpservlet Import : javax.servlet.*; javax.servlet.http.*; Tout est dans servlet.jar Doit être placé dans un répertoire particulier et se trouver dans le classpath pour la compilation. «interface» Servlet GenericServlet +service() HttpServlet +dopost() +doget()

2.2 Servlets Méthode principale Une méthode à surcharger : public void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException {...} Le but est d écrire la réponse du serveur sur la sortie: ServletOutputStream out = resp.getoutputstream(); out.println( réponse... ); «interface» Servlet GenericServlet +service() HttpServlet +dopost() +doget()

2.2 Servlets Cycle de vie d une servlet Le cycle de vie d'une servlet est assuré par le conteneur de servlet. Cette dernière doit possèder une interface déterminée par le JSDK afin de suivre le cycle de vie suivant : 1. La servlet est chargée au démarrage du serveur ou lors de la première requête puis instanciée par le serveur 2. La méthode init() est invoquée par le conteneur 3. Lors de la première requête, le conteneur crée les objets Request et Response spécifiques à la requête 4. La méthode service() est appelée à chaque requête dans une nouvelle thread. Les objets Request et Response lui sont passés en paramètre, lui permattant d échanger des informations avec le client 5. La méthode destroy() est appelée lors du déchargement de la servlet, c'est-à-dire lorsqu'elle n'est plus requise par le serveur. La servlet est alors signalée au garbage collector.

2.2 Servlets Texte ou HTML? Ecrire du texte : out.println( réponse... ); Ecrire de l HTML : Mise en place du content type AVANT d écrire quoi que ce soit dans out: resp.setcontenttype("text/html"); Ecriture de la page HTML out.println( <HTML><HEAD>...</BODY></HTML> );

2.2 Servlets Rappel: Formulaires HTML Ouverture : <FORM METHOD= GET ACTION= URL > ou <FORM METHOD= POST ACTION= URL > Champs de texte : <INPUT TYPE= text NAME= nom VALUE= valeur > Cases radio : <INPUT TYPE= radio NAME= nom VALUE= valeur1 CHECKED> <INPUT TYPE= radio NAME= nom VALUE= valeur2 > Bouton d envoi : <INPUT TYPE= submit >

2.2 Servlets Rappel: Formulaires HTML (2) Paramètres : définis par une balise <INPUT name= nom value= valeur > Chaque élément du formulaire doit possèder un nom unique. Ainsi la valeur associée à l'élément forme avec le nom de celui-ci une paire nom/valeur. Les paramètres sont envoyés à la servlet à l'aide de la méthode spécifiée (GET par défaut) après que l'utilisateur clique sur un bouton de type Submit L'ensemble des paires nom/valeur sont séparées par des ET commerciaux (le caractère "&"). Ainsi, l'envoi d'un formulaire crée une chaîne de la forme: champ1=valeur1&champ2=valeur2&champ3=valeur3 L'envoi de cette chaîne se fera différemment selon que la méthode utilisée pour l'envoi du formulaire est GET ou POST.

2.2 Servlets Rappel: Formulaires HTML (3) La méthode GET permet d'envoyer les éléments du formulaire au travers de l URL, comme ceci: http://server_name/cgi-bin/script.cgi?champ1=valeur1&champ2=valeur2... La méthode POST est une bonne alternative à la méthode GET. Cette méthode code les informations de la même façon que la méthode GET mais elle envoie les données à la suite des en-têtes HTTP, dans un champ appelé corps de la requête.

2.2 Servlets Les paramètres des servlets Les servlets peuvent automatiquement traiter ("parser") les données en provenance de formulaires grâce aux méthodes de la classe HttpServletRequest. Récupération des paramètres : String getparameter(string name); req.getparameter( age ); retourne null si pas de paramètre nom

2.2 Servlets Using a Servlet A user (1) requests some information by filling out a form containing a link to a servlet and clicking the Submit button (2). The server (3) locates the requested servlet (4). The servlet then gathers the information needed to satisfy the user's request and constructs a Web page (5) containing the information. That Web page is then displayed on the user's browser (6).

2.2 Servlets Servlet alternative Who is involved in putting together a commercial web application? graphic designers programmers managers technicians Conclusion: most of the people involved don t know how to program (nor should they need to).

2.2 Servlets Servlet alternative (2) What don t you like about servlet programming? out.println is painful. Why? If the web page generated is of any significant size, most of the code is involved in generating the output and not dealing with the logic. Java Server Pages Instead of writing code with page content embedded in it as println statements...... write pages with code embedded in it. Requires less programming skill. Increases readability.

2.3 JSP JavaServer Pages Technology JavaServer Pages (JSP) technology allows you to easily create Web content that has both static and dynamic components. JSP technology makes available all the dynamic capabilities of Java Servlet technology but provides a more natural approach to creating static content. The main features of JSP technology are A language for developing JSP pages, which are text-based documents that describe how to process a request and construct a response An expression language for accessing server-side objects Mechanisms for defining extensions to the JSP language

2.3 JSP What is a JSP page? A JSP page is a text-based document (.jsp extension) that contains two types of text: static data, which can be expressed in any textbased format, such as HTML; <BODY>Hello the date is : </BODY> and JSP elements, which construct dynamic content. <%= expression java %> <% code java %>

2.3 JSP Fonctionnement des JSP Une page utilisant les Java Server Pages est exécutée au moment de la requête par un moteur de JSP, fonctionnant généralement avec un serveur Web ou un serveur d applications. Le modèle des JSP étant dérivé de celui des servlets (en effet les JSP sont un moyen d'écrire des servlets), celle-ci est donc une classe Java dérivant de la classe HttpServlet, et utilisant les méthodes doget() et dopost() permettant de renvoyer une réponse par le protocole HTTP. Lorsqu'un utilisateur appelle une page JSP, le serveur Web appelle le moteur de JSP qui crée un code source Java à partir du script JSP, compile la classe afin de fournir un fichier compilé (d'extension.class), c'est-à-dire qu'il constitue en fait une servlet à partir du script JSP...

2.3 JSP Elements d une page JSP Une page JSP peut contenir en plus du code HTML quatre types d'éléments : des directives : informations globales relatives à la page des déclarations : permettant de déclarer des méthodes et des attributs des scriplets : du code Java qui sera traduit en code dans la méthode service() de la servlet résultante des expressions : permettant d'envoyer facilement des chaînes créées dynamiquement vers le navigateur des commentaires

2.3 JSP Directives JSP Les directives JSP sont des instructions insérées dans des tags HTML spéciaux. La syntaxe des directives JSP est la suivante : <%@ directive { attribut="valeur"} %> Les directives JSP permettent d'indiquer : les classes à inclure les classes à étendre le type du contenu de la réponse (text/html par défaut)... Exemple: <%@ page import= java.sql.* %>

2.3 JSP Déclarations JSP Une déclaration est un bloc permettant de définir des méthodes et des variables de classe à utiliser dans toute la page. La syntaxe d'une déclaration est la suivante : <%! declaration %> Exemple : <%! String Chaine = "bonjour"; public void mymethod() { // instructions; } %>

2.3 JSP Scriplets JSP Une scriptlet JSP est un bloc de code Java (qui doit naturellement être valide) est compris entre les balises suivantes : <% /* scriptlet */ %> La scriptlet a implicitement accès à de nombreux objets. Les objets les plus utilisés sont request pour connaître les détails de la requête HTTP (cf. formulaires) et l'objet out permettant d'envoyer des données vers le navigateur du client. Par exemple : <% String[] phrases = {"Pierre", "Paul", "Jacques"}; for (int i=0; i<phrases.length; i++) { out.println(phrases[i]); } %>

2.3 JSP Objets JSP La servlet générée défini un certain nombre d'objets qui peuvent être utilisés dans les scriptlets: HttpServletRequest request: l'objet requête HTTP HttpServletResponse response: l'objet réponse HTTP JspWriter out: cet objet sert à la même chose que response.getwriter() et définit une méthode println() pour écrire l'output.... Accès par défaut : java.lang.* javax.servlet.* javax.servlet.http.* javax.servlet.jsp.*

2.3 JSP Expressions JSP Les expressions JSP permettent d'insérer simplement des chaînes de caractères générées dynamiquement dans la page HTML. La syntaxe d'une expression JSP est la suivante : <%= expression java %> L expression doit retourner un résultat affichable Exemples: L'expression suivante permet par exemple de retourner une chaîne contenant l'adresse IP du client : <%= request.getremoteaddr(); %> Il s'agit ainsi d'un raccourci pour la scriptlet suivante : <% out.println(request.getremoteaddr()); %> Pour afficher la date du jour: <BODY> La date d aujourd hui: <%= new java.util.date() %> </BODY>

2.3 JSP Commentaires JSP Avec JSP il est possible d'ajouter des commentaires de deux façons: générer un commentaire visible dans le code source HTML (commentaire HTML) du client avec la syntaxe suivante : <!-- commentaire [<%= expression %>] --> créer un commentaire dans le code JSP dans un but de documentation du source (non visible par le client) grâce à la syntaxe suivante : <%-- commentaire -->

2.3 JSP JSP: Advantages - Disadvantages o JSP and Servlets can do the same things. + Easier to read. + Easier to write (not always the case, but often). + Easier to deploy (don t need to modify web.xml, don't need to compile). + Greater compatibility with web design tools. - Errors at execution time. - First person penalty (can be overcome by precompiling.jsp pages). - Can lead to bad design (but you can say this about anything). - More restrictions on the structure than with servlets.

2.4 JDBC JDBC JDBC (Java DataBase Connectivity) is a call-level programming interface allowing external access to SQL database manipulation and update commands. It allows the integration of SQL calls into a general programming environment by providing library routines which interface with the database. Here is an easy way of visualizing what happens in a call level interface: You are writing a normal Java program. Somewhere in the program, you need to interact with a database. Using standard library routines, you open a connection to the database. You then use JDBC to send your SQL code to the database, and process the results that are returned. When you are done, you close the connection.

2.4 JDBC Establishing a connection Before a database can be accessed, a connection must be opened between our program (client) and the database (server). This involves two steps: Load the vendor specific driver: Class.forName("com.mysql.jdbc.Driver"); Make the connection: Connection con = DriverManager.getConnection( "jdbc:mysql://diufpc13/carsdb", "jboss", "11223344"); That's it! The connection con returned in the last step is an open connection which we will use to pass SQL statements to the database.

2.4 JDBC Creating JDBC Statements A JDBC Statement object is used to send your SQL statements to the DBMS, and should not to be confused with an SQL statement. A JDBC Statement object is associated with an open connection, and not any single SQL Statement. You can think of a JDBC Statement object as a channel sitting on a connection, and passing one or more of your SQL statements (which you ask it to execute) to the DBMS. An active connection is needed to create a Statement object. The following code snippet, using our Connection object con, does it for you: Statement stmt = con.createstatement(); At this point, a Statement object exists, but it does not have an SQL statement to pass on to the DBMS. We learn how to do that in a following section.

2.4 JDBC Executing Statements One can execute several kind of SQL statements: create, insert, update, selects. Each of these statements have corresponding methods in the Statement class. A query is expected to return a set of tuples as the result, and not change the state of the database. Not surprisingly, there is a corresponding method called executequery(), which returns its results as a ResultSet object: ResultSet rs = stmt.executequery("select * FROM cars"); while ( rs.next() ) { System.out.println(rs.getString("description")); }