EISTI Examen Java EE h Aucun document autoris NOM PRENOM PLACE GROUPE TD Q cycle de vie dun servlet points Donnez le diagramme dtat reprsentant le cycle de vie dun servlet dans son conteneur. Q redirection vs. forward points Un servlet peut appeler une JSP avec une redirection response.sendRedirectquotmyJSP.jspquot ou avec un forward RequestDispatcher jspresquest.getRequestDispatcherquotmyJSP.jspquot jsp.forwardrequest,response Expliquez puis montrez sur un exemple concret la diffrence entre lutilisation de ces deux mcanismes vous pourrez vous appuyer sur des diagrammes de squence faisant intervenir le client, le servlet et la JSP, pour tayer votre rponse. Forward Cest une action effectue de manire interne la servlet dans son conteneur. Le navigateur du client nest jamais mis au courant des changements effectus. Ainsi lURL du navigateur ne change pas. Si le navigateur client actualise la page, la requte initiale sera rpte, avec lURL originale. Redirect Cest un processus en tapes. Aprs avoir reu la premire requte, le Servlet envoi au navigateur client une demande de redirection vers une autre URL quil effectue. Si le navigateur client actualise la page, la requte initiale ne sera pas rpte. Au contraire cest la nouvelle URL qui sera recharge. Les Objets/Beans placs dans le request Scope initial ne seront plus disponible dans la seconde requte. La redirection est toujours plus lente quun forward, car il ncessite une seconde requte du navigateur client. Exemple Les Forward doivent tre utiliss si lopration peut tre rpte lorsque lon recharge la page. Sinon il faut utiliser un redirect. Par exemple, si lopration modifie une base de donne, alors il faut utiliser un redirect. Q QCM points Entourez la ou les bonnes rponses seulement la lettre. Quelles sont les mthodes utilises par un servlet pour grer les donnes envoyes par un client via un formulaire HTML A. HttpServlet.doHead B. HttpServlet.doPost C. HttpServlet.doForm D. ServletRequest.doGet E. ServletRequest.doPost F. ServletRequest.doForm Comment un dveloppeur gretil la mthode service de son servlet, lorsque ce dernier tend HttpServlet A. Il redfinit la mthode service. B. Il redfinit une mthode doXXX par ex. goGet ou doPost. C. Il appelle la mthode service depuis une mthode doXXX par ex. doGet ou doPost. D. Il appelle la mthode service depuis la mthode init. E. Il na rien faire Sur quels types dobjets peuton utiliser les mthodes getAttribute et setAttribute A. HttpSession B. ServletRequest C. ServletResponse D. ServletContext E. ServletConfig F. SessionConfig Soit le code suivant lthtmlgt ltbodygt Le chiffre deviner est lt Math.randomgt lt/bodygt lt/htmlgt Quaffiche cette JSP la suite de Le chiffre deviner est A. Un nombre alatoire. B. lt Math.random gt C. out.printlnquotMath.random quot D. Elle naffiche rien il manque le dans gt pas de dans ce tag. Parmi les balises suivantes quelles sont celles que lon peut utiliser dans une JSP pour afficher la valeur dune expression Java sur la sortie A. lt B. lt C. lt D. lt E. lt gt gt lt out.println gt gt gt gt Note Il manque les sur la balise fermante. Soit le code de la JSP test.jsp suivant lthtmlgt ltheadgtlttitlegtA Comment Testlt/titlegtlt/headgt ltbodygt lthgtA Test of Commentslt/hgt lt This is Html Hidden Comment gt lt This is JSP Hidden Comment gt lt/bodygt lt/htmlgt A lexcution de test.jsp, devinez quel sera la sortie correspondante A. La ligne sera insre dans la rponse mais pas la ligne . B. Les lignes et seront insres dans la rponse. C. Les lignes et ne seront pas insres dans la rponse. D. La ligne sera insre dans la rponse mais pas la ligne . Quelles sontest les EL valables qui permettent de retourner la property nom du bean Etudiant ayant pour scope la session A. Etudiant.nom B. Etudiant.getNom C. sessionScope.Etudiantquotnomquot D. sessionquotEtudiantquot.nom Quaffiche le code suivant ltcforEach stepquotquot beginquotquot endquotquot varStatusquotstatusquotgt ltcif testquotstatus.firstquotgtlt/cifgt status.index, ltcif testquotstatus.lastquotgtlt/cifgt lt/cforEachgt A. ,,,, B. ,,, C. ,,,, D. ,, E. ,,,,,, Q MVC points On considre lapplication MVC que nous avons tudie en cours AREL V .. Cette application permet lutilisateur de slectionner une promotion pour afficher la liste des tudiants correspondante. Voici les fichiers sources de cette application index.html ltDOCTYPE html PUBLIC quot//WC//DTD HTML . Transitional//ENquot quothttp//www.w.org/TR/html/loose.dtdquotgt lthtmlgt ltheadgt ltmeta httpequivquotContentTypequot contentquottext/html charsetISOquotgt lttitlegtAREL V.lt/titlegt lt/headgt ltbodygt lth alignquotcenterquotgtAREL Lcole virtuelle de lEISTIlt/hgt ltform methodquotGETquot actionquotselectpromoquotgtSlectionner la promo afficher ltselect namequotpromoquot sizequotquotgt ltoptiongtinglt/optiongt ltoptiongtinglt/optiongt lt/selectgtltinput typequotSUBMITquot /gtlt/formgt lt/bodygt lt/htmlgt arel/SelectPromo.java package arel import java.io.IOException import java.util.List import import import import javax.servlet.RequestDispatcher javax.servlet.ServletException javax.servlet.http.HttpServletRequest javax.servlet.http.HttpServletResponse public class SelectPromo extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet protected void doGetHttpServletRequest request, HttpServletResponse response throws ServletException, IOException String promoName request.getParameterquotpromoquot Promo promo new Promo ListltStringgt result promo.getPromopromoName request.setAttributequotpromoquot, result RequestDispatcher view request.getRequestDispatcherquotresult.jspquot view.forwardrequest, response arel/Promo.java package arel import java.util.ArrayList import java.util.List public class Promo public ListltStringgt getPromoString promo ListltStringgt promoList new ArrayListltStringgt if promo.equalsquotingquot promoList.addquotDonald Duckquot promoList.addquotMinnie Mousequot promoList.addquotPlutoquot //... else if promo.equalsquotingquot promoList.addquotMickey Mousequot promoList.addquotDaisy Duckquot promoList.addquotGoofyquot //... else return null return promoList result.jsp lt page importquotjava.util.quotgt lt page languagequotjavaquot contentTypequottext/html charsetISOquot pageEncodingquotISOquotgt ltDOCTYPE html PUBLIC quot//WC//DTD HTML . Transitional//ENquot quothttp//www.w.org/TR/html/loose.dtdquotgt lthtmlgt ltheadgt ltmeta httpequivquotContentTypequot contentquottext/html charsetISOquotgt lttitlegtResultlt/titlegt lt/headgt ltbodygt lt ListltStringgt promoList ListltStringgtrequest.getAttributequotpromoquot Iterator it promoList.iterator whileit.hasNext out.printquotltbr /gtquot it.next gt lt/bodygt lt/htmlgt Compltez le descripteur de dploiement suivant en fonction des liens et autres nommages exprims dans les fichiers sources donns cidessus. web.xml ltxml versionquot.quot encodingquotUTFquotgt ltwebapp xmlnsxsiquothttp//www.w.org//XMLSchemainstancequot xmlnsquothttp//java.sun.com/xml/ns/javaeequot xmlnswebquothttp//java.sun.com/xml/ns/javaee/webapp.xsdquot xsischemaLocationquothttp//java.sun.com/xml/ns/javaee http//java.sun.com/xml/ns/javaee/webapp.xsdquot idquotWebAppIDquot versionquot.quotgt ltdisplaynamegtMVClt/displaynamegt ltservletgt ltservletnamegt X lt/servletnamegt ltservletclassgt arel.SelectPromo lt/servletclassgt lt/servletgt ltservletmappinggt ltservletnamegt X lturlpatterngt lt/servletnamegt lt/urlpatterngt /selectpromo lt/servletmappinggt lt/webappgt Avec X quelconque, mais identique pour les ltservletname /gt On dsire modifier lapplication pour afficher la liste rsultat dans la mme page que celle du formulaire initial. Loption choisie est de remplacer le formulaire HTML index.html par une JSP index.jsp servant la fois de formulaire de dpart et de vue dans lapplication MVC pour afficher le rsultat en dessous du formulaire. index.jsp lt page importquotjava.util.quot gt lt page languagequotjavaquot contentTypequottext/html charsetISOquot pageEncodingquotISOquotgt ltDOCTYPE html PUBLIC quot//WC//DTD HTML . Transitional//ENquot quothttp//www.w.org/TR/html/loose.dtdquotgt lthtmlgt ltheadgt ltmeta httpequivquotContentTypequot contentquottext/html charsetISOquotgt lttitlegtAREL V.lt/titlegt lt/headgt ltbodygt lth alignquotcenterquotgtAREL Lcole virtuelle de lEISTIlt/hgt ltform methodquotGETquot actionquotselectpromoquotgtSlectionner la promo afficher ltselect namequotpromoquot sizequotquotgt ltoptiongtinglt/optiongt ltoptiongtinglt/optiongt lt/selectgtltinput typequotSUBMITquot /gtlt/formgt lthgtListe des tudiants lt/hgt lt ListltStringgt promoList ListltStringgtrequest.getAttributequotpromoquot Iterator it promoList.iterator whileit.hasNext out.printquotltbr /gtquot it.next gt lt/bodygt lt/htmlgt Que fautil modifier pour que index.jsp devienne la vue dans notre application MVC Donnez les fichiers et les nouvelles instructions arel/SelectPromo.java RequestDispatcher view request.getRequestDispatcherquotindex.jspquot Lorsque lon tente daccder la JSP index.jsp, une erreur survient. Trouvez cette erreur et corrigez la. Au premier lancement d index.jsp, lattribut promo nexiste pas dans le requestScope. Il faut donc tester sil nest pas null. possibilits pour corriger cette erreur Ajouter un test de nullit lt ListltStringgt promoList ListltStringgtrequest.getAttributequotpromoquot ifpromoListnull Iterator it promoList.iterator whileit.hasNext out.printquotltbr /gtquot it.next gt Ou bien avec les JSTL Ajouter dans les dclarations de la JSP lt taglib prefixquotcquot uriquothttp//java.sun.com/jsp/jstl/corequot gt Puis modifier le scriptlet lt gt en ltcforEach varquotXquot itemsquotpromoquotgt ltbr /gtX lt/cforEachgt Avec X quelconque. LEL promo peut aussi sexprimer requestScope.promo ou bien requestScopequotpromoquot