Traitement des données de formulaires. Accès aux BD avec JDBC Servlets - M. Baron - Page
|
|
|
- Eléonore Martin
- il y a 10 ans
- Total affichages :
Transcription
1 Organisation du cours sur les Servlets Servlets et API Traitement des données de formulaires Architecture de développement Cycle de vie Suivi de session Collaboration de Servlets Sécurité : authentification Accès aux BD avec JDBC 38
2 Qu est ce qu une Servlet Composant logiciel écrit en Java fonctionnant du coté serveur Au même titre nous trouvons CGI (Common Gateway Interface) Langages de script coté serveur PHP, ASP (Active Server Pages) Permet de gérer des requêtes HTTP et de fournir au client une réponse HTTP Une Servlet s exécute dans un moteur de Servlet ou conteneur de Servlet permettant d établir le lien entre la Servlet et le serveur Web Une Servlet s exécute par l'intermédiaire d'une machine virtuelle 39
3 Architecture Servlets Requête HTTP Réponse HTTP Processus principal Conteneur de Servlets Servlet 1 Servlet 2 Client WEB Serveur Web Servlet 3 Machine virtuelle Java Thread Les Servlets peuvent être toutes gérées par des thread séparés au sein d un même processus de machine virtuelle 40
4 Ok, mais à quoi ça sert? Créer des pages HTML dynamiques, générer des images,... Effectuer des tâches de type CGI qui sont des traitements applicatifs coté serveur WEB Manipulation d une base de données Gestion d un système de surveillance,... Respecter les principes d une architecture : écrire une application en Java dont l interface utilisateur est dans le client Applet (SWING) Téléphone portable (WAP) Navigateur (HTML) 41
5 Puissance des Servlets Portabilité Technologie indépendante de la plate-forme et du serveur Un langage (Java) et plusieurs plate-forme (.NET plusieurs langages et une plate-forme) Puissance Disponibilité de l API de Java Manipulation d images, connectivité aux bases de données (JDBC), Efficacité et endurance Une Servlet est chargée une seule fois (CGI chargée puis déchargée après utilisation) Une Servlet conserve son état (connexions à des bases de données) Sûreté Typage fort de Java Gestion des erreurs par exception 42
6 Première Servlet : HelloWorld Ne pas oublier d'importer la bibliothèque Java des Servlets HelloWorld est un objet de type HttpServlet import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { Redéfinition de la méthode doget (traitement d'une requête GET) public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/hrml"); PrintWriter out = res.getwriter(); Réponse sous format HTML out.println("<html>"); out.println("<head><title>bonjour tout le monde</title></head>"); out.println("<body>"); out.println("<big>bonjour tout le monde</big>"); out.println("</body></html>"); HelloWorld.java du projet HelloWorldServlet Le résultat sur le client 43
7 L'API Servlet : du générique à l'http Une Servlet doit implémenter l'interface javax.servlet.servlet et javax.servlet.servletconfig Servlet << Interface >> + init( ) + service( ) + destroy() ServletConfig << Interface >> + getinitparameter(string) : String + getservletname() : String +... Plus simplement l'api Servlet fournit deux classes qui proposent déjà une implémentation GenericServlet : pour la conception de Servlets indépendantes du protocole HttpServlet : pour la conception de Servlets spécifiques au protocole HTTP 44
8 L'API Servlet : du générique à l'http Servlet << Interface >> + init( ) + service( ) + destroy() ServletConfig << Interface >> + getinitparameter(string) : String + getservletname() : String +... Étendre cette classe pour construire des Servlets "génériques" GenericServlet {abstraite + service(...) {abstraite +... Étendre cette classe pour construire des Servlets propre au protocole HTTP + service( ) + doxxx ( ) HttpServlet 45
9 L'API Servlet : la classe GenericServlet Une Servlet qui hérite de GenericServlet est une Servlet indépendante du protocole GenericServlet {abstraite + service( ) {abstraite +... Obligation d'implémenter la méthode service( ) qui reste le principal point d'entrée du client vers le serveur Besoin de vérifier explicitement le type de protocole requête réponse Serveur Web service(...) Conteneur de Servlets : sous-classe de GenericServlet 46
10 L'API Servlet : la classe HttpServlet Dans la suite du cours nous allons utiliser uniquement des Servlets qui réagissent au protocole HTTP d'où l'utilisation de la classe HttpServlet HttpServlet redéfinit la méthode service( ) service( ) lit la méthode (GET, POST, ) à partir de la requête Elle transmet la requête à une méthode appropriée de HttpServlet destinée à traiter le type de requête (GET, POST, ) réponse requête GET réponse requête POST Serveur Web doget(...) service(...) dopost(...) Conteneur de Servlets : sous-classe de HttpServlet 47
11 HttpServlet : méthodes de traitement de requêtes Plusieurs méthodes sont fournies pour traiter les différents types de requêtes (GET, POST, ). Elles sont appelées méthodes de traitement de requêtes Elles ont un en-tête identique doxxx( ) où XXX correspond au type de requête dopost( ) est la méthode pour traiter les requêtes de type POST doget( ) est la méthode pour traiter les requêtes de type GET dohead( ), dotrace( ), Selon le type de requête (GET ou POST) le concepteur redéfinit la méthode concernée Pour les besoins du cours nous utiliserons essentiellement les méthodes dopost( ) et doget( ) 48
12 HttpServlet : méthodes de traitement de requêtes L'implémentation par défaut des méthodes doxxx( ) renvoie une erreur de type HTTP 405 Type de requête non supporté par l'url Appel du code doget( ) de la super-classe import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldError extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { super.doget(req, res); Ne vous trompez pas de méthode à redéfinir selon le type de requête HelloWorldError.java du projet HelloWorldServlet 49
13 HttpServlet : requête et réponse La méthode service( ) et par conséquent les méthodes de traitement de requêtes (ex : dopost( )) sont appelées un objet requête un objet réponse Objet de requête Objet de réponse import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SampleServlet extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException {... public void dopost(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException {... 50
14 HttpServlet : objet requête HttpServletRequest HttpServletRequest hérite de ServletRequest Cet objet encapsule la requête HTTP et fournit des méthodes pour accéder aux informations du client de l'environnement du serveur Exemples de méthodes String getmethod() : retourne le type de requête String getserveurname() : retourne le nom du serveur String getparameter(string name) : retourne la valeur d'un paramètre String[] getparameternames() : retourne le nom des les paramètres String getremotehost() : retourne l'ip du client String getserverport() : retourne le port sur lequel le serveur écoute String getquerystring() : retourne la chaîne d interrogation (voir l'api Servlets pour le reste) 51
15 HttpServlet : objet requête HttpServletRequest Exemple : Servlet qui affiche un certains nombre d'informations issues de HttpServletRequest public class InfosServlet extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { response.setcontenttype("text/plain"); PrintWriter out= response.getwriter(); out.println("protocol: " + request.getprotocol()); out.println("scheme: " + request.getscheme()); out.println("servername: " + request.getservername()); out.println("serverport: " + request.getserverport()); out.println("remoteaddr: " + request.getremoteaddr()); out.println("remotehost: " + request.getremotehost()); out.println("method: " + request.getmethod());... InfosServlet.java du projet InfosServlet 52
16 HttpServlet : objet réponse HttpServletResponse HttpServletResponse hérite de ServletResponse Cet objet est utilisé pour construire un message de réponse HTTP renvoyé au client, il contient les méthodes nécessaires pour définir le type de contenu, en-tête et code de retour un flot de sortie pour envoyer des données (par exemple HTML) au client Exemples de méthodes void setstatus(int) : définit le code de retour de la réponse void setcontenttype(string) : définit le type de contenu MIME ServletOutputStream getoutputstream() : flot pour envoyer des données binaires au client void sendredirect(string) : redirige le navigateur vers l'url 53
17 HttpServlet : objet réponse HttpServletResponse Exemple 1 : écrit un message de type TEXT au client Utilisation de la méthode PrintWriter getwriter() public class HelloWorldPrintWriter extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/plain"); PrintWriter out = res.getwriter(); out.println("premier Message"); out.println("coucou voilà comment écrire un message"); out.println("second Message"); HelloWorldPrintWriter.java du projet HelloWorld 54
18 HttpServlet : objet réponse HttpServletResponse Exemple 2 : effectue une re-direction vers un site web Utilisation de la méthode sendredirect(string) public class SendRedirect extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.sendredirect(" SendRedirect.java du projet HelloWorld 55
19 HttpServlet : objet réponse HttpServletResponse Exemple 3 : effectue un téléchargement de fichier sur le client public class DownloadFileServlet extends HttpServlet { protected void doget(httpservletrequest arg0, HttpServletResponse arg1) throws ServletException, IOException { try { InputStream is = new FileInputStream("c:/dd.txt"); OutputStream os = arg1.getoutputstream(); Le fichier à télécharger se trouve sur le serveur Flux de sortie = client arg1.setcontenttype("text/plain"); arg1.setheader("content-disposition","attachment;filename=toto.txt"); int count; byte buf[] = new byte[4096]; while ((count = is.read(buf)) > -1) os.write(buf, 0, count); is.close(); os.close(); catch (Exception e) { // Y a un problème. DownloadFileServlet.java du projet DownloadFileServlet En-tête de la réponse adaptée pour retourner un fichier 56
20 HttpServlet : objet réponse HttpServletResponse Exemple 4 : effectue un pull client public class PullClientServlet extends HttpServlet { private int count = 10; protected void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setcontenttype("text/plain"); PrintWriter out = resp.getwriter(); if (count > 0) { resp.setheader("refresh","1"); count-- out.println(count + "..."); else { out.println("fin"); PullClientServlet.java du projet PullClient Toutes les 1 seconde la page est rechargée et cela 10 fois de suite 57
21 HttpServlet : objet réponse HttpServletResponse Exemple 5 : effectue un push serveur public class PushServerServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { ServletOutpuStream out = res.getoutputstream(); res.setcontenttype("multipart/x-mixed-replace;boundary=end"); out.println(); out.println("--end"); for (int i = 10; i > 0; i--) { out.println("content-type: text/plain"); out.println(); out.println(i + "..."); out.println(); out.println("--end"); out.flush(); try { Thread.sleep(1000); catch (InterruptedException e) { e.printstacktrace(); out.println("content-type: text/plain"); out.println(); out.println("fin"); out.println("--end--"); out.flush(); PushServerServlet.java du projet PushServer Connexion non fermée mais réponse envoyée au client Utilisation de «multipart/mixed» pour coder le pushing serveur Connexion fermée réponse envoyée au client 58
22 Servlets et formulaires : du coté HTML Utilisation de la balise <FORM> </FORM> Option METHOD : type de requête GET ou POST Option ACTION : l URL où envoyer les données Utilisation de composants IHM pour saisir des informations Contenu à l intérieur de la balise FORM Chaque composant est défini au moyen d une balise particulière SELECT, INPUT, TEXTAREA, A l intérieur de chaque balise du composant (SELECT par exemple) plusieurs options et notamment une (NAME) qui permet d identifier le composant : NAME="mon_composant" Les données sont envoyées quand l utilisateur clique sur un bouton de type SUBMIT 59
23 Servlets et formulaires : du coté HTML <body> <p>formulaire de satisfaction du cours Servlet/JSP </p> <form name="form1" method="get" action="form.html"> <p> Nom : <input type="text" name="nom"> Prénom : <input type="text" name="prenom"> </p> <p> Sexe : <input type="radio" name="radio1" value="sexe" checked>masculin <input type="radio" name="radio1" value="sexe">féminin </p> <p>commentaire :<br> <textarea name="textarea" cols="50" rows="10"> </textarea><br> <input type="submit" name="submit" rows="5" value="soumettre"> </p> </form> Le formulaire appelle une Servlet avec une requête de type GET index.html du projet UIForm Il se peut que des composants portent le même identifiant. Exemple : composant bouton radio 60
24 Servlets et formulaires : du coté Servlet Pour lire les données du formulaire : traiter la requête Accéder par l intermédiaire de l objet HttpServletRequest aux paramètres String getparameter(string p) : retourne la valeur du paramètre p String[] getparamtervalues(string p) : retourne les valeurs du paramètre p public class UIFormServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/plain"); PrintWriter out = res.getwriter(); out.println("nom : " + req.getparameter("nom")); out.println("prénom : " + req.getparameter("prenom")); Cette méthode est utile lorsque dans un formulaire vous avez plusieurs composants qui portent le même nom if (req.getparametervalues("radio1")[0].equals("mas")) { out.print("c'est un homme. Il"); else { out.print("c'est une femme. Elle"); out.print(" a écrit sur ce magnifique cours que "); out.println(req.getparameter("textarea")); UIFormServlet.java du projet UIForm 61
25 Architecture de développement d'une application WEB Une application WEB peut contenir plusieurs Servlets Pour tester et déployer une Servlet, il faut un système d'exécution appelé conteneur de Servlets ou moteur de Servlets Le conteneur réalise le lien entre la Servlet et le serveur WEB Transforme code Java (bytecode) en HTML Associe à des URL's virtuels une Servlet requête /HelloWorldServlet/* Servlet 1 réponse Serveur Web /*.html /FormulaireServlet/*.htm Il existe de nombreux conteneurs de Servlets présentés dans la partie suivante Conteneur de Servlets Servlet 2 62
26 Architecture de développement d'une application WEB Une application WEB est contenue dans un répertoire physique sur le serveur Une application WEB possède une hiérarchie de répertoires et de fichiers Respecter scrupuleusement la hiérarchie des répertoires et *.html, *.jsp,... le nom des fichiers Fichiers pour la présentation WEB-INF web.xml Fichiers de configuration de l'application WEB au format XML classes lib *.class *.jar, *.class Classes (bytecode) des Servlets Fichiers bibliothèques sous différents formats 63
27 Les contextes... Un contexte constitue une vue sur le fonctionnement d une même application web Possibilité d accéder à chacune des ressources de l application web correspondant au contexte Servlets Pages JSP... Utilisation du fichier web.xml pour la description de déploiement du contexte Étudier à la fin de cette partie «Collaboration de Servlets» Approfondissement sur la partie JSP «Collaboration JSP Servlets : MVC» Une application WEB ne contient qu un seul contexte 64
28 Le fichier web.xml : c est quoi? Le fichier web.xml regroupe les informations de fonctionnement de l'application WEB (description de déploiement du contexte) Utilisation du format XML extensible Markup Language Syntaxe universelle pour la structuration des données créée par le World Wide Web Consortium (W3C) en 1996 Langage basé sur des balises permettant de donner une signification au document (HTML s'intéresse essentiellement à l'affichage) Extensible par la possibilité de créer de nouvelles balises Balises XML sensibles à la case et à la rigueur (balise ouvrante = obligation d'une balise fermante) La structure du document est défini par un fichier XSD (XML Schema Description) Des informations sur le format XML peuvent être trouvées à 65
29 Le fichier web.xml : c est quoi? Fichier web.xml typique En-tête du fichier web.xml Balise principale La présence du fichier web.xml est obligatoire pour que vos servlets WEB fonctionnent Balise de description de l'application WEB Balise de description d'une Servlet Nom de la Servlet "Identification" Classe de la Servlet Définition d'un chemin virtuel Nom de la Servlet considéré "Identification" Définition du chemin virtuel <?xml version="1.0" encoding="utf-8"?> <web-app xmlns=" xmlns:xsi=" xsi:schemalocation=" version="2.4"> <display-name>application WEB affichant HelloWorld</display-name> <servlet> <servlet-name>helloworldservlet</servlet-name> <servlet-class>helloworld</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloworldservlet</servlet-name> <url-pattern>/msg.hello</url-pattern> </servlet-mapping> </web-app> 66
30 Le fichier web.xml : c est quoi? Possibilité de décrire dans le fichier web.xml le fonctionnement de plusieurs Servlets web.xml du projet HelloWorld L application WEB est ici composée de deux Servlets Deux façon différentes d appeler la Servlet HelloWorldServlet Une seule façon d appeler la Servlet HelloWorldPrintWriter <?xml version="1.0" encoding="utf-8"?> <web-app...> <display-name>servlets affichant différemment le message HelloWorld </display-name> <servlet> <servlet-name>helloworldservlet</servlet-name> <servlet-class>helloworld</servlet-class> </servlet> <servlet> <servlet-name>helloworldprintwriter</servlet-name> <servlet-class>helloworldprintwriter</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloworldservlet</servlet-name> <url-pattern>*.toutpourservlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>helloworldservlet</servlet-name> <url-pattern>/msg.hello</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>helloworldprintwriter</servlet-name> <url-pattern>/printwriter.html</url-pattern> </servlet-mapping> </web-app> 67
31 Le fichier web.xml : c est quoi? Le fichier web.xml permet la définition de chemin virtuel : mais comment sont-ils utilisés pour appeler les Servlets? Trois chemins virtuels ont été définis pour exécuter la Servlet HelloWorldServlet Adresse du Serveur web.xml du projet HelloWorld Port Contexte de l'application WEB <servlet-mapping> <servlet-name>helloworldservlet</servlet-name> <url-pattern>/helloworldservlet/msg.hello</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>helloworldservlet</servlet-name> <url-pattern>*.toutpourservlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>helloworldservlet</servlet-name> <url-pattern>/index.html</url-pattern> </servlet-mapping> La définition du contexte d une application WEB sera présentée dans la partie suivante 68
32 Cycle de vie d'une Servlet Création et initialisation de la Servlet Utilisation de paramètres initiaux Traitement des services demandés par les clients (au travers de la méthode service( ) notamment), le cas échéant Persistance d instance Destruction de la Servlet et passage au ramasse-miettes de la machine virtuelle Déconnexion avec une base de données Au contraire les applications serveur de type CGI sont créées à chaque requête et détruites après le traitement des réponses 69
33 Cycle de vie d'une Servlet : persistance d instance Entre chaque requête du client les Servlets persistent sous forme d instances d objet Au moment où le code d une Servlet est chargé, le serveur ne crée qu une seule instance de classe L instance (unique) traite chaque requête effectuée sur la Servlet Les avantages (rappels) L empreinte mémoire reste petite Le surcoût en temps lié à la création d un nouvel objet pour la Servlet est éliminé La persistance est possible c est-à-dire la possibilité de conserver l état de l objet à chaque requête (un exemple le compteur) 70
34 Cycle de vie d'une Servlet : persistance d instance Exemple : Servlet qui incrémente un compteur à chaque requête du client public class SimpleCounterServlet extends HttpServlet { private int count = 0; protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/plain"); PrintWriter out = res.getwriter(); count++; out.println("depuis son chargement, on a accédé à cette Servlet " + count " fois."); Pensez à prévoir des accès synchronisés au cas où plus d une requête est traitée en même temps par le Serveur SimpleCounterServlet.java du projet Counter 71
35 Cycle de vie d'une Servlet : rechargement d une Servlet A chaque rechargement d une Servlet par le conteneur de Servlet, il y a création d une nouvelle instance et donc destruction de l ancienne Le rechargement d une Servlet a lieu quand il y a : Modification d au moins une classe de l application WEB Demande explicite de l administrateur du serveur WEB Redémarrage du conteneur de Servlets Le conteneur de Servlets ne s intéresse qu au Servlet et par conséquent si vous modifiez autre chose que des classes il n y aura aucun rechargement implicite de Servlets 72
36 Cycle de vie d'une Servlet : méthodes init() Un constat : il n y a pas de constructeur dans une Servlet L initialisation des attributs se fait par l intermédiaire de la méthode init() Elle ne possède pas de paramètre Définie et implémentée dans la classe abstraite GenericServlet La méthode init() peut être appelée à différents moments Lorsque le conteneur de Servlets démarre Lors de la première requête à la Servlet Sur demande explicite de l administrateur du serveur WEB N essayez pas de placer des constructeurs à la mode POO ça ne sert à rien 73
37 Cycle de vie d'une Servlet : méthode init() Exemple : Servlet qui incrémente un compteur à chaque requête du client avec une valeur initiale de 6 public class InitCounterServlet extends HttpServlet { private int count; public void init() throws ServletException { count = 6; protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/plain"); PrintWriter out = res.getwriter(); count++; out.println("depuis son chargement, on a accédé à cette Servlet " + count " fois."); InitCounterServlet.java du projet Counter 74
38 Cycle de vie d'une Servlet : méthode init() Possibilité d utiliser des paramètres d initialisation exploités exclusivement par la méthode init() Les paramètres d initialisation sont définis dans le fichier web.xml de l application WEB Balise qui détermine le nom du paramètre... <web-app...> <display-name>servlet simulant un compteur</display-name> Balise qui détermine la valeur du paramètre Balise qui explique le rôle du paramètre (optionnelle) <servlet> <servlet-name>initconfigfilecounterservlet</servlet-name> <servlet-class>initconfigfilecounterservlet</servlet-class> <init-param> <param-name>initial_counter_value</param-name> <param-value>50</param-value> <description>valeur initiale du compteur</description> </init-param> </servlet>... </web-app> Plusieurs paramètres peuvent être définis mais attention à l ordre des balises!! web.xml du projet Counter 75
39 Cycle de vie d'une Servlet : méthode init() Exemple : Servlet qui incrémente un compteur et qui est initialisée par le fichier web.xml public class InitConfigFileCounterServlet extends HttpServlet { private int count; public void init() throws ServletException { String initial = this.getinitparameter("initial_counter_value"); try { count = Integer.parseInt(initial); catch(numberformatexception e) { count = 0; protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException {... count++; out.println("depuis son chargement, on a accédé à cette Servlet " + count " fois."); InitConfigFileCounterServlet.java du projet Counter 76
40 Cycle de vie d'une Servlet : méthode destroy() Une Servlet doit libérer toutes les ressources qu elle a acquises et qui ne pourront être passées au ramasse-miettes Exemples de ressources Connexion à une base de données Ouverture d un fichier sur le disque serveur La méthode destroy() donne une dernière chance d écrire les informations qui ne sont pas encore sauvegardées La méthode destroy() est également utilisées pour écrire les informations persistantes qui seront lues lors du prochain appel à init() 77
41 Cycle de vie d'une Servlet : méthode destroy() Exemple : Servlet qui incrémente un compteur qui sauvegarde l état avec destroy() et qui recharge avec init() public class InitDestroyCounterServlet extends HttpServlet { private int count; public void destroy() { FileWriter filewriter = null; PrintWriter printwriter = null; try { filewriter = new FileWriter("InitCounter.initial"); printwriter = new PrintWriter(fileWriter); printwriter.println(count); catch (IOException e) {... finally { if (printwriter!= null) printwriter.close(); protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException {... InitDestoryCounterServlet.java du projet Counter 78
42 Cycle de vie d'une Servlet : méthode destroy() Exemple (suite) : Servlet qui incrémente un compteur qui sauvegarde l état avec destroy() et qui recharge avec init()... public void destroy() { // Voir transparent précédent public void init() throws ServletException { FileReader filereader = null; BufferedReader bufferedreader = null; try { filereader = new FileReader("InitCounter.initial"); bufferedreader = new BufferedReader(fileReader); String initial = bufferedreader.readline(); count = Integer.parseInt(initial); catch (IOException e) {... finally { if (bufferedreader!= null) bufferedreader.close(); InitDestoryCounterServlet.java du projet Counter 79
43 Envoyer un contenu multimédia Pour l instant nous avons écrit des Servlets qui retournaient des contenus HTML Besoin de retourner des contenus différents : Protocole WAP et langage WML utilisés par les téléphones portables Génération de contenus multimédias (création de graphes, manipulation d images) L API Java facilite la gestion des contenus multimédias en proposant des bibliothèques Encodage d images sous différents formats (GIF, JPEG) Manipulation et traitement d images 80
44 Envoyer un contenu multimédia Exemple : Servlet qui génère et retourne une image JPEG affichant le message «Bonjour tout le monde» public class GenerateImageServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { ServletOutputStream out = res.getoutputstream(); Frame frame = null; Graphics2D g = null; BufferedImage bim; frame = new Frame(); frame.addnotify(); buffer_image = new BufferedImage(620, 60, BufferedImage.TYPE_3BYTE_BGR); g = buffer_image.creategraphics(); g.setfont(new Font("Serif", Font.ITALIC, 48)); g.drawstring("bonjour tout le monde!", 10,50); JPEGImageEncoder encode = JPEGCodec.createJPEGEncoder(out); encode.encode(buffer_image); out.close(); GenerateImageServlet.java du projet Multimedia 81
45 Suivi de session Le protocole HTTP est un protocole sans état Impossibilité alors de garder des informations d une requête à l autre (identifier un client d un autre) Obligation d utiliser différentes solutions pour remédier au problème d état Authentifier l utilisateur Champs de formulaire cachés Réécriture d URL Cookies persistants Suivi de session 82
46 Cookies persistants : Cookie Un cookie est une information envoyée au navigateur (client) par un serveur WEB qui peut ensuite être relue par le client Lorsqu un client reçoit un cookie, il le sauve et le renvoie ensuite au serveur chaque fois qu il accède à une page sur ce serveur La valeur d un cookie pouvant identifier de façon unique un client, ils sont souvent utilisés pour le suivi de session Les cookies ont été introduits par la première fois dans Netscape Navigator home.netscape.com/newsref/std/cookie_spec.html 83
47 Cookies persistants : Cookie L API Servlet fournit la classe javax.servlet.http.cookie pour travailler avec les Cookies Cookie(String name, String value) : construit un cookie String getname() : retourne le nom du cookie String getvalue() : retourne la valeur du cookie setvalue(string new_value) : donne une nouvelle valeur au cookie setmaxage(int expiry) : spécifie l âge maximum du cookie Pour la création d un nouveau cookie, il faut l ajouter à la réponse (HttpServletResponse) addcookie(cookie mon_cook) : ajoute à la réponse un cookie La Servlet récupère les cookies du client en exploitant la réponse (HttpServletRequest) Cookie[] getcookies() : récupère l ensemble des cookies du site 84
48 Cookies persistants : Cookie Code pour créer un cookie et l ajouter au client Cookie cookie = new Cookie("Id", "123"); res.addcookie(cookie); Code pour récupérer les cookies Cookie[] cookies = req.getcookies(); if (cookies!= null) { for (int i = 0; i < cookies.length; i++) { String name = cookies[i].getname(); String value = cookies[i].getvalue(); Il n existe pas dans l API Servlet de méthode permettant de récupérer la valeur d un cookie par son nom 85
49 Cookies persistants : Cookie Exemple : gestion de session (identifier un client d un autre) par l intermédiaire des cookies persistants public class CookiesServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException {... String sessionid = null; Cookie[] cookies = req.getcookies(); if (cookies!= null) { for (int i = 0; i < cookies.length; i++) { if (cookies[i].getname().equals("sessionid")) { sessionid = cookies[i].getvalue(); if (sessionid == null) { sessionid = new java.rmi.server.uid().tostring(); Cookie c = new Cookie("sessionid", sessionid); res.addcookie(c); out.println("bonjour le nouveau"); else { out.println("encore vous");... CookiesServlet.java du projet Cookies Génère un identifiant unique pour chaque client 86
50 Suivi de session : HttpSession Le plus gros problème des cookies est que les navigateurs ne les acceptent pas toujours L utilisateur peut configurer son navigateur pour qu il refuse ou pas les cookies Les navigateurs n acceptent que 20 cookies par site, 300 par utilisateur et la taille d un cookie peut être limitée à 4096 octets 87
51 Suivi de session : HttpSession Solutions : utilisation de l API de suivi de session HttpSession Méthodes de création liées à la requête (HttpServletRequest) HttpSession getsession() : retourne la session associée à l utilisateur HttpSession getsession(boolean p) : création selon la valeur de p Gestion d association (HttpSession) Enumeration getattributnames() : retourne les noms de tous les attributs Object getattribut(string name) : retourne l objet associé au nom setattribut(string na, Object va) : modifie na par la valeur va removeattribut(string na) : supprime l attribut associé à na Destruction (HttpSession) invalidate() : expire la session logout() : termine la session Mécanisme très puissant permettant de stocker des objets et non de simples chaînes de caractères comme les cookies 88
52 Suivi de session : HttpSession Exemple : suivi de session pour un compteur public class HttpSessionServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/plain"); PrintWriter out = res.getwriter(); HttpSession session = req.getsession(); Integer count = (Integer)session.getAttribute("count"); if (count == null) count = new Integer(1); else count = new Integer(count.intValue() + 1); session.setattribute("count", count); out.println("vous avez visité cette page " + count + " fois."); HttpSessionServlet.java du projet HttpSession Client n 1 Client n 2 89
53 Collaboration de Servlets Les Servlets s exécutant dans le même serveur peuvent dialoguer entre elles Deux principaux styles de collaboration Partage d information : un état ou une ressource. Exemple : un magasin en ligne pourrait partager les informations sur le stock des produits ou une connexion à une base de données Partage du contrôle : une requête. Réception d une requête par une Servlet et laisser l autre Servlet une partie ou toute la responsabilité du traitement N essayez pas de communiquer avec des Servlets de serveurs différents cette solution ne fonctionnera pas 90
54 Collaboration de Servlets : partage d information La collaboration est obtenue par l interface ServletContext L utilisation de ServletContext permet aux applications web de disposer de son propre conteneur d informations unique Une Servlet retrouve le ServletContext de son application web par un appel à getservletcontext() Exemples de méthodes void setattribute(string name, Object o) : lie un objet sous le nom indiqué Object getattribute(string name) : retrouve l objet sous le nom indiqué Enumeration getattributenames() : retourne l ensemble des noms de tous les attributs liés void removeattribute(string name) : supprime l objet lié sous le nom indiqué 91
55 Partage d information Exemple : Servlets qui vendent des pizzas et partagent une spécialité du jour public class PizzasAdmin extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/plain"); PrintWriter out = res.getwriter(); ServletContext context = this.getservletcontext(); context.setattribute("specialite", "Jambon Fromage"); context.setattribute("date", new Date()); out.println("la pizza du jour a été définie."); public class PizzasClient extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { Création de deux attributs... ServletContext context = this.getservletcontext(); String pizza_spec = (String)context.getAttribute("Specialite"); Date day = (Date)context.getAttribute("Date"); DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); String today = df.format(day); out.println("aujourd'hui (" + today + "), notre specialite est : " + pizza_spec); PizzasClient.java du projet ServletContext PizzasAdmin.java du projet ServletContext Lecture des attributs 92
56 Partage d information Possibilité de partager des informations entre contextes web Première solution : utilisation d un conteneur d informations externes (une base de données par exemple) Seconde solution : la Servlet recherche un autre contexte à partir de son propre contexte ServletContext getcontext(string uripath) : obtient le contexte à partir d un chemin URI (uripath = chemin absolu) Contextes WEB Conteneur de Servlets Servlet 1 Ne fonctionne que dans le même serveur WEB Serveur Web Servlet 3 Servlet 4 Servlet 2 Communication par le contexte 93
57 Partage d information Exemple : permet d afficher la spécialité du jour de l application web précédente public class ReadSharePizzas extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); ServletContext my_context = this.getservletcontext(); ServletContext pizzas_context = my_context.getcontext("/servletcontext"); String pizza_spec = (String)pizzas_context.getAttribute("Specialite"); Date day = (Date)pizzas_context.getAttribute("Date"); DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); String today = df.format(day); Contextes de l application web précédente out.println("aujourd'hui (" + today + "), notre specialite est : " + pizza_spec); Pour communiquer entre contextes, il faut autoriser la communication inter-contextes (voir partie suivante) ReadSharePizzas.java du projet CrossServletContext 94
58 Collaboration de Servlets : partage du contrôle Les Servlets peuvent partager ou distribuer le contrôle de la requête Deux types de distribution Distribuer un renvoi : une Servlet peut renvoyer une requête entière Distribuer une inclusion : une Servlet peut inclure du contenu généré Les avantages sont La délégation de compétences Une meilleure abstraction et une plus grande souplesse Architecture logicielle MVC (Servlet = contrôle et JSP = présentation) Collaboration entre Servlets / JSP dans la partie JSP 95
59 Collaboration de Servlets : partage du contrôle Le support de la délégation de requête est obtenu par l interface RequestDispatcher Une Servlet obtient une instance sur la requête RequestDispatcher getrequestdispatcher(string path) : retourne une instance de type RequestDispatcher par rapport à un composant Un composant peut-être de tout type : Servlet, JSP, fichier statique, path est un chemin relatif ou absolu ne pouvant pas sortir du contexte Pour distribuer en dehors du contexte courant il faut : Identifier le contexte extérieur (utilisation de getcontext()) Utiliser la méthode getrequestdispatcher(string path) Le chemin est uniquement en absolu De préférence utilisez la méthode getrequestdispatcher de ServletRequest 96
60 Partage du contrôle : distribuer un renvoi La méthode forward(...) de l interface RequestDispatcher renvoie une requête d une Servlet à une autre ressource sur le serveur void forward(servletrequest req, ServletResponse res) : redirection de requête RequestDispatcher dispat = req.getrequestdispatcher("/index.html"); dispat.forward(req,res); Possibilité de transmettre des informations lors du renvoi en attachant une chaîne d interrogation (au travers de l URL) en utilisant les attributs de requête via la méthode setattribute(...) Les choses à ne pas faire... ne pas effectuer de modification sur la réponse avant un renvoi ne rien faire sur la requête et la réponse après une distribution d un renvoi 97
61 Partage du contrôle : distribuer un renvoi Exemple : distribuer un renvoi de Emetteur à Recepteur public class SenderServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { req.setattribute("seconde", "au revoir"); RequestDispatcher dispat = req.getrequestdispatcher("/recepteur.html?mot=bonjour"); dispatcher.forward(req,res); // Ne rien faire sur req et res SenderServlet.java du projet ForwardInclude Le chemin est absolu par rapport au contexte de l application web Transmission d informations par attributs Transmission d informations par chaîne d interrogation public class ReceiverServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/plain"); PrintWriter out = res.getwriter(); out.println(req.getparameter("mot")); out.println(req.getattribute("seconde")); L utilisation des attributs à la place des paramètres donne la possibilité de passer des objets et non des chaînes de caractères Affichage des informations stockées dans la requête ReceiverServlet.java du projet ForwardInclude 98
62 Partage du contrôle : distribuer un renvoi Nous avons vu au début de cette partie qu il existait une méthode de redirection sendredirect( ) est une redirection effectuée par le client forward( ) est une redirection effectuée par le serveur Est-il préférable d utiliser forward( ) ou sendredirect( )??? forward( ) est à utiliser pour la partage de résultat avec un autre composant sur le même serveur sendredirect( ) est à utiliser pour des redirections externes car aucune recherche getcontext(...) n est nécessaire Préférez forward( ) pour des redirections dans le contexte et sendredirect( ) pour le reste 99
63 Partage du contrôle : distribuer une inclusion La méthode include( ) de l interface RequestDispatcher inclut le contenu d une ressource dans la réponse courante RequestDispatcher dispat = req.getrequestdispatcher("/index.html"); dispat.include(req,res); La différence avec une distribution par renvoi est : la Servlet appelante garde le contrôle de la réponse elle peut inclure du contenu avant et après le contenu inclus Possibilité de transmettre des informations lors de l inclusion en attachant une chaîne d interrogation (au travers de l URL) en utilisant les attributs de requête via la méthode setattribute(...) Les choses à ne pas faire... ne pas définir le code d état et en-têtes (pas de setcontenttype( )) supprimer les balises <HTML> et <BODY> 100
64 Partage du contrôle : distribuer une inclusion Exemple : permet de distribuer une inclusion public class IncluderServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); out.println("<html><body>"); RequestDispatcher dispat = req.getrequestdispatcher("included.html"); dispat.include(req,res); out.println("<br>"); req.setattribute("bonjour", "Bonjour"); dispat.include(req,res); out.println("<br>"); Cette Servlet réalise trois inclusions req.setattribute("bonsoir", "Bonsoir"); dispat.include(req,res); out.println("<br>"); out.println("</body></html>"); IncluderServlet.java du projet ForwardInclude 101
65 Partage du contrôle : distribuer une inclusion Exemple (suite) : permet de distribuer une inclusion public class IncludedServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter out = res.getwriter(); if(req.getattribute("bonjour")!= null) { out.println(req.getattribute("bonjour")); if (req.getattribute("bonsoir")!= null) { out.println(req.getattribute("bonsoir")); else { out.println("pas Bonsoir"); else { out.println("rien de rien"); Retour à l appelant IncludedServlet.java du projet ForwardInclude 102
66 Sécurité : authentification La sécurité consiste à conserver les informations sensibles dans les mains des utilisateurs Authentification : capable de vérifier l identité des parties impliquées Habilitation : limiter l accès aux ressources à un ensemble d utilisateurs Confidentialité : garantir la communication des parties impliquées Nous distinguons plusieurs types d'autorisation : BASIC : fournit par le protocole HTTP basé sur un modèle simple de demande/réponse (codage Base64) FORM : authentification ne reposant pas celle du protocole HTTP 103
67 Sécurité : types d'autorisation Principe des autorisations de type BASIC Client Web GET / HTTP/1.1 HTTP/ Unauthorized WWW-Authenticate: BASIC realm="users" GET / HTTP/1.1 Autorisation: BASIC RkfddsIRSddO= Serveur Web Principe des autorisations de type FORM Application WEB Vérification si l'utilisateur est connu et son mot de passe correct GET / HTTP/1.1 Client Web HTTP/ OK Content-Type: text/html... POST / HTTP/ Données cachées et non visible Serveur Web Application WEB 104
68 Sécurité : deux familles d'identification pour les Servlets Gérée par le conteneur de Servlets (Ident 1) : Spécification d'un domaine de sécurité dans le fichier de configuration web.xml Les utilisateurs sont gérés (l'utilisateur existe-il, le mot de passe est-il correct, ) uniquement par le conteneur de Servlets Basée sur les rôles (BASIC) A base de formulaire (FORM) Effectuée à l intérieur des Servlets (Ident 2) : Les utilisateurs sont stockés dans une base de données, un fichier, La vérification est effectuée dans les Servlets (besoin d'un codage) Personnalisée (BASIC) Personnalisée à base de formulaire (FORM) 105
69 Authentification basée sur les rôles : Ident 1 Exemple : Servlet qui après identification affiche un ensemble d'informations Aucune vérification dans le code de la Servlet pour l'identification public class SecurityRolesServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/plain"); PrintWriter out = res.getwriter(); out.println("bonjour : " + req.getremoteuser()); out.println("information Top-Secrête"); out.println("type d'authentification : " + req.getauthtype()); out.println("est-un administrateur : " + req.isuserinrole("admin")); SecurityRolesServlet.java du projet AuthentificationByRoles Conteneur de Servlets Identification réussie? Oui 106
70 Authentification basée sur les rôles : Ident 1 Besoin de modification du fichier de configuration web.xml de l'application WEB considérée... <web-app...> <display-name>gestion d'une authentification par "Roles"</display-name> <servlet> <servlet-name>securiterolesservlet</servlet-name> <servlet-class>securiterolesservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>securiterolesservlet</servlet-name> <url-pattern>/securiterolesservlet</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>secretprotection</web-resource-name> <url-pattern>/securiterolesservlet</url-pattern> <http-method>get</http-method> </web-resource-collection> web.xml du projet AuthentificationByRoles Définition des Servlets contenues dans l'application WEB et des chemins virtuels Définit pour quelles URL la contrainte d identification doit être mise en œuvre Protection des ressources pour la méthode GET <auth-constraint> <role-name>test</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>basic</auth-method> <realm-name>authentification de SecuriteRoleServlet</realm-name> </login-config> </web-app> La définition des rôles sera présentée dans la partie suivante Rôle(s) ayant le droit d'accéder aux ressources de l'application WEB «Habillage» de la boîte d identification 107
71 Authentification personalisée basée sur les rôles : Ident 1 Exemple : Servlet qui après identification personnalisée affiche un message de bienvenue public class SecurityFormRolesServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse l'identification res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); out.println("bonjour : " + req.getremoteuser()); req.getsession().invalidate(); SecurityFormRolesServlet.java du projet AuthentificationFormByRoles loginpage.html Deux fichiers au format HTML gèrent les pages de connexion et d erreur Identification réussie? Conteneur de Servlets Non errorpage.html Aucune vérification dans le code de la Servlet pour Oui Termine explicitement la session. Obligation de s identifier à chaque fois que la Servlet est appelée 108
72 Authentification personalisée basée sur les rôles : Ident 1 Besoin de modification du fichier de configuration web.xml de l'application WEB considérée... <web-app...>... <servlet>... </servlet> <servlet-mapping>... </servlet-mapping> <security-constraint>... </security-constraint> <login-config> <auth-method> FORM </auth-method> <form-login-config> <form-login-page> /loginpage.html </form-login-page> <form-error-page> /errorpage.html </form-error-page> </form-login-config> </login-config> </web-app> web.xml du projet AuthentificationFormByRoles Les fichiers HTML sont placés à la racine de l application WEB et au même niveau que le répertoire WEB-INF Le début du fichier web.xml est identique au précédent modulo le nom de la classe SecuriteFormServlet Balise qui stocke la page de connexion Balise qui stocke la page des erreurs de connexion 109
73 Authentification personalisée basée sur les rôles : Ident 1 Le formulaire de la page loginpage.html doit employer la méthode POST pour la transmission des données des valeurs spéciales pour les noms des composants Rend invisible la transmission des données Le moteur de Servlet avec les informations contenues dans le fichier web.xml se charge de traiter l identification <FORM METHOD=POST ACTION="j_security_check"> Nom d utilisateur : <INPUT TYPE=TEXT NAME="j_username"><br> Valeur pour le nom d utilisateur Mot de passe : <INPUT TYPE=PASSWORD NAME="j_password"><br> <INPUT TYPE=SUBMIT> </FORM> C'est du JSP Valeur pour le mot de passe loginpage.html du projet AuthentificationFormByRoles 110
74 Authentification personnalisée : Ident 2 Exemple : Servlet qui traite les autorisations de type BASIC public class SecurityServlet extends HttpServlet { private Hashtable users = new Hashtable(); public void init(servletconfig config) throws ServletException { super.init(config); users.put("mickael:baron","allowed"); public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/plain"); PrintWriter out = res.getwriter(); String auth = req.getheader("authorization"); if (!allowuser(auth)) { res.setheader("www-authenticate", "BASIC realm=\"users\""); res.senderror(httpservletresponse.sc_unauthorized); else out.println("page Top-Secret"); SecurityServlet.java du projet AuthentificationByServlet Récupère dans la requête le HEADER nommé Authorization S il s agit du premier essai ou d une mauvais saisie => envoie d une réponse avec l en-tête WWW-Authenticate et l état SC_UNAUTHORIZED protected boolean allowuser(string auth) throws IOException { if (auth == null) return false; if (!auth.touppercase().startswith("basic ")) return false; String userpassencoded = auth.substring(6); String userpassdecoded = Base64EnDecoder.decode(userpassEncoded); return ("allowed".equals(users.get(userpassdecoded))); La vérification de l identification est effectuée dans le code de la Servlet Méthode qui traite le résultat de l entête Authorization 111
75 Authentification personnalisée à base de formulaire : Ident 2 Différences avec les autres types d identification Cette identification part d un formulaire basique avec une protection minimum des transmissions grâce à la méthode POST Cette identification comparée à l identification personnalisée basée sur les rôles est «démarrée» directement par la page WEB de connexion (login.html) Au contraire l identification personnalisée basée sur les rôles est démarrée au travers de son URL virtuelle login.html Transmission par POST Servlet de traitement Erronée Correcte 112
76 Authentification personnalisée à base de formulaire : Ident 2 Exemple : Servlet qui traite les autorisations de type FORM public class SecurityFormServlet extends HttpServlet { private Hashtable users = new Hashtable(); public void init(servletconfig config) throws ServletException { users.put("mickael:baron","allowed"); public void dopost(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter();... String account = req.getparameter("account"); String password = req.getparameter("password"); if (!allowuser(account, password)) { out.println("<html><head><title>access Denied</TITLE></HEAD>"); out.println("<body>votre compte et mot de passe sont incorrects.<br>"); out.println("<a HREF=\"/SecuritePersoFormServlet/login.html\"> Retenter</A>"); out.println("</body></html>"); else { req.getsession().setattribute("logon.isdone", account); out.println("bravo : " + account); SecurityFormServlet.java du projet AuthentificationFormByServlet Le mot de passe est caché dans la requête de type POST Récupère les variables qui ont été transmises par le formulaire de login.html Génère une page d erreur avec la possibilité de s identifier une nouvelle fois L identification est réussie et on modifie la session en ajoutant le nom de l utilisateur 113
77 Se connecter aux bases de données Utilisation de l API JDBC (Java DataBase Connectivity) JDBC est une API du niveau SQL, elle permet d exécuter des instructions SQL et de retrouver les résultats (s il y en a) L API est un ensemble d interfaces et de classes conçues pour effectuer des actions sur toute base de données (mysql, ORACLE, SYBASE, ODBC, Derby) Utilisation d un gestionnaire de pilotes JDBC Un pilote JDBC spécifique à une base de données implémente l interface java.sql.driver Peut dialoguer avec tout pilote conforme à l API JDBC où les pilotes sont disponibles à java.sun.com/products/jdbc JDBC en quatre étapes Charger le pilote Se connecter à la base Créer et exécuter une requête SQL Traiter le résultat si nécessaire 114
78 Se connecter aux bases de données : charger un pilote Le pilote est obligatoire, il convertit les appels JDBC en appels natifs. Il est nécessaire de connaître le nom de la classe du pilote JDBC que l on veut utiliser Pilote ORACLE : oracle.jdbc.driver.oracledriver Pilote JDBC/ODBC : sun.jdbc.odbc.jdbcodbcdriver Pilote mysql : com.mysql.jdbc.driver Pilote Derby : org.apache.derby.jdbc.clientdriver Le chargement du pilote se fait en utilisant la méthode Class.forName(String Pilote) throws ClassNotFoundException Chargement du pilote Derby Class.forName("org.apache.derby.jdbc.ClientDriver"); Chargement du pilote ODBC Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); La librairie (généralement.jar) désignant le pilote doit être placé dans le répertoire WEB-INF/lib Exception levée sur la classe pilote n est pas trouvée 115
79 Se connecter aux bases de données : se connecter à la base Pour se connecter à une base de données il faut fournir une URL qui indique où se trouve la base URL ORACLE : jdbc:oracle:thin:host:port:idbase URL ODBC : jdbc:odbc:iddsn URL mysql : jdbc:mysql:host URL Derby : jdbc:derby:host La connexion à la base se fait en utilisant la méthode DriverManager.getConnection("URL","user","pass") throws SQLException Connexion à une base mysql nommée Espoir Connection ma_connexion = DriverManager.getConnection("jdbc:mysql://localhost/Espoir","michael","baro n"); Connection ma_connexion = DriverManager.getConnection("jdbc:oracle:thin:@dbhost:1528:ORCL","michael", "baron"); Connexion à une base ORACLE nommée ORCL Exception levée si la connexion à la base est impossible 116
80 Se connecter aux bases de données : créer et exécuter une requête SQL La requête ne peut être créée et exécutée que si le pilote et la connexion à la base se sont valides Il faut avant tout créer une instruction SQL sur la base createstatement() throws SQLException Exception levée si l instruction SQL ne peut être créée Statement mon_statement = ma_connexion.createstatement(); La référence de la connexion à une base de données Il faut enfin exécuter la requête en écrivant concrètement le requête SQL executequery(string requete) throws SQLException ResultSet mon_resultat = mon_statement.executequery("select * FROM `table`"); Référence de l instruction SQL La requête SQL Exception levée si le requête SQL n est pas correcte 117
81 Se connecter aux bases de données : traiter le résultat Enfin il faut traiter un objet de type ResultSet il existe de nombreuses méthodes boolean next() : avancer d une ligne de la table résultante String getstring(string columname) : interroger un champ String par son nom String getstring(int columnindex) : interroger un champ String par son index int getint( ) : interroger un champ Integer par son nom ou index Accède à la prochaine ligne s il y en a while (mon_resultat.next()) { String colonne1 = mon_resultat.getstring(1); out.println("nom:" + colonne1); Affiche le résultat en ligne 118
82 Se connecter aux bases de données Exemple : Servlet qui interroge une base de données mysql public class DataBaseServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); DataBaseServlet.java du projet DataBaseConnection try { Class.forName("org.apache.derby.jdbc.ClientDriver"); Connection ma_connexion = DriverManager.getConnection("jdbc:derby://localhost:1527/PersonDB"); Statement mon_statement = ma_connexion.createstatement(); ResultSet mon_resultat = mon_statement.executequery("select NAME, FIRSTNAME, OLDYEAR FROM PERSON"); while (mon_resultat.next()) { out.print("nom : " + mon_resultat.getstring(1)); out.print(" Prénom : " + mon_resultat.getstring(2)); out.println(" Age : " + mon_resultat.getint(3)); out.println("<br>"); catch(sqlexception e) {... N oubliez pas dans la requête SQL les cotes ` ` entre les différentes tables 119
Web Tier : déploiement de servlets
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
HTTP 1.1. HyperText Transfer Protocol ... ... TCP IP ...
HTTP 1.1 Place de http dans le modèle osi : HyperText Transfer Protocol...... TCP IP...... HTTP est un protocole «sans état» : chaque page WEB est transmise dans une connexion séparée (sauf pour les connections
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.
ASTRIUM - Toulouse JEE Formation 2013 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. Figure 1 Architecture
Le développement d applications Web
Le développement d applications Web Plan Principes des applications Web Origine et utilité des Servlets Présentation des Servlets Les JSP La Standard TAG Library Servlet, JSP et accès aux SGBD Les technologies
Module BD et sites WEB
Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet [email protected] 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD
JavaServer Pages (JSP)
JavaServer Pages (JSP) XVIII-1 Prérequis pour ce cours Ce cours a trait à la programmation Java coté serveur Il faut connaître un minimum de technologie J2EE Il faut connaître les servlets XVIII-2 Motivation
Application Web et J2EE
Application Web et J2EE Servlet, JSP, Persistence, Méthodologie Pierre Gambarotto Département Informatique et Math appli ENSEEIHT Plan Introduction 1 Introduction Objectfis
Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4
Les exemples cités tout au long de cet ouvrage sont téléchargeables à l'adresse suivante : http://www.editions-eni.fr. Saisissez la référence ENI de l'ouvrage EP5EJAV dans la zone de recherche et validez.
Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.
Note technique W4 Engine Extension SSO Java Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. 1 Présentation 3 2 Custom SSO Java 4 3 Bilan 10 Sommaire Référence
Les architectures 3-tiers Partie I : les applications WEB
Les architectures 3-tiers Partie I : les applications WEB 1 Evolutions logicielles Des objets aux composants... Objets JavaBeans, Objets ActiveX, Objets COM,... 1 Evolutions logicielles Des objets aux
Application web de gestion de comptes en banques
Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion
Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP
Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP Au cours de ce TP, vous allez voir comment PHP permet aux utilisateurs, une interaction avec
Architecture Orientée Service, JSON et API REST
UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API
Java DataBaseConnectivity
Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage
Serveur d'application Client HTML/JS. Apache Thrift Bootcamp
Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/
L3 informatique TP n o 2 : Les applications réseau
L3 informatique TP n o 2 : Les applications réseau Sovanna Tan Septembre 2009 1/20 Sovanna Tan L3 informatique TP n o 2 : Les applications réseau Plan 1 Transfert de fichiers 2 Le Courrier électronique
INTRODUCTION A JAVA. Fichier en langage machine Exécutable
INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du
Application de lecture de carte SESAM-Vitale Jeebop
Application de lecture de carte SESAM-Vitale Jeebop Présentation Le module de lecture de carte SESAM-Vitale Jeebop est une application Java Web Start, c'est à dire une application Java qui se télécharge
Groupe Eyrolles, 2005, ISBN : 2-212-11406-0
Groupe Eyrolles, 2005, ISBN : 2-212-11406-0 10 L atelier MyEclipse Eclipse facilite considérablement le développement Java en équipe. Son puissant éditeur, associé à des fonctionnalités de complétion de
Le développement d applications Web. François Charoy Pascal Molli Pascal Urso
Le développement d applications Web François Charoy Pascal Molli Pascal Urso License Creative Commons Cette création est mise à disposition selon le Contrat Paternité-Pas d'utilisation Commerciale-Partage
Introduction à JDBC. Accès aux bases de données en Java
Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique [email protected] 1 Introduction JDBC : Java Data Base Connectivity
Applications et Services WEB: Architecture REST
Applications et : Erick Stattner Laboratoire LAMIA Université des Antilles et de la Guyane France [email protected] Guadeloupe 2014-2015 Erick Stattner Applications et : 1 / 90 Description du cours
Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi
Un exemple d'authentification sécurisée utilisant les outils du Web : CAS 111 L authentification CAS : «Central Authentication Service» CAS ou le service central d authentification Le système CAS, développé
TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012
TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012 FORMULAIRE DE CONTACT POUR PORTFOLIO PRINCIPE GENERAL Nous souhaitons réaliser un formulaire de contact comprenant les champs suivants : NOM PRENOM ADRESSE MAIL MESSAGE
Jahia CMS ET Portal Version 5.0
Jahia CMS ET Portal Version 5.0 Développer un portlet JSR168 Avec Jahia CMS et Portal Version 5.0 V.1 Français Jahia Ltd Suisse 9, route des jeunes 1227 Carouge p. 2/47 TERMES ET CONDITIONS D UTILISATION
1. Installation d'un serveur d'application JBoss:
EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 4 EJB3, Serveur d'application JBoss 1. Installation d'un serveur d'application JBoss: télécharger l'archive du serveur JBoss à l'adresse: http://sourceforge.net/projects/jboss/files/jboss/jboss-5.0.0.ga/jboss-5.0.0.ga.zip/download
Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.
: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL
Création de formulaires interactifs
SESSION 16 Création de formulaires interactifs Programme de la session Lancer un sondage en utilisant divers éléments d'entrée de formulaire Traiter les entrées utilisateur Activer un script à partir d'un
Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf
Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations
Programmer en JAVA. par Tama ([email protected]( [email protected])
Programmer en JAVA par Tama ([email protected]( [email protected]) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes
INITIATION AU LANGAGE JAVA
INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal
TP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
Compte Rendu d intégration d application
ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...
Les sites Internet dynamiques. contact : Patrick VINCENT [email protected]
Les sites Internet dynamiques contact : Patrick VINCENT [email protected] Qu est-ce qu un site Web? ensemble de pages multimédia (texte, images, son, vidéo, ) organisées autour d une page d accueil et
Projet Java EE Approfondi
EISTI Projet Java EE Approfondi Manuel d installation du framework Stripes Amaury Languillat, Yann Gonzalez, Arnaud Recher, Vincent Laronde, Anys Mechkar 10 Manuel d installation Téléchargement On part
A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT
DOCUMENTATION CAS A DESTINATION DES SERVICES TIERS Titre descriptif du document Référence du document REFO-DT-ENTV2-ServeurCAS-v1.2.docx Nom du fichier REFO-DT-ENTV2-ServeurCAS-v1.2.docx Version du document
Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.
Chapitre 7 Le mode de communication en connexion est, a priori, supporté par le protocole TCP. Ce protocole fournit une communication fiable; les données sont transmises comme chaînes d octets. Avant de
INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)
CS WEB Ch 1 Introduction I. INTRODUCTION... 1 A. INTERNET INTERCONNEXION DE RESEAUX... 1 B. LE «WEB» LA TOILE, INTERCONNEXION DE SITES WEB... 2 C. L URL : LOCALISER DES RESSOURCES SUR L INTERNET... 2 D.
La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 [email protected] 1
La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 [email protected] 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection
Utilisation de Jakarta Tomcat
ISI 1022 : Déploiement d applications Web Jean-Noël Sorenti. Année 2002/2003 Déploiement d application Web Utilisation de Jakarta Tomcat ISI 1022 : 1 ISI 1022 : Déploiement d applications Web Une application
Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)
Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07
TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet
TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur
Programmation Web. Madalina Croitoru IUT Montpellier
Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance
OpenPaaS Le réseau social d'entreprise
OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3
Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall
Internet DNS World Wide Web Mécanismes de base Exécution d'applications sur le web Divers Proxy, fire-wall 1 Les services usuels de l Internet Services principaux (applications) disponibles sur l Internet
Stockage du fichier dans une table mysql:
Stockage de fichiers dans des tables MYSQL avec PHP Rédacteur: Alain Messin CNRS UMS 2202 Admin06 30/06/2006 Le but de ce document est de donner les principes de manipulation de fichiers dans une table
4. SERVICES WEB REST 46
4. SERVICES WEB REST 46 REST REST acronyme de REpresentational State Transfert Concept introduit en 2000 dans la thèse de Roy FIELDING Est un style d architecture inspiré de l architecture WEB En 2010,
Attaques applicatives
Attaques applicatives Attaques applicatives Exploitation d une mauvaise programmation des applications Ne touche pas le serveur lui-même mais son utilisation/ configuration Surtout populaire pour les sites
Java - MySQL. Code: java-mysql
Java - MySQL java-mysql Java - MySQL Code: java-mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/java-mysql/java-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/java-mysql.pdf Auteurs
PDO : PHP Data Object 1/13
PDO : PHP Data Object 1/13 Tous ne sont que des extensions... Les fonstions mysql_* : API mysql Les fonctions mysqli_* aussi Il en est de même pour PDO PDO (avec le pilote PDO MySQL Driver et Extension
Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC
Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC Sommaire 1. Objectifs et intérêts... 2 2. Intégrer le driver SQL Server dans SJSAS 9... 2 2.1. Télécharger
Documentation CAS à destination des éditeurs
Documentation CAS à destination des éditeurs Sommaire Préambule... 1 Présentation de CAS...2 Intérêt... 2 Fonctionnement de base...2 Synoptique des échanges (1ère connexion)... 2 Synoptique des échanges
Architectures web/bases de données
Architectures web/bases de données I - Page web simple : HTML statique Le code HTML est le langage de base pour concevoir des pages destinées à être publiées sur le réseau Internet ou intranet. Ce n'est
Failles XSS : Principes, Catégories Démonstrations, Contre mesures
HERVÉ SCHAUER CONSULTANTS Cabinet de Consultants en Sécurité Informatique depuis 1989 Spécialisé sur Unix, Windows, TCP/IP et Internet Séminaire 15 ans HSC Failles XSS : Principes, Catégories Démonstrations,
Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068
HTTP/1.1 RFC 2068 1 Caractéristiques Niveau application Sans état Tout transfert de données Au dessus du protocole TCP Largement utilisé dans le World Wide Web Utilise les normes : URI (Uniform Resource
Aspects techniques : guide d interfaçage SSO
COURDECO Aspects techniques : guide d interfaçage SSO Septembre 2011 Cette annexe présente succinctement le système d'authentification unique (SSO : single sign on, authentification unique) utilisé dans
Devenez un véritable développeur web en 3 mois!
Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web
TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.
Université Paris 7 M2 II Protocole Internet TP3 Mail Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose. 1 Protocole SMTP 1. Le protocole SMTP est définit dans
Manuel d'installation
CyberMUT P@iement P@iement CIC P@iement OBC SERVICE SECURISE DE PAIEMENT INTERNET PAR CARTE BANCAIRE (Sécurisé par le protocole SSL) Manuel d'installation (Document 2/2) EURO Sp.Tech. 1.2.8 Octobre 2001
as Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
Tutoriel d installation de Hibernate avec Eclipse
Tutoriel d installation de Hibernate avec Eclipse Table des matières 1. Création de la base de données... 4 2. Installation de Hibernate Synchronizer... 5 3. Utilisation de Hibernate... 6 3.1 Création
Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application
Architecture Multi-Tier Traditionnellement une application informatique est un programme exécutable sur une machine qui représente la logique de traitement des données manipulées par l application. Ces
Auto-évaluation Programmation en Java
Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN
Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. [email protected]
. Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 [email protected] LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le
Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France
Développement d applications Internet et réseaux avec LabVIEW Alexandre STANURSKI National Instruments France Quelles sont les possibilités? Publication de données Génération de rapports et de documents
Programmation Internet en Java
Chapitre 8 Programmation Internet en Java Vous avez déjà utilisé Internet, le plus connu des inter-réseaux mondiaux d ordinateurs et quelques-uns de ses services, en particulier le web et le courrier électronique.
Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures
Jacques Lonchamp Conception d applications en Java/JEE Principes, patterns et architectures Illustration de couverture : Abstract triangle mosaic background karandaev - Fotolia.com Dunod, 2014 5 rue Laromiguière,
Serveurs de noms Protocoles HTTP et FTP
Nils Schaefer Théorie des réseaux (EC3a) Serveurs de noms Protocoles HTTP et FTP Théorie des réseaux (EC3a) Séance 7 Pourquoi DNS? Internet est une structure hiérarchique et arborescente de réseaux et
FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date : 2014-05-29
FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date : 2014-05-29 FOIRE AUX QUESTIONS Confidentiel Titre du document : Monetico
Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6
Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6 2 І O2S Intégration O2S dans un site Internet Ce document présente une description
Créer et partager des fichiers
Créer et partager des fichiers Le rôle Services de fichiers... 246 Les autorisations de fichiers NTFS... 255 Recherche de comptes d utilisateurs et d ordinateurs dans Active Directory... 262 Délégation
(structure des entêtes)
Aide mémoire HTTP (structure des entêtes) Fabrice HARROUET École Nationale d Ingénieurs de Brest http://www.enib.fr/~harrouet/ enib 1/10 Structure générale d une requête Requête HTTP méthode ressource
BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais
BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3
TP Programmation Java / JDBC / Oracle
TP Programmation Java / JDBC / Oracle 1. Connectivité avec une base de données Oracle au travers de l interface JDBC L interface de programmation (API) JDBC (Java DataBase Connectivity) est une librairie
Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6
Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 1 BERNIER François http://astronomie-astrophotographie.fr Table des matières Installation d un serveur HTTP (Hypertext Transfer
Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)
Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Module 1 : Programmer une application informatique Durée
Authentification et contrôle d'accès dans les applications web
Authentification et contrôle d'accès dans les applications web Quelques Rappels Objectifs : contrôler que seulement Certains utilisateurs Exécutent certaines opérations Sur certains objets Trois entités
Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)
Introduction PHP = Personal Home Pages ou PHP Hypertext Preprocessor Langage de script interprété (non compilé) Plan Avantages Fonctionnement interne Bases du langage Formulaires Envoi d un email Avantages
Hébergement de sites Web
Hébergement de Solutions complètes et évolutives pour l hébergement de sites Web dynamiques et de services Web sécurisés. Fonctionnalités Serveur Web Apache hautes performances Apache 1. et.0 1 avec prise
TP1. Outils Java Eléments de correction
c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par
Architectures client/serveur
Architectures client/serveur Master Technologies de l'internet 1 ère année Eric Cariou Université de Pau et des Pays de l'adour UFR Sciences Pau Département Informatique [email protected] 1 Tryptique
Java et les bases de données
Michel Bonjour http://cuiwww.unige.ch/~bonjour CENTRE UNIVERSITAIRE D INFORMATIQUE UNIVERSITE DE GENEVE Plan Introduction JDBC: API SQL pour Java - JDBC, Java, ODBC, SQL - Architecture, interfaces, exemples
Module http MMS AllMySMS.com Manuel d intégration
Module http MMS AllMySMS.com Manuel d intégration Objectif du document... 3 1 Envoi de MMS par requête http... 4 1.1 Format de la requête utilisée... 4 1.2 Arborescence et explication des balises du flux
Les services usuels de l Internet
Les services usuels de l Internet Services principaux (applications) disponibles sur l Internet Courrier électronique (mail) - protocole SMTP (Simple Mail Transfer Protocol) inclut maintenant tous types
Développement Logiciel
Développement Logiciel Éxamen session 1-2012-2013 (Vendedi 25 mai, 9h-11h) Seuls les documents liés directement au cours sont autorisés (comme dit sur le site) : sujets de TD, notes de cours, notes personnelles
Cours 14 Les fichiers
Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une
LES ACCES ODBC AVEC LE SYSTEME SAS
LES ACCES ODBC AVEC LE SYSTEME SAS I. Présentation II. SAS/ACCESS to ODBC III. Driver ODBC SAS IV. Driver ODBC SAS Universel V. Version 8 VI. Références I. Présentation Introduction ODBC, qui signifie
Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement
Guillaume HARRY l Contenu sous licence Creative Commons CC-BY-NC-ND Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement P. 2 1. Introduction 2.
RMI le langage Java XII-1 JMF
Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine
Programmation Web. Introduction
Programmation Web Introduction 1 Introduction 10 séances 1 h cours + 1h TD Notes : contrôle continu DS 1 TP : note de groupe : rapport + code source + démo TD : note personnelle (=0 si 2 absences non justifiées)
Outil de planification en ligne pour des créations de rendez-vous ou de sondage
Outil de planification en ligne pour des créations de rendez-vous ou de sondage Centre de Ressources Informatiques (C.R.I.) d'orléans Université d'orléans 4-6 rue Léonard de Vinci, 45061 Orléans Cedex
JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.
Analyste et développeur pendant plus de 10 ans, Thierry GROUSSARD s est ensuite orienté vers la formation et plus particulièrement dans le domaine du développement. Sa connaissance approfondie des besoins
Structure d un programme et Compilation Notions de classe et d objet Syntaxe
Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types
Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique
Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation
NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web
NFA016 : Introduction O. Pons, S. Rosmorduc Conservatoire National des Arts & Métiers Pour naviguer sur le Web, il faut : 1. Une connexion au réseau Réseau Connexion physique (câbles,sans fils, ) à des
Gestion distribuée (par sockets) de banque en Java
Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante
Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <[email protected]> Centrale Réseaux
Formation Webase 5 Ses secrets, de l architecture MVC à l application Web Adrien Grand Centrale Réseaux Sommaire 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un
Premiers Pas en Programmation Objet : les Classes et les Objets
Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.
