Les servlets Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
Qu’est ce qu'une servlet Une servlet est un petit programme Java utilisé pour étendre les fonctionnalités d'un serveur Web C'est : Une application côté serveur Utilisée pour générer du contenu dynamique Chargée dynamiquement quand elle est demandée Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
Model d’accès des servlets Serveur Web client Servlet Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
Avantages / Inconvénients Indépendance issue de la plateforme java Modèle de sécurité issu du serveur Web Support dans la plupart des serveurs Web Exploite toute l'API Java (+ protocoles) Problèmes Apprendre java Certains serveurs Web supportent mal la charge Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
L'interface Servlet public interface Servlet { public void destroy(); public ServletConfig getServletConfig(); public String getServletInfo(); public void init(ServletConfig) throws ServletException; public void service(ServletRequest, ServletResponse) throws ServletException, IOException; } javax.servlet.GenericServlet javax.servlet.http.HttpServlet Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
Cycle de vie de la Servlet Instanciation et Chargement ? Initialisation ? ? Requêtes client Active Classe de la servlet ? ? Destruction Garbage Collection Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
La servlet de base ! import javax.servlet.*; import javax.servlet.http.*; public class MaServlet extends HttpServlet { public void service (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{ res.setContentType("text/html"); ServletOutputStream out=res.getOutputStream(); out.println("<html>"); out.println("<head><title>Salut le monde</title></head>"); out.println("<body><h1>Bonjour le monde</h1></body>"); } Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
SA est un serveur Web Gestion des sessions Accès aux BD par JDBC Hébergement multi IP Configuration et Gestion Accès sécurisé au services Logging et Rapports Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
JSP : Java Server Pages Technologie définie pour aider à l'écriture de pages Web Elle génère une page vers le client est portable (Write Once, Run EveryWhere) mets en avant l'approche par composants permet la mise en œuvre facile des sites dynamiques Equivalents : ASP, PHP, PSP Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
Les JSP Séparent la présentation du contenu Une page JSP contient moules (squelettes) contenant le texte fixe action contenues dans des directives et des scriplets Requête Servlet Client Réponse Page JSP Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
La JSP de base ! <html> <H1>Information sur la requête</H1> Requête <%= request.getMethod() %> <BR> URI Demandée : <%= request.getRequestURI() %> Protocol demandé : <%= request.getProtocol() %> </html> Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
Les tags Jsp Expression Scriplet Declarations Action <%= new Date().toString() %> Scriplet <%for (int i=0; i<10 ; i++> { %> Declarations <%! String retourneCinq() { return ("Cinq");} Action <jsp:useBean…> <jsp:include…> Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
L'utilisation d'un objet package essai; public class MaClasse { String val=15; public String getVal(){return this.val;} public void setVal(String val){this.val=val;} } <html><body><h2>Un test d'objet</h2> <jsp:usebean id="uneclasse" class="essai.MaClasse" scope="session" /> <% uneClasse.setValue("toto"); %> <blink>Mon objet a pour valeur <%= uneclasse.getVal() %> </body></html> Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr
L'utilisation d'un EJB <html><head><title> <%= pagetitle %> </title></head> <h2><font color=#DB1260><%= pagetitle %></font></h2> <%@ page import="edt.matiere.*"%> <%!String pagetitle = "JSP : Fibonnacci";%> <%try { ctx = getInitialContext(); homeFib = (FibonnacciHome) ctx.lookup("fibonnaci"); uneSuite=homeFib.create(); out.println("fib(7)="+uneSuite.getFibonacciNumber(7)); }catch(Exception e){e.printStackTrace(); } %> </body></html> Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr