Servlets. 2 H. Fauconnier M2-Internet Contenu dynamique Perl/cgi indépendant de la plateforme Extensions du serveur exemple ASP M2-Internet 3 H. Fauconnier.

Slides:



Advertisements
Présentations similaires
LES NOMBRES PREMIERS ET COMPOSÉS
Advertisements

[number 1-100].
Qualité du Premier Billot. 2 3 Défauts reliés à labattage.
Serveur d’applications JEE
DOM Document Object Model. Généralités Standard du W3C Parseur XML – Génération dun arbre dobjet – Construction totale de larbre DOM est spécifié en IDL.
SAX Simple API for XML. Généralités API non standard développé par les membres du forum XML-DEV Parseur XML – Orienté événement – Parsing dynamique SAX.
Servlets et JSP.
Architecture. Architecture Enjeux Les Enjeux Trouver une solution e-Business Accessible à partir d’un navigateur Web Accédant au système via un Portail.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Servlet JSP & © Philippe Poulard.
Programmation Web Les JSP.
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe

UV JSP JSP : Java Server Page
UV Servlets Les Servlets
JSP Java Server Pages. Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java propose trois solutions.
Servlet JAVA.
JSP 2 Crash Course Michel Buffa UNSA
PARTENARIAT ÉDUCATIF GRUNDTVIG PARTENARIAT ÉDUCATIF GRUNDTVIG REPERES COHESION CULTURELLE ET EXPANSION DES IDEES SUR LE TERRITOIRE EUROPEEN.
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
Common Gateway Interface
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
CGI, Servlet. Script CGI, Servlet Motivation Exécution dun traitement coté serveur web Traitement de formulaire Génération de pages html à la volée Ex.
A. Roussanaly - Université Nancy2 AXIS Master MIAGE/SID – Université NANCY2.
Connexion Web et Bases de Données : Les SERVLETS
Applications Internet
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
SERVLETS PRESENTATION
Développement Web en J2EE (Servlet & JSP)
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
LES NOMBRES PREMIERS ET COMPOSÉS
Section 3: Le Web, le http et le HTML1 La programmation du Web Du côté client Code léger qui sexécute sur lordinateur client Javascript, Applets, Flash,
Création d'un projet Web avec Netbeans
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Applications Internet Chapitre 7, Sections
Tournoi de Flyball Bouin-Plumoison 2008 Tournoi de Flyball
Notre calendrier français MARS 2014
JSTL JSP Standard Tag Library
Servlets.
JSP (Java Server Pages)
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
C'est pour bientôt.....
Veuillez trouver ci-joint
Michel Coletta - Journées PATTERNS Avril Grenoble1 STRUTS Introduction Technologies Java Architecture Développement Enseigner quoi ?
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
LA GESTION COLLABORATIVE DE PROJETS Grâce aux outils du Web /03/2011 Académie de Créteil - Nadine DUDRAGNE 1.
Initiation au web dynamique - TP
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
Utilisation avancée.
Marc Le BihanStruts 1.x1 Marc Le Bihan. Struts 1.x2 Plan I)Développement web par Servlets et JSP. II)Prise en charge de Struts. III)Principe de fonctionnement.
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Les servlets Java Les bases de la génération dynamique HTML en Java Sébastien Limet etGérard Rozsavolgyi Licence Professionnelle
Module I-C3 : Applications Web IUT R&T 2e année
CALENDRIER-PLAYBOY 2020.
LES PILES ET FILES.
Chapitre 2 Développement Web avec les technologies JSP/Servlets
Les Chiffres Prêts?
UV J2EE Module Java Expert
1 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB ARCHITECTURE WEB – COURS III
M2 – MIAGE/SID Servlet et session M2 – MIAGE/SID
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Les Java Server Pages Dans ce chapitre, nous allons :
IFT 6800 Atelier en Technologies d’information Chapitre 5 Introduction aux Servelets & JSP.
JAVA EE 5 Q.R. C’est quoi une servlets?
Technologie servlet Jean-Jacques LE COZ. J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail.
Transcription de la présentation:

Servlets

2 H. Fauconnier M2-Internet

Contenu dynamique Perl/cgi indépendant de la plateforme Extensions du serveur exemple ASP M2-Internet 3 H. Fauconnier

Contenu dynamique… Un serveur transmet des pages html… Comment le rendre dynamique? CGI et variantes Traiter des requêtes des clients: méthodes post et get: un requête un processus M2-Internet 4 H. Fauconnier

Contenu dynamique servlet Servlet: utiliser la machine virtuelle java du serveur M2-Internet 5 H. Fauconnier

Avec quoi utiliser les servlets? Serveur tomcat (java) dapache utilise les packages javax.servlet et javax.servlet.http peut sutiliser avec un serveur apache De nombreux autres serveurs Plug-in sur des serveurs M2-Internet 6 H. Fauconnier

Servlets Portabilité Puissance (java) Efficacité Sûreté (par lintermédiaire de la jvm) Extensibilité et flexibilité: Produire du html directement ou transformer du xml Uitlisation des JavaServer Pages (script qui génère des servlets) M2-Internet 7 H. Fauconnier

Servlet Rappel: les requêtes des clients (essentiellement) par post ou get Package javax.servlet classes et interfaces pour les servlets (indépendant du protocole) Package javax.servlet.http M2-Internet 8 H. Fauconnier

Servlet et java Pas de main() mais une méthode service() Version générique: Version http M2-Internet 9 H. Fauconnier

Exemple basique import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println(" "); out.println(" Bonjour "); out.println(" "); out.println(" Bonjour à tous "); out.println(" "); } M2-Internet 10 H. Fauconnier

Et maintenant comment faire? Avec Apache tomcat: Le code source de lapplet dans server_root/webapps/ROOT/WEB-INF/classes Compiler avec javax.servlet et javax.servlet.http dans le « classpath » (présents dans server_root/lib/servlet.jar ) Lancer le serveur tomcat (startup.sh dans server_root/bin) (le serveur écoute sur le port 8080 par défaut) Le client demande lurl: /servlet/HelloWorld M2-Internet 11 H. Fauconnier

Et pour traiter des données Une page: Introductions If you don't mind me asking, what is your name? M2-Internet 12 H. Fauconnier

server_root/webapps/ROOT. url: M2-Internet 13 H. Fauconnier

Traiter la réponse import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Hello extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); String name = req.getParameter("name"); out.println(" "); out.println(" Hello, " + name + " "); out.println(" "); out.println("Hello, " + name); out.println(" "); } public String getServletInfo() { return "Une servlet qui sait dire bonjour à quelquun" ; } M2-Internet 14 H. Fauconnier

Pour les autres requêtes Pour POST public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doGet(req, res); } Et M2-Internet 15 H. Fauconnier

Pour head import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Hello extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); if (req.getMethod().equals("HEAD")) return; PrintWriter out = res.getWriter(); String name = req.getParameter("name"); out.println(" "); out.println(" Hello, " + name + " "); out.println(" "); out.println("Hello, " + name); out.println(" "); } M2-Internet 16 H. Fauconnier

Web app Collection de servlets, de JSP, de document html, images etc… Les web apps sont dans des répertoires de server_root/webapps/ROOT Exemple dans le répertoire essai: index.html feedback.jsp images/banner.gif images/jumping.gif WEB-INF/web.xml WEB-INF/lib/bhawk4j.jar WEB-INF/classes/MyServlet.class WEB-INF/classes/com/mycorp/frontend/CorpServlet.class WEB-INF/classes/com/mycorp/frontend/SupportClass.class M2-Internet 17 H. Fauconnier

WEB-INF Contient les informations de configuration de la webapp WEB-INF/classes contient les classes WEB-INF/lib les bibliothèques web.xml est le descripteur de déploiement M2-Internet 18 H. Fauconnier

Web.xml Exemple: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" " hi HelloWorld M2-Internet 19 H. Fauconnier

suite <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" " hi HelloWorld hi /hello.html M2-Internet 20 H. Fauconnier

Plus précisément… H. Fauconnier M2-Internet 21

généralités Une servlet reçoit une requête soit d'une autre servlet soit d'un navigateur et fournit une réponse vers le navigateur, soit effectue un forward() vers une autre servlet. Session: activité mise en œuvre par le même utilisateur Application: toute l'activité. Nom + attributs 22 H. Fauconnier M2-Internet

Classes 23 H. Fauconnier M2-Internet

Servlet Package javax.servlet.httpjavax.servlet.http HttpServlet gestion des servlet pour recevoir des requêtes et envoyer des réponsesHttpServlet HttpServletRequest interface des requêtesHttpServletRequest HttpServletResponse interface des réponsesHttpServletResponse HttpSession gestion de la sessionHttpSession ServletContext gestion du contexte de l'applicationServletContext RequestDispatcher lancement de servlet (forward())RequestDispatcher 24 H. Fauconnier M2-Internet

HttpServlet protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException void init() void destroy() ServletContext getServletContext() 25 H. Fauconnier M2-Internet

httpServletRequest String getParameter(nom) valeur d'un paramètre de formulaire String[] getParamterValues(nom) idem pour plusieurs valeurs Enumeration getParameterNames() nom de tous les paramètres du formulaire void setAttribute(nom, objet) Object getAttribute(nom) Enumeration getAttributeNames() void removeAttribute() 26 H. Fauconnier M2-Internet

HttpServletRequestHttpServletRequest suite Cookie[] getCookies() HttpSession getSession() RequestDispatcher getRequestDispatcher (path) 27 H. Fauconnier M2-Internet

HttpServletResponse PrintWriter getWriter() pour obtenir où écrire le texte void setContentType("text/html") Void addCookie(cookie) 28 H. Fauconnier M2-Internet

RequestDispatcher Permet de transmettre le contrôle à une autre servlet forward(): le flux de sortie de la servlet est annulé, seul le flux de sortie de la servlet destination du forward est pris en compte getRequestDispatcher("index.html").forward() Include() : inclusion dynamique du flux de la servlet destination 29 H. Fauconnier M2-Internet

Quelques exemples de servlet import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" "); out.println(" Hello World! "); out.println(" "); out.println(" Hello World! "); out.println(" "); } 30 H. Fauconnier M2-Internet

requete import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class RequestInfo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" "); out.println(" Request Information Example "); out.println(" "); out.println(" Request Information Example "); //… 31 H. Fauconnier M2-Internet

suite out.println("Method: " + request.getMethod()); out.println("Request URI: " + request.getRequestURI()); out.println("Protocol: " + request.getProtocol()); out.println("PathInfo: " + request.getPathInfo()); out.println("Remote Address: " + request.getRemoteAddr()); out.println(" "); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } 32 H. Fauconnier M2-Internet

formulaire import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class RequestParamExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("GET Request. No Form Data Posted"); } //… 33 H. Fauconnier M2-Internet

Suite public void doPost(HttpServletRequest request, HttpServletResponse res) throws IOException, ServletException { Enumeration e = request.getParameterNames(); PrintWriter out = res.getWriter (); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = request.getParameter(name); out.println(name + " = " + value); } 34 H. Fauconnier M2-Internet

header import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class RequestHeaderExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); Enumeration e = request.getHeaderNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = request.getHeader(name); out.println(name + " = " + value); } 35 H. Fauconnier M2-Internet

Cookies public class CookieExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); Cookie[] cookies = request.getCookies(); for (int i = 0; i < cookies.length; i++) { Cookie c = cookies[i]; String name = c.getName(); String value = c.getValue(); out.println(name + " = " + value); } String name = request.getParameter("cookieName"); if (name != null && name.length() > 0) { String value = request.getParameter("cookieValue"); Cookie c = new Cookie(name, value); response.addCookie(c); } 36 H. Fauconnier M2-Internet

Session public class SessionExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(true); Date created = new Date(session.getCreationTime()); Date accessed = new Date(session.getLastAccessedTime()); out.println("ID " + session.getId()); out.println("Created: " + created); out.println("Last Accessed: " + accessed); String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } //… 37 H. Fauconnier M2-Internet

Suite // print session contents Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println(name + " = " + value); } 38 H. Fauconnier M2-Internet

JSP Script pour générer des servlets Des données statiques (HTML) Des directives JSP exemple: Eléments de script exemple: Actions JSP Exemple: 39 H. Fauconnier M2-Internet

Un exemple (netbeans) index.jsp un formulaire simple index.jsp reponse.jsp la réponse reponse.jsp La javabean pour le traitement: TraiteNom.java TraiteNom.java 40 H. Fauconnier M2-Internet

Remarque… Netbeans ou eclipse permettent de gérer les servlets et les jsp aisément… M2-Internet 41 H. Fauconnier