Académique Documents
Professionnel Documents
Culture Documents
Du JSP à la servlet
07/01/2019 -A.Y- 2
Cycles de vie d’une servlet
07/01/2019 -A.Y- 3
Du JSP à la servlet
Serveur web
07/01/2019 -A.Y- 4
Première servlet
Client HttpServlet
6:Réponse HTTP 5:Réponse HTTP 4:DoGet()
07/01/2019 -A.Y- 5
Première servlet
import java.io.*;
import javax.servlet.*;
public class HelloWorld extends GenericServlet {
public void service(ServletRequest requete, ServletResponse
reponse) throws IOException, ServletException{
reponse.setContentType("text/html");
PrintWriter out = reponse.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h1>Hello World</h1>");
out.println("</body>");
out.println("</html>");
out.flush();
}
}
07/01/2019 -A.Y- 6
Première servlet (méthodologie)
07/01/2019 -A.Y- 7
Première servlet (méthodologie)
WEB-INF/web.xml: Fichier de déploiement pour le paramétrage
des servlets.
07/01/2019 -A.Y- 8
Programmation des servlets
07/01/2019 -A.Y- 9
Cycle de vie d'une servlet
init()
Créée Initialisée
service()
destroy()
Détruite En service
init(): méthode appelée une seule fois par le serveur dans la vie d’une
servlet et juste après son initialisation.
service(ServletRequest, ServletResponse): appelée par le serveur
chaque fois que la servlet est invoquée. Chaque requête du client
déclenche une seule exécution de cette méthode.
destroy(): appelée une seule fois par le serveur dans la vie d’une
servlet, lors de sa destruction. Elle permet de libérer certaines
ressources (fichiers, bases de données,…)
07/01/2019 -A.Y- 11
Servlet générique
Package: javax.servlet
07/01/2019 -A.Y- 12
HTTP Servlet
doHead, doTrace,…
Package: javax.servlet.http
07/01/2019 -A.Y- 13
Programmation de http servlet
07/01/2019 -A.Y- 14
Programmation de http servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class DateServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse rep) throws
ServletException, IOException {
PrintWriter out = rep.getWriter();
out.println("<html><head><title>Bonjour</title></head>");
out.println("<body><h1> Bonjour à tous </h1>");
out.println("<h2>Il est : "+new java.util.Date().toLocaleString()+"</h2>");
out.println("</body></html>");
rep.setHeader("refresh","1");
}
public void doPost(HttpServletRequest req, HttpServletResponse rep) throws
ServletException, IOException {
doGet(req, rep);
}
}
07/01/2019 -A.Y- 15
L’interface HttpServletRequest
07/01/2019 -A.Y- 16
L’interface HttpServletRequest
Autres méthodes:
String getRemoteAddr() int getServerPort()
String getMethod() String getServerName()
String getPathInfo() String getRequestURL()
String getQueryString()
String getRequestURI()
String getServletPath()
String getContextPath()
Cookie[] getCookies()
HttpSession getSession(boolean)
boolean isRequestedSessionIdValid()
Enumeration getHeaderNames()
L’interface HttpServletResponse
07/01/2019 -A.Y- 18
L’interface HttpServletResponse
Autres méthodes:
void sendRedirect(String).
void setStatus()
void setHeader()
void setContentLength()
void addCookie(Cookie)
07/01/2019 -A.Y- 19
La session HttpSession
07/01/2019 -A.Y- 20
La session HttpSession
07/01/2019 -A.Y- 21
La session HttpSession
Exemple:
HttpSession session = req.getSession(true);
// la session est récupérée ou ouverte s’elle n’existait pas déjà.
/** Ou bien
*HttpSession session = req.getSession(true);
*la session est récupérée ou null s’elle n’existait pas déjà.
*/
if(session.getLastAccessedTime() - session.getCreationTime()
>5*60*1000 ) {
session.invalidate();
}
07/01/2019 -A.Y- 22
Récupérer les entêtes HTTP d'un client web
07/01/2019 -A.Y- 23
L’initialisation de la servlet
Récupération des paramètres d ’initialisation: WEB-INF/web.xml
<servlet>
<servlet-name>UneServlet</servlet-name>
<servlet-class>UneServlet</servlet-class>
<init-param>
<param-name>langue</param-name>
<param-value>Arabe</param-value>
</init-param>
<init-param>
<param-name>pays</param-name>
<param-value>Maroc</param-value>
</init-param>
</servlet>
07/01/2019 -A.Y- 24
Récupérer les paramètres d’initialisation
07/01/2019 -A.Y- 26
Collaboration servlets/JSP
[ServletRequest].setAttribute(String nom, Object obj): lorsqu'une
servlet ou page JSP passe une requête à une autre servlet ou page
JSP, elle a en général besoin de passer à celle-ci d'autres
informations que la seule requête du client, informations issues de
son propre travail sur la requête.
[ServletRequest].getAttribute(String attribut): permet de récupérer
les valeurs des attributs d'une requête.
07/01/2019 -A.Y- 27
Communication Applet - Servlet
Exemple d’application:
Développement d’une applet pour l’authentification.
Développement d’un servlet qui communique avec l’applet et
vérifie d’authentification du client.
07/01/2019 -A.Y- 28
Communication Applet - Servlet
Cet exemple est constitué de trois éléments: une page html, une applet et
une servlet.
- La page html contient l’applet dont l’interface graphique se compose de:
- 2 zones de texte pour saisir le nom de l’utilisateur et sont mot de passe.
- 2 boutons, un pour invoquer la servlet et l’autre pour la réinitialisation des
éléments de la fenêtre.
- La servlet définie 4 méthodes:
- init qui instancie la connexion à la base de données. Ainsi la servlet utilise
une seule connexion, initialisée une seule fois pour toute au moment de
chargement de la servlet.
- doGet qui exécute la requête récupérée et qui renvoie le résultat issu de la
base de données dans un flux de sortie.
- doPost qui redirige la requête vers la méthode doGet
- destroy qui finie et libère la connexion lors du déchargement de la servlet
en mémoire.
07/01/2019 -A.Y- 29
07/01/2019 -A.Y- 30