+7/1/36+ y y NOM et Prénom Programmation Web Avancée ......................................... Durée − 1h30. Tous documents de cours autorisés. Chaque question peut avoir une ou plusieurs bonne(s) réponse(s). Ne passez pas trop de temps sur le QCM. La réponse « (autre) » doit être cochée si aucune des autres réponses n'est correcte. estions à oix multiples Q1 Au sujet des frameworks Java : Java EE est un framework Java complet CSS est un framework Java AngularJS est un framework Java MVC Spring est un standard Spring est un framework Java complet Java EE est un standard Q2 Au sujet de JSP : JSP veut dire « Java Standard Protocol » les JSP sont compilées en classes Java JSP ne peut être utilisé que dans Spring JSP est un « langage de templating » Q3 Une servlet : est instanciée pour chaque requête HTTP peut correspondre à plusieurs URL reçoit un objet représentant la réponse HTTP reçoit un objet représentant la requête HTTP Q4 Un bean utilisé avec un scope session sera créé : à chaque requête HTTP une seule fois, à sa première utilisation une seule fois, au démarrage de l'application à chaque fois qu'un nouvel utilisateur commence à naviguer Q5 Dans une JSP, sachant que la requête est http://site.com/mon.jsp?msg=Hello , on peut produire Hello avec : ${fn:join(paramValues.msg, " et ")} ${param.msg} (autre) ${"Hello"} Q6 Si une classe Article contient une propriété auteur de type Personne et qu'une Personne contient une propriété nom . Si nous avons un article o dont l'auteur est null , l'expression en EL (Expression Language) o.auteur.nom produira : y le texte null le texte None une erreur NullPointerException (autre) y +7/2/35+ y Q7 y Pour utiliser une structure conditionnelle c::if dans une JSP : il faut d'abord utiliser l'EL pour remplir une variable avec la condition il faut utiliser la directive taglib il faut écrire une servlet pour gérer la condition il faut utiliser l'EL pour importer la JSTL il faut utiliser avoir la JSTL dans le classpath il faut importer la JSTL avec la directive import Q8 elle(s) annotation(s) de JPA sont utilisée(s) pour définir une classe persistante ? @RequestMapping (autre) @Id @Data Q9 @Entity JpaRepository Dans une architecture MVC classique : la vue affiche les données du modèle le modèle modélise les objets du domaine la vue connaît le contrôleur le modèle gère les événement de l'utilisateur le contrôleur contient la logique métier le contrôleur agit sur le modèle Q 10 Au sujet de l'injection de dépendances (DI) : (autre) elle aide à créer des systèmes modulaires elle sert à injecter du code au début ou la fin des méthodes elle sert à injecter des instances de services elle transère la tâche de création d'objet vers le framework elle sert à injecter du CSS dans le HTML Q 11 Au sujet de Spring : il ne peut pas interagir avec Java EE il permet de faire des architectures MVC il permet de faire de l'injection de dépendances il ne permet pas de faire des services REST Q 12 Javascript, c'est : une façon de rendre dynamique une page un langage typé dynamiquement un dialecte XML Java mais exécuté par le navigateur un langage limité au navigateur un langage compris par le navigateur y y +7/3/34+ y Q 13 Au sujet de Javascript : il ne s'exécute que dans le navigateur c'est un langage fonctionnel c'est une version dynamique de Java Q 14 y c'est un langage orienté objet c'est le seul langage impératif qui s'exécute dans le navigateur AngularJS est un framework : il sert à faire des applications mono-page il permet d'avoir des fonctions avancées sur des vieux navigateurs il est fait pour faire du MVC dans node.js il sert à faire de la programmation par aspects il est modulaire il sert à faire des application qui s'adaptent à la taille de l'écran il fonctionne « hors-ligne » (sans serveur) il ajoute la fonctionnalité AJAX au navigateur Q 15 Les directives AngularJS : enrichissent HTML déclarent des services Javascript (autre) définissent les dépendances entre modules permeent un binding bi-directionnel permeent un binding uni-directionnel Q 16 enrichissent Javascript REST : signifie Representational state transfer est une approche architecturale décrit des RPC (remote procedure call) est un framework utilise SOAP (Simple Object Access Protocol) Q 17 a été formalisé dans des travaux de recherche s'articule autour de ressources Au sujet des outils utilisés : bootstrap permet de simplifier l'utilisation de Spring node.js permet de faire du Javascript dans un programme Java Git permet de garder l'historique du projet Spring boot sert de faire du REST en Spring Spring MVC permet de faire des contrôleurs en Spring bower permet d'installer des bibliothèques Javascript Spring Data remplace JPA Exercices Pour les exercices ci dessous, répondez sur une feuille d'examen. Prenez le temps de bien lire l'énoncé. Le nombre d'étoiles donné entre parenthèse est une indication pour vous donner une idée du détail de la réponse attendue. ---- Exercice 1 (⋆⋆) -----Donnez et expliquez les différents niveaux de portée des variables dans les JSP. ---- Exercice 2 (⋆⋆) -----y y +7/4/33+ y y Expliquez le concept de Hypermedia as the engine of application state (HATEOAS). ---- Exercice 3 (⋆⋆) -----Supposons une application « TP » dans laquelle vous avez implémenté un controlleur pour gérer un tableau de contrôle accessible à l'URL http://localhost:8080/TP/dashboard. Expliquez les mécanismes qui font que le bon controlleur est appelé quand l'utilisateur consulte l'URL donnée. ---- Exercice 4 (⋆⋆⋆⋆⋆) -----En utilisant une approche « MVC Web », proposez une architecture (quelles classes, jsp, etc, avec leurs contenus et rôles respectifs) pour une application permeant de gérer une liste de session de rarapage (avec ajout et suppression), chaque session ayant un titre, une date, un nombre d'étudiant, etc. ---- Exercice 5 (⋆⋆⋆⋆) -----En utilisant un application-exemple de votre choix, établissez un parallèle entre deux architectures : 1. SV: une application Spring/JPA/JSP, 2. NG: une application Spring/REST/AngularJS. y y