Développement de Servlet
Développement de Servlet
-
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
-
Exemple
-
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:
- 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: -
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 :
- 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
- Une requête GET faite à la servlet est traitée par la méthode doGet
- De même une requête POST faite à la servlet est traitée par la méthode
doPost
- 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 : - Pour envoyer la réponse au client, la servlet utilise un flux de sortie que lui délivre l’objet response :
- Une foix ce flux de sortie obtenu, le code HTML est écrit dedans et donc envoyé au client :
- 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
- Livre:Java EE Guide de développement d’applications web en Java de Jérôme LAFOSSE
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 } }
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""); } }
import javax.servlet.*; import javax.servlet.http.*; public class ServletName extends HttpServlet { }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //........... }
import javax.servlet.*; import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
response.setContentType("text/html");
PrintWriter out = response.getWriter();
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>");
Bibliographie