TD N° 1 Q1.Citer 3 méthodes HTTP autres que GET et POST : PUT : ajout ou remplace une ressource sur le serveur DELETE : suppression d’une ressource du serveur HEAD : Cette méthode permet d’envoyer des informations d’en-tête d’une ressource, sans demander le corps de la ressource. Q2.Quel est le nom du Header HTTP qui identifie le navigateur du client : User-agent : Chaîne donnant des informations sur le client, comme le nom et la version du navigateur, du système d'exploitation Q3.Quelle est la superclasse d'un Filtre HTTP : Un filtre http n’a pas de superclasse mais il doit implémenter l’interface javax.servlet.Filter Q4. Quelle est la superclasse d'un "custom tag" : javax.servlet.jsp.tagext.TagSupport Q5.Quel est l’étendu par défaut (le scope) d’un JavaBean référencé par une page JSP ? Page ( <jsp:usebean id="name" class="paquetage.class" scope="page|request|session|application"/>) Q6.Citer 4 autres classes du framework Struts autres que ActionServlet et Action : Q7.Citer deux tags lib que JSF 1.2 offre : <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %> <%@ taglib prefix="h" uri=http://java.sun.com/jsf/html %> Q8.Quelle est la différence entre un forward et un redirect d’une requête dans le cadre des applications web Java Forward : La requête ne meurt pas et redirigé vers une autres page (le navigateur ne constate rien et l’URL demeure intact.) Redirect : la requete meurt et uen nouvelle requete est générer (Les objets placés dans le scope du request original ne sont pas disponible dans le second request) Q9. Comment déclare-t-on les datasources des bases de données utilisées par une application web ? Q10. Q11. Où déclare-t-on les contraintes de sécurité d'accès aux ressources d'un site : Au niveau du fichier web.xml par la balise <security-constraint> Les noms d'objets implicites JSTL sont ils les mêmes que ceux de JSP ? NON Choisir 4 objets implicites JSP et donner leur équivalent JSTL : JSP JSTL request requestScope session sessionScope application applicationScope context pageContext Page : 1/1 Q12. Expliquer l'effet des deux instructions suivantes : 1. HttpSession maSession = request.getSession(true); o Rend la session courante ou une nouvelle session qui sera créé. 2. HttpSession maSession = request.getSession(false); o Rend la session courante ou null. Par defaut : false. Q13. Pourquoi, à votre avis, le standard J2EE n’oblige pas à déclarer les pages JSP dans le descripteur de déploiement web.xml alors qu’il l’exige avec les Servlets ? JSP et Servlet répondent à deux modèles de composantes differentes : o La Servlet doit être instancié au démarrage de l’application o La page JSP on peut l’appeler au cours de l’application. Soit la capture suivante d’un dialogue http provenant d’un client et allant vers un serveur ? Client -> Serveur GET /IWD6I/personnes$.startup HTTP/1.1 Accept: application/vnd.ms-excel, application/msword, application/vnd.mspowerpoint, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* Accept-Language: fr Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0) Host: insat.rnu.tn:80 Connection: Keep-Alive Q14. Ce pacquet de données HTTP contient-il un Header ? : OUI Contient-il un Body ? NON Quelle est la méthode Java (API des servlets) qui permet de récupérer le User-Agent ? : Request.getHeader("User-Agent") Quelle est la méthode Java (API des servlets) qui permet de récupérer le Host ? : ?????????????, Q15. Donner la séquence d'instructions JSP permettant de récupérer les informations provenant d'un champ de formulaire du type SELECT et ayant l'attribut Multiple positionné à Yes? String [ ] res = request.getParameterValues("nom du champs"); Quel est le nom du package java à importer au cas où l'on désirerait développer des "Custom tags" Q16. javax.servlet.jsp.tagext Les descripteurs TLD d'une web-app doivent être déployés dans : Le repertoire « web-inf » Les JAR référencés dans les TLD doivent être déployés dans : Le repertoire « /WEB-INF/lib/ » Page : 2/1 Q17. Ré-écrire la page suivante en exploitant les extentions JSTL : <%@ page import="java.util.ArrayList" %> <% ArrayList erreurs=(ArrayList)request.getAttribute("erreurs"); String urlRetour=(String)request.getAttribute("urlRetour");%> <html> <head> <body> <title>Personne</title></head> <h2>Les erreurs suivantes se sont produites</h2> <ul> <% for(int i=0;i<erreurs.size();i++){ out.println("<li>" + (String) erreurs.get(i) + "</li>\n"); } %> </ul><br><a href="<%= urlRetour %>">Retour au formulaire</a> </body> </html> En JSTL : <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <body> <title>Personne</title></head> <h2>Les erreurs suivantes se sont produites</h2> <ul> <c:forEach var="erreur" items="${requestScope.erreurs}" > <li> <c:out value="${erreur}" /> </li> </c:forEach> </ul><br> <a href="${requestScope.urlRetour}">Retour au formulaire </a> </body> </html> Page : 3/1