Une servlet Java peut être définie comme suit (adresse).
Définition :Programme Java qui utilise des modules supplémentaires
figurant dans l'API Java, qui s'exécute dynamiquement sur le serveur
Web, et permet l'extension des fonctions du serveur. On peut les comparer
aux CGI écrit en C, C++ ou PERL.
Note(s) : En fait, les servlets sont aux serveurs ce que les applets
sont aux navigateurs. Ainsi, de clients, les applets deviennent aussi
serveurs. Un servlet peut être chargé automatiquement lors du démarrage
du serveur Web ou lors de la première requête du client. Une fois chargés,
les servlets restent actifs dans l'attente d'autres requêtes du client.
Grâce à la création d'un environnement de prestation de services requête/réponse
via le Web, les servlets permettent l'extension des fonctions du serveur.
Lorsqu'un client envoie une requête au serveur, ce dernier transmet au
servlet les informations relatives à la requête. Par la suite, le servlet
crée une réponse que le serveur renvoie au client. Lors de la création
de la réponse, le servlet peut utiliser toutes les fonctions du langage
Java ou communiquer avec des ressources externes (fichiers, bases de données
ou applications écrites en Java ou dans d'autres langages).
Le package JSDK (Java
Servlet Development Kit) peut être téléchargé
chez Javasoft à cette adresse.
C'est grâce à lui qu'on pourra compiler nos servlets.
La deuxième chose dont on a besoin, c'est un serveur Web
qui est capable d'interpréter les servlets, c'est à dire
un serveur Web qui dispose d'une machine virtuelle. Je préconise
un serveur Apache (www.apache.org)
associé au composant JServ (java.apache.org)
pour les servlets. Il est gratuit et marche vraiment bien. Sinon, Un mini
serveur web est fourni avec le JSDK pour réaliser des tests.
Une des utilisations des servlets
est de les coupler à JDBC pour interroger une base de données
en fonction d'une requête émise par un formulaire HTML. Les
résultats obtenus peuvent être retourné aux clients
à l'aide d'une mise en page HTML. On peut donc créer
dynamiquement des pages Web avec les servlet.
Le cycle de vie d'une servlet
Une servlet possède principalement 3 méthodes. Une méthode
init(), une méthode service() et une méthode
destroy().
Init()
Quand une servlet est chargée pour la première fois la méthode
init() est invoquée.
C'est ici qu'on ouvrira des fichiers ou qu'on etablira des connexions
à des bases de données pour gagner du temps à chaque
exécution de la servlet. En effet, alors qu'un CGI créera
une connexion à un SGBD à chaque exécution, une servlets
n'en créera qu'une une fois pour toute au départ.
Service()
La méthode service()
est le coeur de la servlet. C'est cette méthode qui est invoquée
à chaque exécution de la servlet. La méthode lit
la requête et produit la réponse à l'aide de ses deux
paramètres : ServletRequest et ServletResponse.
Quelques méthodes de ServletRequest :
java.lang.String getParameter(java.lang.String
name)
java.lang.String getRemoteAddr()
int getContentLength()
Quelques méthodes de ServletResponse :
void setContentType(java.lang.String
type)
java.io.PrintWriter getWriter()
ServletOutputStream getOutputStream()
Destroy()
La méthode destroy()
est invoquée lorsque la servlet est descendue du serveur pour fermer
proprement les différentes sources ouvertes dans le init().
Voici un exemple simple
de servlet :
import java.io.*;
import javax.servlet.*;
public SampleServlet implements Servlet {
private ServletConfig config;
public void init (ServletConfig config)
throws ServletException {
this.config = config;
}
public void destroy() {} // do nothing
public ServletConfig getServletConfig() {
return config;
}
public String getServletInfo() {
return "A Simple Servlet";
}
public void service (ServletRequest req,
ServletResponse res
) throws ServletException, IOException {
res.setContentType( "text/html" );
PrintWriter out = res.getWriter();
out.println( "<html>" );
out.println( "<head> );
out.println( "<title>A Sample Servlet</title>" );
out.println( "</head>" );
out.println( "<body>" );
out.println( "<h1>A Sample Servlet</h1>" );
out.println( "</body>" );
out.println( "</html>" );
out.close();
}
}
Ecrire une servlet qui attaque une base Oracle en JDBC et restitue l'information
récupérée sous forme d'une page Web.
|