Télécharger la présentation
1
SERVLETS PRESENTATION
Une servlet est utilisée pour créer des pages web dynamiques Classe java s’exécutant à l’intérieur d’un moteur de servlets. Elle reçoit une requête http et répond en renvoyant une page html L’API de développement est constitué de deux packages : Javax.servlet.* et Javax.servlet.http.* Le cas normal d’utilisation est de sous classer la classe HttpServlet import javax.servlet.*; import javax.servlet.http.*; public class Servlet1 extends HttpServlet { }
2
LA CLASSE HttpServlet Classe abstraite obligeant à redéfinir les méthodes doGet et/ou doPost doGet répondra une requête de type GET d’un navigateur (pour transférer une petite qunatité d’infos transmises dans l’url) doPost répondra à une requête de type POST d’un navigateur (pour transférer une grande quantité d’infos dans le corps de la requête) Ces deux méthodes répondent à la requête http d’un navigateur La méthode init() : appelée une seule fois au moment ou la servlet est chargée dans le conteneur de servlet – utilisée souvent pour initialiser des variables globales de la classe. La méthode destroy() : appelée avant que la servlet soit déchargée du conteneur – utilisée pour faire le ménage d’éventuelles ressources allouées.
3
UNE SERVLET MINIMUM import javax.servlet.*;
import javax.servlet.http.*; import java.io.*; import java.util.*; public class Servlet1 extends HttpServlet { public void init() throws ServletException { // chargement } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // requête GET public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // requête POST public void destroy() { //déchargement
4
LES OBJETS REQUEST & RESPONSE
l’objet request : sert à récupèrer ce qui vient du client (noms et valeurs des paramètres en provenance d’un formulaire) l’objet response : sert à retourner des informations au client (ouverture d’un flux d’écriture vers le client)
5
UTILISATION DE L’OBJET RESPONSE
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class Servlet1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(“text/html”); // type de doc renvoyé PrintWriter out = response.getWriter(); // flux de sortie vers client // construction dynamique de la page HTML à renvoyer out.println("<html>"); out.println("<body BGCOLOR=\"#ffffc0\">"); out.println("<p>Un GET RECU : VOICI LA REPONSE</p>"); out.println("</body></html>"); }
6
DEPLOIEMENT D’UNE SERVLET SOUS TOMCAT
Ex : web.xml <web-app> <servlet> <servlet-name>maServlet</servlet-name> <servlet-class>monPack.maServlet</servlet-class> (sans .class) </servlet> <servlet-mapping> <url-pattern>/maServlet</url-pattern> </servlet-mapping> </web-app> 1) Copier le fichier .class de la servlet avec son dossier de package qui la contient dans WEB_INF/classe Ex :WEB_INF/classes/monPack/maServlet.class 2) Editer le fichier descripteur de déploiement web.xml qui se trouve dans WEB-INF . -Indiquer le nom de la servlet -Son package et le nom de sa classe -Indiquer une url qui nous permettra de l’appeler dans une requête http : url-pattern
7
APPEL D’ UNE SERVLET Dans l’url du navigateur
dans server.xml>/<url-pattern dans web.xml> Dans server.xml… <Context docbase= ‘c:\didier\monSite’ path= ‘/monSite’></Context> Dans web.xml… <url-pattern>/maServlet</url-pattern>
8
APPEL D’ UNE SERVLET Dans un lien href
<a href=“ /monSite/maServlet">Cliquez ici pour appeler maServlet </a> « /path/url-pattern » L’appel d’une servlet dans un lien href ou dans l’url du navigateur appelle la méthode doGet et non doPost, la méthode doPost ne peut être appelée qu’à partir d’un formulaire.
9
APPEL D’ UNE SERVLET Dans un formulaire
<FORM METHOD=POST ACTION=“ /monSite/maServlet “> … </FORM>
10
TD1 – SERVLET Créer un nouveau site qui contiendra une seule page html. Cette page contiendra un lien (HREF), qui appellera une servlet La servlet renverra une page html qui affichera « BONJOUR MONDE ! » Deux grandes étapes : Créer le site et le déployer sous Tomcat Créer la servlet et la déployer sous Tomcat
11
Refaire le TD précédent en utilisant l’environnement NetBeans
TD2 – SERVLET Refaire le TD précédent en utilisant l’environnement NetBeans
12
LES SERVLETS ET LES THREADS
Illustration du partage de données : public class Compteur ….{ private int cptPartagé=0; public void doGet(…){ int cptPrivé=0; cptPrivé++; synchronized(this) { cptPartagé++; } LES SERVLETS ET LES THREADS Les servlets sont multi – threads Il y a une seule instance de servlet pour « n » clients Les clients se partagent le meme code Un thread est créé pour chaque méthode doGet ou doPost appelée Tout ce qui est dans le corps de la classe de la servlet, variables globales etc…, est partagé entre tout les clients. Tout ce qui est déclaré dans les méthodes doGet ou doPost sont des données privées pour le thread
13
L’ OBJET REQUEST – getParameter(np)
request.getParameter(nom_parametre); Récupère la valeur du paramètre dont le nom est passé en argument. EX : String valeur=request.getParameter(Pays); <html><body> <form action="/servlet/Servlet1" method=GET> <input type=text name=Pays/> <input type=submit/> </form> </body></html>
14
BONJOUR « prénom » « nom »
TD3 - SERVLET En utilisant Netbeans, créer un site qui contient un formulaire permettant la saisie d’un numéro de client. Vérifier que le numéro ne contient que des chiffres avant de l’envoyer au serveur. Créer une servlet qui va récupérer dans une BD les valeurs des nom et prénom du client à partir de son numéro, puis retourner au client: BONJOUR « prénom » « nom »
15
L’ OBJET REQUEST - getParameterValues(np)
- request.getParameterValues(nom_parametre); Récupère toutes les valeurs du paramètre passé en argument (choix multiples dans liste). EX : String[] valeurs=request.getParameterValues(liste); <html><body> <form name=‘f1’ action=‘/site/servlet’ method="post"> <select name=‘liste’ size="3" multiple> <option value="un">un</option> <option value="deux">deux</option> <option value="trois">trois</option> </select> </form></body></html>
16
L’ OBJET REQUEST - getParameterNames()
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(« text/html »); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body BGCOLOR=\"#ffffc0\">"); Enumeration e=request.getParameterNames(); While( e.hasMoreElements()){ String param=(String)e.nextElement(); out.println(param+"="+request.getParameter(param)+”<br>”); } out.println("</body></html>"); out.close(); L’ OBJET REQUEST - getParameterNames() - request.getParameterNames(); Récupère la liste des nom de paramètres dans un objet de type Enumeration. Ex : Enumeration e=request.getParameterNames(); <html><body> <form action="/servlet/Servlet1" method=GET> <input type=text name=nom/> <input type=text name=prenom/> <input type=submit/> </form> </body></html>
17
TP - SERVLET Réaliser un site web sous Tomcat qui permet de saisir des fiches clients: · - Un formulaire de saisie de fiche client On forçera la saisie des noms et prénoms en majuscule · - Une servlet qui récupère les infos client et les enregistre dans une table client d’une BD. · - Une servlet qui lit toutes les fiches client et les retourne sous la forme d’un tableau html.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.