Cours 7
DONNÉES ET CONNAISSANCES POUR LE WEB
2/22
Plan
1 Introduction, UTF8 et XML
2 XPath
3 XPath (suite)
4 XSLT
5 DOM
6 XPath et XSLT en Java
7 JSP/Services Web REST
7.1 Principe
7.2 Contrôleur : HttpServlet
7.3 Services Web REST
3/22
Programmation Web coté serveur
(rappel) génération de pagesweb dynamiques (
i.e.
dont le contenu est calculé en
fonction de la requête HTTP). Plusieurs choix de langage côté serveur.
PHP (déploiement de site très simple, langage merdique particulier)
Python, Ruby (manque de standardisation, plusieurs framework concurrents,
problèmes de performances)
ASP .NET (microsoft)
Java/JSP (langage raisonnable, déploiement complexe)
4/22
JSP
JSP (Java Server Pages) est un
framework
permettant de créer des pages Web
dynamiques en Java. Il fait partie de la suite Java EE (Entreprise Edition). Rappel :
Java Card (Java pour cartes de crédit, très peu de choses, pas de GC)
Java ME (Micro Edition, pour les périphériques embarqués, mobiles, etc.)
Java SE (Standard Edition, java « normal »)
Java EE (Entreprise Edition, SE + packages pour JSP, et autres)
5/22
Architecture
Nécessite un serveur Web particulier. Le standard est Apache Tomcat.
Le programmeur écrit des fichiers .jsp, contenant du HTML + du java dans des
balises spéciales
(Le programmeur déploie les fichiers sur le serveur Tomcat)
L'utilisateur navigue vers une page foo.jsp
Le serveur Tomcat génère fooServlet.class
La classe est chargée dans la JVM java et (sa métode principale) est exécutée,
produisant une page HTML
La page HTML est envoyée au navigateur
6/22
Exemple
<%@ page contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html>
<html>
<head><title>test JSP</title>
<meta charset="UTF-8"/>
</head>
<body>
Page created on
<%
java.util.Date d = new java.util.Date();
out.println(d.toString());
%>
</body>
</html>
7/22
balises spéciales JSP
JSP introduit 4 balises spéciales qui sont interprétée par le serveur Tomcat.
Balise de configuration : <%@ … %> (options HTML, import de packages, …)
Balise de déclarations : <%! … %> (déclarer des attributs et des méthodes)
Balises d'instructions : <% … %> (permet de mettre une suite d'instructions)
Balises d'expressions : <%= %> (permet de mettre une expression dont le résultat
est converti en String)
8/22
Exemple complet
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.Date" %>
<!DOCTYPE html>
<html>
<head><title>test JSP</title>
<meta charset="UTF-8"/>
</head>
<%!
Date maDate;
Date maMethode() {
return new Date();
}
%>
<body>
<%
maDate = maMethode();
%>
Page created on <%= maDate %>
</body>
</html>
9/22
Objets par défaut
Le code placé dans les balises spéciales a accès à certains objets
automatiquement déclarés. Parmi les principaux :
out de type JspWriter (comme System.out mais écrit dans la page Web générée
session de type HttpSession : permet de définir et récupérer des variables de
sessions (i.e. Objets que l'on stocke « globalement » et que l'on peut récupérer d'une
page à l'autre)
request de type HttpServletRequest : permet de récupérer les paramètres passés
dans une requête HTTP (par exemple les valeurs d'un formulaire)
response de type HttpServletResponse : permet de spécialiser la réponse envoyée
au client (entêtes HTTP, cookies, …)
10/22
Classe JspWriter
Fonctionne comme System.out (on peut donc appeler .print/.println) mais
correspond a un endroit particulier de la page HTML
11/22
Classe HttpSession
Propose plusieurs méthodes :
//Renvoie la valeur stockée sous le nom name
Object getAttribute(String name)
//Stocke l'objet value sous le nom name
void setAttribute(String name, Object value)
//Supprime l'association name value
void removeAttribute(String name)
//Définit la durée (en secondes) d'inactivité d'une session
void setMaxInactiveInterval(int interval)
//Renvoie la durée (en secondes) d'inactivité d'une session
int getMaxInactiveInterval()
//Renvoie la date (en mili-secondes depuis EPOCH) de dernière utilisation
long getLastAccessedTime()
//Détruit la session en cours
void invalidate()
12/22
Classe HttpServletRequest
Propose plusieurs méthodes :
//Récupère la valeur des cookies:
String[] getCookies()
//Récupère les paramètres passés par un formulaire :
Map<String, String[]> getParameterMap()
//Récupère un paramètre particulier
String[] getParameter(String name)
13/22
Classe HttpServletResponse
Propose plusieurs méthodes :
//Renvoie une erreur HTTP (404 par exemple)
void sendError(int code)
//Ajoute un cookie au site
void addCookie(Cookie c)
//Effectue une redirection temporaire
void sendRedirect(String url)
//Récupère le writer vers la sortie renvoyée au client
PrintWriter getWriter()
//Définit le Content-Type de la réponse
void setContentType(String ct)
//Définit l'encodage de la réponse
void setCharacterEncoding(String ct)
Les deux derniers doivent êtres appelés avant getWriter !
14/22
Classe Cookie
Propose plusieurs méthodes :
//Constructeur
Cookie(String name, String value)
//Expiration en secondes
void setMaxAge(int a)
15/22
Plan
1 Introduction, UTF8 et XML
2 XPath
3 XPath (suite)
4 XSLT
5 DOM
6 XPath et XSLT en Java
7 JSP/Services Web REST
7.1 Principe
7.2 Contrôleur : HttpServlet
7.3 Services Web REST
16/22
HttpServlet
La classe HttpServlet permet d'implémenter le contrôleur du modèle MVC. En
effet il est considéré comme inélégant et contraire au modèle MVC de faire
d'exécuter de la logique d'application dans des pages JSP (qui représentent la
vue). On préfère l'implémenter dans des classes auxiliaires reliées au site par un
Servlet.
17/22
Le contrôleur
On annote la classe Java avec l'URL à laquelle elle correspond. @WebServlet("Foo")
connecte le servlet avec l'URL http://site.com/Foo.
Pour chaque type de requête HTTP (POST, GET, …) redéfinit une méthode doXXX (où
XXX vaut Get, Post, …)
Les requêtes ne peuvent lever que des ServletException ou IOException
Ces méthodes prennent en argument une request (la requête HTTP que qui nous a
amené sur ce servlet) et un response (qui sera envoyé au client
18/22
Plan
1 Introduction, UTF8 et XML
2 XPath
3 XPath (suite)
4 XSLT
5 DOM
6 XPath et XSLT en Java
7 JSP/Services Web REST
7.1 Principe
7.2 Contrôleur : HttpServlet
7.3 Services Web REST
19/22
Service Web
Un service Web est un moyen pour une application d'exposer son API au moyen du
protocole HTTP
Il existe plusieurs méthodologies :
Web API : utilise différents standards tels que WSDL (fichier XML décrivant le
service), SOAP (protocole avec des messages XML au dessus de HTTP), UDDI (annuaire
de service), …
REST : Representational State Transfer. Approche plus simple basée sur des URL et
les méthodes HTTP (GET, POST, PUT, DELETE)
On utilisera des services Web REST
20/22
REST
Un service Web REST se caractérise de manière suivante :
Une ou plusieurs URL servant de point d'entrée
Un comportement implémenté pour les requêtes GET, POST, PUT, DELETE.
Les contraintes de méthode sont les suivantes
GET : le traitement du serveur doit être sans effet (readonly)
PUT/DELETE : le traîtement doit être idempotent (l'état exposé par le système ne
doit pas varier après un appel à la méthode avec un paramètre donné)
Le contenu renvoyé par le service Web peut être quelconque, mais on privilégiera
le XML dans ce cours
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !