Vous êtes sur la page 1sur 4

CHAPITRE : Servlet

La technologie Servlet est utilisée pour créer des applications web (côté serveur et génère des pages Web
dynamique), Elle reçoit une requête du client, elle effectue des traitements et renvoie la réponse.
La servlet est :
– Une API qui fournit de nombreuses interfaces et les classes.
– Technologie pour créer des applications WEB.
– Peut être invoquée plusieurs fois en même temps pour répondre à plusieurs requêtes simultanées.
– Elle peut jouer le rôle du contrôleur (se positionner au milieu entre un client léger (exemple “navigateur
web”) et la source de données).

Les différentes étapes pour créer un objet distant et l'appeler avec RMI

Mise en place

Architecture

 HttpServletRequest : cet objet contient la requête HTTP, et donne accès à toutes ses
informations, telles que les en-têtes (headers) et le corps de la requête.
 HttpServletResponse : cet objet initialise la réponse HTTP qui sera renvoyée au client, et
permet de la personnaliser, en initialisant par exemple les en-têtes et le corps

L'écriture d'une classe héritant de HttpServlet

Une servlet est en réalité une simple classe Java, qui a la particularité de permettre le traitement de requêtes
et la personnalisation de réponses. Pour faire simple, dans la très grande majorité des cas une servlet n'est
rien d'autre qu'une classe capable de recevoir une requête HTTP envoyée depuis le navigateur de l'utilisateur,
et de lui renvoyer une réponse HTTP.

La declaration de l’annotation @WebServlet est indispensable pour le mapping du servlet.

1. import java.io.IOException;
2.
3. import javax.servlet.ServletException;
4. import javax.servlet.http.HttpServlet;
5. import javax.servlet.http.HttpServletRequest;
6. import javax.servlet.http.HttpServletResponse;
7.
8. @WebServlet(name="Test" ,urlPatterns= {"/Test","/test"})
9. /** ligne obligatoire pour le mapping du servlet **/
10. /** le pattern est invoqué par le client **/
11. /** il correspond au servlet Test **/
12. public class Test extends HttpServlet {
13.
14. public void doGet( HttpServletRequest request, HttpServletResponse response )
15. throws ServletException, IOException{
16.
17. }
18. public void doPost( HttpServletRequest request, HttpServletResponse response )
19. throws ServletException, IOException{
20.
21. }
22. }

NB : les méthodes doGet et doPost .. levent les exceptions ServletException et IOException

La génération de la réponse

La servlet envoie sa réponse au client en utilisant un objet de type HttpServetResponse.


HttpServletResponse est une interface : il n'est pas possible d'instancier un tel objet mais le
moteur de servlets instancie un objet qui implémente cette interface et le passe en paramètre de
la méthode service.

Cette interface possède plusieurs méthodes pour mettre à jour l'en-tête http et la page HTML de
retour.

Méthode Rôle

void sendError (int) Envoie une erreur avec un code retour et un message par défaut

void sendError (int, String) Envoie une erreur avec un code retour et un message

void setContentType(String) Héritée de ServletResponse, cette méthode permet de préciser le type


MIME de la réponse

void setContentLength(int) Héritée de ServletResponse, cette méthode permet de préciser la


longueur de la réponse

ServletOutputStream getOutputStream() Héritée de ServletResponse, elle retourne un flux pour


l'envoi de la réponse

PrintWriter getWriter() Héritée de ServletResponse, elle retourne un flux pour l'envoi de la réponse

Avant de générer la réponse sous forme de page HTML, il faut indiquer dans l'en-tête du message
http, le type MIME du contenu du message. Ce type sera souvent « text/html » qui correspond à
une page HTML mais il peut aussi prendre d'autres valeurs en fonction de ce que retourne la
servlet (une image par exemple). La méthode à utiliser est setContentType().

1. import java.io.*;
2. import javax.servlet.*;
3. import javax.servlet.http.*;
4.
5. @WebServlet(name="MyServlet" ,urlPatterns= {"/Servlet4","/servlet4"})
6. public class TestServlet4 extends HttpServlet {
7.
8. public void doGet(HttpServletRequest req, HttpServletResponse res)
9. throws ServletException, IOException {
10. res.setContentType("text/html");
11. ServletOutputStream out = res.getOutputStream();
12. out.println("<HTML>\n");
13. out.println("<HEAD>\n");
14. out.println("<TITLE>Bonjour</TITLE>\n");
15. out.println("</HEAD>\n");
16. out.println("<BODY>\n");
17. out.println("<H1>Bonjour</H1>\n");
18. out.println("</BODY>\n");
19. out.println("</HTML>");
20. }
21. }

JSP Java Server Page


Définition
Les JSP permettent d'introduire du code Java dans des tags prédéfinis à l'intérieur d'une page HTML. La
technologie JSP mélange la puissance de Java côté serveur et la facilité de mise en page d'HTML côté client .

Les fichiers JSP possèdent par convention l'extension .jsp.

Concrètement, les JSP sont basées sur les servlets. Au premier appel de la page JSP, le moteur de JSP génère
et compile automatiquement la servlet qui permet la génération de la page web. Le code HTML est repris
intégralement dans la servlet. Le code Java est inséré dans la servlet.

La servlet générée est compilée et sauvegardée puis elle est exécutée. Les appels suivants de la JSP sont
beaucoup plus rapides car la servlet, conservée par le serveur, est directement exécutée.

1. <HTML>
2. <HEAD>
3. <TITLE>Test</TITLE>
4. </HEAD>
5. <BODY>
6. <p>Plusieurs tags JSP commencent par <% et se finissent par %></p>
7. </BODY>
8. </HTML>

Integrer du code java dans un jsp


Il existe trois types de tags :
 tags de directives : ils permettent de contrôler la structure de la servlet générée
o Exemple <%@ page import="java.util.*" %>
 tags de scripting: ils permettent d'insérer du code Java dans la servlet
o <% out.println("Bonjour");%>
 tags d'actions: ils facilitent l'utilisation de composants

Attention : Les noms des tags sont sensibles à la casse.


Exemple :

1. <%@ page import="java.util.*" %>


2. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
3. pageEncoding="ISO-8859-1"%>
4.
5. <!DOCTYPE html PUBLIC "-
//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
6. <html>
7. <head>
8. <meta charset="UTF-8" />
9. <title>Veuillez vous authentifier</title>
10. </head>
11. <body>
12. <h1>Veuillez vous authentifier</h1>
13. <h2><%= new Date() %></h2>
14. <% out.println(new Date()); %>
15.
16. <%
17. String login = request.getParameter( "txtLogin" );
18. String password = request.getParameter( "txtPassword" );
19. if ( login == null ) login = "";
20. if ( password == null ) password = "";
21.
22. if ( request.getMethod().equals( "POST" ) && login.equals( "bond" ) && password.equals
( "007" ) ) {
23. %>
24. <p>Welcome <%= login %></p>
25. <% } else { %>
26. <form method="post" action="Login.jsp">
27. <label for='txtLogin'>Login :</label>
28. <input id='txtLogin' name='txtLogin' type='text' value='<%= login %>' autofocus />
<br/>
29. <label for='txtPassword'>Password :</label>
30. <input name='txtPassword' type='password' value='<%= password %>' /> <br/>
31. <br/>
32. <input name='btnConnect' type='submit' value='Se connecter' /> <br/>
33. </form>
34. <% } %>
35. </body>
36. </html>

Vous aimerez peut-être aussi