log 02 bases de données avancées rappels sur jsp / servlet philippe salvan...

27
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan [email protected]

Upload: thierri-pasquet

Post on 03-Apr-2015

129 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

LOG 02Bases de Données Avancées

Rappels sur JSP / Servlet

Philippe [email protected]

Page 2: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

Architecture 3-niveaux Servlets/JSP

HTTP

Serveur SQL

JDBC, ODBC, SQL Net

Ser

veu

r H

TT

P

JSP

/Ser

vlet

sB

ean

s

Po

ol D

B

HTTP

HTTP

Page 3: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

Servlets : Généralités

Qu’est-ce qu’une servlet ? Un composant (programme) d’un serveur

Serveur Web Serveur d’Application

Une class Java gérée par un Conteneur de Servlet Chargé dynamiquement par le serveur Générant dynamiquement des pages HTML/XML… Interagissant avec un client HTTP dans un mode requête/réponse

Equivalent à cgi-bin NS API, ISAPI Modules Apache

Page 4: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

Servlets : Généralités

Conteneur de Servlet Elément d’un serveur Web ou J2EE

Partie du serveur (module) Plug-in ajouté au serveur Le serveur en personne !

Protocoles supportés HTTP1.1, HTTPS

Page 5: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

Servlets : Généralités

WEB Browser(client)

HTTP

WEB ServerHTTP

request

response

Servlet Container

cgi-binServlet

API

jvm

jsp MyServlet

responserequest

Page 6: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

The javax.servlet Package

L’interface Servlet Abstraction pour toute implémentation de servlet Déclare toutes les méthodes permettant de gérer une servlet et de

communiquer avec le client Web Les méthodes sont implémentées par le développeur dans la classe

HttpServlet (ou une sous-classe)

Page 7: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

Servlet

L’interface Servlet

GenericServlet

HttpServlet

MaServlet

doGet(HttpServletRequest req, HttpServletResponse resp)

doPost(…, …)

doGet( HttpServletRequest req,HttpServletResponse resp)

doPost(…, …)

class

class

class

Page 8: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

Communication avec le Client Web

Lors de la communication avec le client Web, la Servlet reçoit deux objets au travers d’une méthode parmi deux Un objet ServletRequest qui encapsule la communication en provenance du

client (requête) Un objet ServletResponse qui encapsule la communication vers le client

(réponse)

Page 9: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

Communication avec le Client Web

Pour récupérer les requêtes de type GET Cas où le client envoie

Un paramètre au travers d’une URLhttp://myserver/aservlet?nom=foo

Un formulaire avec l’attribut METHOD positionné à GET<FORM

ACTION="http://myserver/aservlet"METHOD="GET" >

Méthode à utiliser :doGet(HttpRequest req, HttpRequest resp)

Page 10: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

Communication avec le Client Web

Pour récupérer les requêtes de type POST Cas où le client envoie

Un formulaire avec l’attribut METHOD positionné à POST<FORM

ACTION="http://myserver/aservlet" METHOD=« POST" >

Méthode à utiliser :doPost(HttpRequest req, HttpRequest resp)

Page 11: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

Communication avec le Client Web

Les deux méthodes peuvent exister simultanément

public void doGet( HttpServletRequest req, HttpServletResponse resp )

throws ServletException, IOException {… }

public void doPost( HttpServletRequest req, HttpServletResponse resp )

throws ServletException, IOException { doGet(req, resp); }

Page 12: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

Communication avec le Client Web

Renvoi du type MIME approprié

public void doGet( HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

resp.setContentType("text/html");PrintWriter out = resp.getWriter(); out.println("<html>"); out.println("<body>");

out.println("<head>"); out.println("<title>Page1</title>"); out.println("</head>"); out.println("<body>");

out.println("<h3>ESSAI1 </h3> <br> Hi"); out.println("</body>");

out.println("</html>"); }

Page 13: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

L’interface HttpServletResponse

Implémentation par le moteur de servlet

public void setContentType(java.lang.String type) Permet de typer l’objet de réponse adressé au client en précisant le type MIME du document

généré : "text/html", ….

public java.io.PrintWriter getWriter()throws java.io.IOException

Fournit un objet stream permettant de renseigner le document de sortie à générer

public void addCookie( Cookie cookie) Ajoute un cookie à la réponse

public void sendRedirect(java.lang.String URLlocation)throws java.io.IOException

Pour rediriger la réponse (la nouvelle URL est renvoyée au client)

Page 14: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

L’interface HttpServletRequest

Implémentation par le moteur de servlet Permet de typer l’objet de requête et d’obtenir des informations sur le client

public java.lang.String getParameter(java.lang.String name) Récupère un paramètre par son nom (null si inexistant)

public java.lang.String [] getParameterValues( java.lang.String name)

Pour récupérer un tableau de valeurs, pour un paramètre multi-valué

public java.lang.Enumeration getParameterNames() Pour récupérer tous les noms de paramètres adressés par le client

public Cookie [] getCookies() Pour récupérer tous les cookies accessibles dans le navigateur du client; null si aucun cookies

Page 15: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

L’interface HttpServletRequest

public HttpSession getSession() Récupère la session courante sous forme d’objet transient contenant les données de session; crée

la session si non encore existante

public HttpSession getSession(boolean create) Si create == true :

Crée la session si non encore existante

Si create == false : Renvoie null si l’objet de session n’existe pas

Page 16: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

L’interface HttpSession

Implémentation par le moteur de servlet Type d’un objet de session transient Permet de sauvegarder des données transientes tout au long des communciations avec une même

instance de navigateur client Les objets ainsi stockés son appelés « valeurs » L’implémentation utilise un ID de session, sauvegardé sur le poste client sous la forme d’un cookie

public void putValue(java.lang.String name, java.lang.Object value)

Ajoute le couple (name, value) aux informations de session; remplace l’ancienne valeur le cas échéant

public void removeValue(java.lang.String name) Supprime le couple (name, value) des informations de session

public java.lang.Object getValue(java.lang.String name) Obtient la veleur d’une information de session repérée par son nom Renvoie null si aucune information de ce nom

Page 17: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

JSP : Généralités

Extension de HTML/XML à l’aide de Tags propriétaires Permet d’ajouter du code Java et/ou Javascript directement dans du

HTML, et ainsi d’étendre des pages HTML statiques en pages dynamiques

Basé sur la technologie des Servlets Java

Le moteur de JSP est lui-même un servlet qui tranforme tout xxx.jsp en un servlet _xxx.java, puis le compile en un fichier _xxx.class

Page 18: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

JSP : Commentaires

Commentaires HTML (envoyés au client) Syntaxe JSP

<!-- comment [ <%= JavaExpression %> ] -->

Exemple<% page language="java" %>

<HTML>

<HEAD><TITLE> Page 1 </TITLE></HEAD>

<BODY>

<H2> Essais de commentaires No 1 </H2>

<!–- Author: P.Salvan, Date :

<%=(new java.util.Date()).toLocaleString()%>

-->

………

</BODY>

Page 19: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

JSP : Commentaires

Commentaires JSP (non envoyés au client) Syntaxe JSP

<%-- JSP comment --%>

Exemple<% page language="java" %>

<HTML>

<HEAD><TITLE> Page 2 </TITLE></HEAD>

<BODY>

<H2> Comment 2 </H2>

<%–- Auteur: P.Salvan, 28 oct 2008 --%>

………

</BODY>

Page 20: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

JSP : Déclarations

Déclarations Java (non adressées au client) = attributs de classe du servlet Syntaxe JSP

<%! déclarations %>

Exemple 1<% page language="java" %>

<%! Int n=3; %>

<%! String user; %>

<HTML>

<HEAD><TITLE> Page de commentaires 1 </TITLE></HEAD>

<BODY>

<H2> Essais de commentaires No 1 </H2>

<% user= "richard" %>

………

Alors que <%= user %> était pour la <%=n%> eme fois …….

</BODY>

Page 21: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

JSP : Declarations

Résultats<HTML>

<HEAD><TITLE> Page de commentaires 1 </TITLE></HEAD>

<BODY>

<H2> Essais de commentaires No 1 </H2>

………

Alors que richard était pour la 3eme fois ……

……

</BODY>

Page 22: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

JSP : Directives

Permet de contrôler le traitement d’une page JSP Syntaxe JSP : <%@ directive [ attribute= value] %>

Exemple<%@ include file= "path" %>

Permet d’insérer une page dans la page JSP courante avant d’être traitée (path désigne une URL relative)

Page 23: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

JSP : directives de page

<%@ page language = "java" %> Spécifie le langage

<%@ page import = "java.sql" %> Importe une librairie

<%@ page errorPage = "path" %> Renvoie une certaine page en cas d’erreur (exception non traitée). La page renvoyée

peut être une page JSP. La variable exception permet une gestion dynamique des exceptions

<%@ page isErroPage= "true" %> Simule une exception.

<%@ page buffer = "none" %> Le flux de sortie est renvoyé au fur et à mesure à ServletResponse

<%@ page buffer = « 12kb" %> Le flux de sortie est bufferisé avant d’être renvoyé à ServletResponse

Page 24: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

JSP : Actions

Expressions : <%= expression %> L’expression est évaluée et insérée dans le flux HTML produit Equivalent à : out.print(expression)

Scriptlets <% javacode %> Le code java est exécuté; toute instruction du type out.print(expression) insère du texte dans le flux

de sortie HTML. Exemple

<% String name =request.getParameter("hisname"); …. out.print(name) %>

Redirection <jsp:forward page="path"/> Le contrôle de mla génération est transféré à une autre page; l’éventuel document en cours de

génération est perdu.

Page 25: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

JSP : Création d’objets transients

<jsp:useBean id='objectname'

class= 'classname' scope= [page|request|session|application]> body</jsp:useBean>

Un objet transient est créé s’il n’existait pas déjà. Cet objet est accessible par son nom au sein du ‘scope’ choisi Une variable java nommée ‘objectname’ est déclarée dans la classe et

assignée à cette valeur.

Page 26: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

JSP : Accès aux objets transients

<jsp:getProperty

name='objectname'

property= 'attributname'

/>

Permet d’ajouter un nouvel attribut

<jsp:setProperty

name= 'objectname'

property= 'attributname'

value= value

/>

Met à jour la valeur de l’attribut

Page 27: LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet Philippe Salvan salvan@polytech.unice.fr salvan@polytech.unice.fr

JSP : Objets prédéfinis

HttpServletRequest request Représente la requête.

Permet l’accès aux paramètres passés par le client.

HttpServletResponse response Représente la réponse qui sera envoyée au client

HttpSession session Objet transient, géré par utilisation d’un cookie.

ServletContext application Objet transient, représente l’application qui contient la page JSP.

JspWriter out Permet d’écrire des informations dans la page HTML générée qui sera adressée au

client