Objectifs
- Connaitre les servlets
- Connaitre les paramètres de
doGet ().
Présentation
- Afin de développer une servlet fonctionnant avec le protocole HTTP, il suffit de créer une classe étendant HttpServlet (qui implémente elle-même l'interface Servlet).
- Une servlet est une classe qui hérite de la classe
HttpServlet et qui redéfinit les méthodes du protocole HTTP.
- Si la méthode utilisée est GET, il suffit de redéfinir la méthode :
public void doGet( HttpServletRequest request, HttpServletResponse response )
- Si la méthode utilisée est POST, il suffit de redéfinir la méthode :
public void doPost( HttpServletRequest request, HttpServletResponse response )
Environnement d’exécution
cas général
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ServletName extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException {
// lecture de la requête
// traitements
// envoi de la réponse
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException {
// lecture de la requête
// traitements
// envoi de la réponse
}
}
Exemple
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ServletName extends HttpServlet {
public void doGet(HttpServletRequest requete, HttpServletResponse reponse)
throws ServletException, IOExeption {
reponse.setContentType("text/html");
PrintWriter out = reponse.GetWriter();
out.println"");
out.println"Hello depuis une servlet
");
out.println"");
}
}
La méthode de servlet doGet
La méthode de servlet doGet
- C'est le code que vous avez compilé dans l'exemple précédent pour le servlet le plus simple possible:
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletName extends HttpServlet {
}
- Ce servlet est utile pour tester votre configuration, mais il ne fait rien. Pour faire quelque chose, un servlet doit remplacer la méthode
doGet().
- C'est ce que le serveur Web appellera lorsque le navigateur envoie une requête GET pour votre servlet. La méthode
doGet() prend deux paramètres, une shell vide de votre override ressemble à ceci:
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//...........
}
Les parties composantes la méthode de servlet doGet
- La méthode de servlet
doGet est composée de trois parties. Les deux premiers sont des paramètres et le troisième une liste.
- HttpServletRequest request
- Le premier paramètre de cette méthode ( HttpServletRequest request) est un objet représentant la requête effectuée par le navigateur.
- HttpServletResponse response
- Le deuxième paramètre ( HttpServletResponse response) est un objet représentant la réponse que le servlet construit pour renvoyer au navigateur. Vous allez définir les propriétés de cet objet, ou y écrire du HTML, dans toutes vos servlets.
- throws ServletException, IOException
- Après la liste des paramètres se trouve la clause throws de la méthode definition ( throws ServletException, IOException).
- Les servlets ont leurs propres exceptions, qu'ils peuvent lancer. En outre, il est possible de déclencher une IOException lors de l'écriture de HTML dans l'objet de réponse.
- Cette liste alerte le code serveur qui appelle
doGet() pour être prêt à intercepter ces types d'exceptions.
Écrire un servlet qui génère du HTML
- On notera les points suivants :
- il faut importer des classes spéciales pour les servlets :
import javax.servlet.*;
import javax.servlet.http.*;
- La bibliothèque
javax.servlet n'est pas toujours livrée en standard avec le jdk. Dans ce cas, on peut la récupérer directement sur le site d'Oracle.
- Une servlet dérive de la classe
HttpServlet
public class HelloWorld extends HttpServlet {
- Une requête GET faite à la servlet est traitée par la méthode doGet
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
- De même une requête POST faite à la servlet est traitée par la méthode
doPost
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
- L'objet HttpServletRequest request est l'objet qui nous donne accès à la requête faite par le client Web. La réponse de la servlet sera faite via l'objet
HttpServletResponse response
- L'objet
response nous permet de fixer les entêtes http qui seront envoyés au client. Par exemple l'entête Content-type: text/html est ici fixé par :
response.setContentType("text/html"); - Pour envoyer la réponse au client, la servlet utilise un flux de sortie que lui délivre l'objet response :
PrintWriter out = response.getWriter();
- Une foix ce flux de sortie obtenu, le code HTML est écrit dedans et donc envoyé au client :
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");

- La génération de HTML implique aussi peu que quatre lignes de code dans la méthode
doGet () de votre servlet .
- Définissez le type de contenu de votre réponse, pour indiquer au navigateur que vous retournerez du texte HTML en clair
- Obtenez un rédacteur de sortie dans lequel vous pouvez écrire du HTML, attaché à l'objet de réponse
- Écrivez du HTML à cet écrivain
- Fermer l'écrivain
Bibliographie
- Livre:Java EE Guide de développement d'applications web en Java de Jérôme LAFOSSE