Vous êtes sur la page 1sur 27

Applets & Servlets

05/12/11 1
Une applet java
Une applet est une application devant tre place dans un
fichier HTML
Il existe une balise HTML permettant d'intgrer une
applet dans une page HTML :
<APPLET CODE= "PremierApplet.class"
WIDTH= "200" HEIGHT= "100" >
</ APPLET >

PremierApplet.class est une ressource qui se trouve sur


le serveur et correspond la compilation dun fichier
dfinissant une sous-classe de la classe
javax.swing.JApplet
05/12/11 2
Applet : technologie internet ct
client
Applet :

code java (.class) stock sur un serveur web

tlcharg de ce serveur sur le poste client quand le


client (un navigateur) demande la page HTML contenant
la balise APPLET rfrant au code inscrit dans lattribut
CODE

excut ensuite sur le client de faon autonome par la


machine virtuelle java incluse dans le navigateur
05/12/11 3
Comment a marche ?
Le navigateur, quand il rencontre la balise APPLET,
vrifie quil na pas ce code dj dans le rpertoire
cache de sa machine
Si ce nest pas le cas, il envoie une nouvelle requte au
serveur lui demandant le code indiqu de cette applet
En rponse, le serveur retourne au client le programme
java inscrit dans le paramtre code
Le code de lapplet est donc tlcharg du serveur dans
le rpertoire cache de l'ordinateur client
Puis excut par le chargeur dapplet sur la machine
client
05/12/11 4
Pour spcifier le rpertoire de lapplet

Par dfaut, le code de lapplet est cherch dans le rpertoire


contenant le fichier HTML
S'il est ailleurs, on donne le rpertoire dans lequel il est situ
grce lattribut CODEBASE
<APPLET CODE= "PremierApplet.class"
CODEBASE= "Exemples/"
WIDTH= "200" HEIGHT= "100" >
</ APPLET >
Si cest une adresse relative : recherche partir du rpertoire
contenant le fichier HTML
Si cest une adresse absolue, on peut tlcharger lapplet de
nimporte o, voire mme dun autre serveur web que celui
qui contient la page HTML
(CODEBASE=http://AutreServeur/)
05/12/11 5
Programmation dune Applet
Une applet ne peut donc tre excute que si elle est
intgre dans une page HTML et elle s'excute sous le
contrle d'un navigateur
Une applet java fait toujours intervenir au moins deux
fichiers
un fichier java compil : prog.class
un fichier HTML (prog.html) qui contient la balise
APPLET avec la rfrence au code prog.class
Pour la mise au point d'une applet, on peut utiliser loutil
appletviewer
05/12/11 6
Programmation dune Applet
driver la classe java.applet.Applet ou javax.swing.JApplet
Les mthodes contrlant lexcution :
init() appele la cration de lapplet
start() appele lorsque la page web est (re)visite
stop() appele lorsque le navigateur quitte la page web
destroy() appele lors de la destruction de lapplet (fin de
session du navigateur)
cycle : init() (start() stop())* destroy()

05/12/11 7
Autres attributs de la balise APPLET :
PARAM pour passer des informations
une applet

Pour dfinir des paramtres : attribut PARAM


<APPLET
CODE= "AppletAvecParam.class"
WIDTH= "200" HEIGHT= "100" >
<PARAM NAME= "nom" VALUE= " toto Soufi">
</ APPLET >
Pour rcuprer des paramtres : appeler dans la mthode
init de l'applet la mthode de JApplet :
String getParameter(String name)

05/12/11 8
Communication avec lutilisateur

La classe JApplet hrite de la classe Container de


AWT (Abstract Window Toolkit), on peut donc
mettre dans une applet tous les composants habituels
dinterface graphique ( boutons, listes, cases
cocher, zones de texte ...).

Toutefois, pour dvidentes raisons de scurit, une


applet ne peut tablir de connexion sur le rseau
avec dautres machines que celle qui lhberge ni
utiliser de fichier ailleurs que sur cette mme
machine.
05/12/11 9
Les composants de linterface
L'applet (hrite de JApplet) contient en tant que
proprits les noms des composants dinterface
(boutons, zones de texte ou de dessin ...) dont on
souhaite disposer.
Il convient de les initialiser et de dfinir leur
disposition. Pour cela, on doit :
- crer les objets associs (new)
- les initialiser par leurs constructeurs ou par tout autre
moyen disponible
- les placer
- leur associer les actions lies aux vnements quils
peuvent recevoir
05/12/11 10
Exemple
import java.applet.*;
import javax.swing.*;
import java.awt.*;
public class AppletBonjourParam extends JApplet {
private JLabel label;
public void init() {
getContentPane().setBackground(Color.yellow);
String nomPers= this.getParameter("nom");
if (nomPers==null)
label = new JLabel("Bonjour", JLabel.CENTER);
else label = new JLabel("Bonjour "+nomPers ,JLabel.CENTER);
label.setFont(new Font("Serif", Font.BOLD, 40));
label.setForeground(Color.blue);
add (label);
}
}
05/12/11 11
<html>
<head> Applets en Java </head>
<body>
<P>
<applet code="AppletBonjourParam" height="400"
width="400">
<Param name = "nom" value = "le monde">
</applet>
</P>
</body>
</html>

05/12/11 12
Une servlet java

Programme crit en Java fonctionnant du cot


serveur
Permet de grer des requtes HTTP et de fournir
au client une rponse HTTP
Une Servlet sexcute dans un moteur de
Servlet ou conteneur de Servlet permettant
dtablir le lien entre la Servlet et le serveur Web
Pour la cration dapplications dynamiques

05/12/11 13
Apache et Tomcat

Apache (http://www.apache.org ) est un des serveurs


Web les plus employs : il est capable de recevoir des
requtes http et de leur rpondre

Tomcat (http://tomcat.apache.org ) est le complment


dApache qui permet ce serveur Web de dclencher des
lments de code Java, donc des servlets

05/12/11 14
Fonctionnement
Lorsqu'une servlet est appele par un client, la mthode
service() est excute. Celle-ci est le principal point
d'entre de toute servlet et accepte deux objets en
paramtres :

l'objet ServletRequest encapsulant la requte du client,


c'est--dire qu'il contient l'ensemble des paramtres
passs la servlet (informations sur l'environnement du
client, URL demande, ...)

l'objet ServletResponse permettant de renvoyer une


rponse au client (envoyer des informations au
navigateur)
05/12/11 15
Fonctionnement
Afin de dvelopper une servlet fonctionnant avec le
protocole HTTP, il suffit de crer une classe tendant
HttpServlet (qui implmente elle-mme l'interface
Servlet).

La classe HttpServlet (drivant de GenericServlet)


permet de fournir une implmentation de l'interface
Servlet spcifique HTTP. La classe HttpServlet
surcharge la mthode service en lisant la mthode HTTP
utilise par le client, puis en redirigeant la requte vers
une mthode approprie.
05/12/11 16
Dvelopper une servlet
Les deux principales mthodes du protocole HTTP tant
GET et POST, il suffit de surcharger la mthode
adquate afin de traiter la requte; Ainsi donc :
Si la mthode utilise est GET, il suffit de redfinir la
mthode public void doGet (HttpServletRequest req,
HttpServletResponse res);
Si la mthode utilise est POST, il suffit de redfinir la
mthode public void doPost(HttpServletRequest req,
HttpServletResponse res);

05/12/11 17
Cycle de vie dune servlet
Une servlet suit le cycle de vie suivant :
1. la servlet est cre puis initialise (init())
cette mthode nest appele par le serveur quune seule
fois lors du chargement
2. le service du client est implment (service())
cette mthode est appele automatiquement par le
serveur chaque requte de client
3. la servlet est dtruite (destroy())
cette mthode nest appele par le serveur quune seule
fois la fin
permet de librer des ressources

05/12/11 18
Exemple : La servlet de base
import javax.servlet.*;
import java.io.*;
public class MaServlet extends GenericServlet {
public void init(ServletConfig config) throws ServletException{
super.init(config);
}
public void service (ServletRequest req, ServletResponse res)
throws ServletException, IOException{
res.setContentType("text/html");
PrintWriter out=res.getWriter();
out.println("<html>");
out.println("<head><title>Salut le monde</title></head>");
out.println("<body><h1>Bonjour le monde</h1></body>");
out.println("<html>");
}
}
05/12/11 19
Exemple : Une servlet http
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MaPremiereServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Etape 1. Spcifier le type du contenu de la rponse
response.setContentType("text/html");
// Etape 2. Rcupre le PrintWriter pour envoyer des donnes au client
PrintWriter out = response.getWriter();
// Etape 3. Envoyer linformation au client
out.println("<html>");
out.println("<head><title>Bonjour</title></head>");
out.println("<body>");
out.println("<h1> Bonjour tous </h1>");
out.println(Il est : " + new java.util.Date());
out.println("</body></html>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {doGet(request, response);}
}
05/12/11 20
Les servlets : conclusion
Objets programms en java

Grs par un conteneur

Travaillent sur des flux (out)

Sur des objets Request, Response


==> Pour simplifier le rle du dveloppeur il existe les jsp.

05/12/11 21
05/12/11 22
Les JSP : Java Server Pages

Contrairement une page HTML statique,


le contenu affich par une page JSP est
obtenu par programmation

Le contenu affich change selon le


contexte
05/12/11 23
JSP : comment a marche?

Concrtement :
toute la page HTML est convertie en une
servlet
cette servlet est traite par le moteur
Java intgr au serveur Web (technologie
des servlets) et retourne la page HTML
construite
05/12/11 24
JSP servlet
Servlet = du code Java contenant de l'HTML

JSP = une page HTML contenant du code Java

Concrtement avec les JSP :


les parties statiques de la page HTML sont crites en
HTML
les parties dynamiques de la page HTML sont crites en
Java

05/12/11 25
Les lments JSP
Les directives
<%@ <directive> {attribute="value"} %>
ex : <%@ page import="java.util.*" %>
Le code
Les dclarations
<%! <declaration> %>
ex : <%! String name=new String("Bob"); %> /* Code static */
Les expressions
<%= <expression> %>
ex : <%= getName() %> /* pas de ; */
Les scriptlets
<% <source de la scriptlet> %>
ex : <% out.println("Hello Bob"); %> /* Code d'excution */

05/12/11 26
JSP : exemple
fichier date.jsp :
<html><head><title> Obtenu par une JSP
</title></head><body>
<h3>Bonjour de ma part </h3> <hr>
La date courante est : <%= new java.util.Date() %>
</body>
</html>
Trait quand le client demande lURL de la JSP :
http://serveurWeb:<port>/.../date.jsp

05/12/11 27

Vous aimerez peut-être aussi