0% ont trouvé ce document utile (0 vote)
83 vues4 pages

Controle 1 JEE

Transféré par

mariagemariagee5
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
83 vues4 pages

Controle 1 JEE

Transféré par

mariagemariagee5
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Mohammed 1 er

École Nationale de l’Intelligence Artificielle et du


Digitale - Berkane

Contrôle 1 – Atelier Programmation Avancée


Année universitaire : 2024 / 2025 Durée : 1H30 Professeur : Nabil ALAMI
Numéro : Nom et prénom : Filière : GI

1. Lesquels des énoncés suivants sont corrects à propos du statut de la réponse Http.
 Un statut de 300 à 399 sont des messages d’information.
 Un état de 400 à 499 indique une erreur côté serveur.
 Un statut de 500 à 599 indique une erreur côté client.
 Un statut de 200 à 299 signifie que la requête a été acceptée.
2. Quelle méthode HTTP est invoquée lorsqu’un utilisateur clique sur un lien ?
 GET method
 POST method
 HEAD method
 PUT method
3. Quels codes d’erreur représentent une erreur dans la requête du client ?
 Codes à partir de 200
 Codes à partir de 300
 Codes à partir de 400
 Codes à partir de 500
4. Laquelle des requêtes suivantes devrait être effectuée en utilisant une méthode POST ?
 Accéder à une page statique
 Insérer un enregistrement dans une base de données
 Récupérer une image
 Rechercher un enregistrement dans une base de données
5. Étant donné une application web ShoopingCart avec ces 3 fichiers : la servlet ProductServlet, les deux JSP
ShoppingCart/customer/addProductToCart.jsp et ShoppingCart/customer/showCart.jsp
Lequel des codes suivants est valide dans la servlet ProductServlet pour envoyer la requête à « showCart.jsp » ?
 RequestDispatcher nextView = request.getRequestDispatcher("/customer/showCart.jsp");
 RequestDispatcher nextView = request.getRequestDispatcher("/showCart.jsp");
 RequestDispatcher nextView = getServletContext().request.getRequestDispatcher("showCart.jsp");
 RequestDispatcher nextView = getServletContext().request.getRequestDispatcher("../customer/showCart.jsp");
6. Nommez la classe qui inclut la méthode getSession utilisée pour obtenir l’objet HttpSession.
 SessionConfig
 SessionContext
 HttpServletResponse
 HttpServletRequest
7. Laquelle des méthodes suivantes est utilisée pour stocker un objet dans un objet request ?
 addAttribute(String name, String obj)
 putAttribute(String name, Object obj)
 setAttribute(String name, String obj)
 setAttribute(String name, Object obj)
8. Laquelle des méthodes suivantes vous permettra d’obtenir une ou plusieurs valeurs d’un objet request ?
 getParameter(String name)
 getParameters(String name)
 getParameterValues(String name)
 getAllParameters()

1
9. Considérez le code suivant : Que fait la méthode response.sendRedirect("synthese.jsp") ?
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if ("admin".equals(username) && "1234".equals(password)) {
response.sendRedirect("synthese.jsp");
} else {
request.setAttribute("error", "Invalid credentials");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
 Redirige vers synthese.jsp tout en conservant les attributs de la requête
 Envoie une réponse HTTP 302 (Redirection temporaire) pour rediriger le client
 Appelle directement synthese.jsp sur le serveur sans passer par le client
 Crée une session utilisateur et redirige vers synthese.jsp
10. Nous voulons configurer une servlet qui réponds aux actions /actionPerform.do. Ecrire les deux solutions possibles :
Solution 1 Solution 2

11. Que se passe-t-il lorsque cette servlet est déployée et qu’un utilisateur appuie plusieurs fois sur le bouton
d’actualisation de son navigateur ?
public class Test extends HttpServlet {
private Integer nbr = new Random().nextInt();
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.getWriter().println(nbr);
}}
 La valeur affichée s’incrémente à chaque rafraîchissement.
 Rien ne s’affiche.
 La même valeur est toujours affichée.
 Erreur de compilation.
12. Quel est le résultat de l'exécution du code JSP suivant ?
 Affiche toujours Count is: 1
 Provoque une erreur de compilation
 Affiche une valeur aléatoire
 Incrémente count à chaque exécution et affiche la nouvelle valeur

13. Lequel des choix suivants est correct concernant le cycle de vie d'une servlet ?
 La méthode init() est appelée pour chaque requête utilisateur
 La méthode destroy() est appelée immédiatement après l'exécution de la méthode service()
 La méthode service() appelle soit doGet() soit doPost() selon le type de requête http
 La servlet est détruite après la réponse à chaque requête

2
Numéro : Nom et prénom :

14. Quel est le comportement correct de la méthode service() dans une servlet personnalisée ?
 Elle est automatiquement appelée par le conteneur pour déléguer à doGet ou doPost
 Elle doit être remplacée pour traiter toutes les requêtes http
 Elle est appelée une seule fois pendant le cycle de vie de la servlet
 Elle remplace toujours les méthodes doGet et doPost
15. Dans une page JSP, écrivez le code pour lire un paramètre de requête appelé name et afficher un message "Hello,
World!" seulement si le paramètre n’est pas présent dans la requête. Sinon il affiche la valeur du paramètre name :
----------------------------------------------------------------------------------------------------------------------------- -----------------------
----------------------------------------------------------------------------------------------------------------------------- -----------------------
----------------------------------------------------------------------------------------------------------------------------- -----------------------
----------------------------------------------------------------------------------------------------------------------------- -----------------------
----------------------------------------------------------------------------------------------------------------------------- -----------------------
----------------------------------------------------------------------------------------------------------------------------- -----------------------
----------------------------------------------------------------------------------------------------------------------------- -----------------------
----------------------------------------------------------------------------------------------------------------------------- -----------------------
16. Complétez le code JSP pour transmettre un message à une autre page JSP appelé synthese.jsp via une requête :
<%
request.setAttribute("message", "Bienvenu à la page de synthèse");
………………………………………………………………………………………………………………………………………………………………
%>
 response.sendRedirect("dashboard.jsp");
 request.getRequestDispatcher("dashboard.jsp").forward(request, response);
 request.setAttribute("redirect", "dashboard.jsp");
 request.forward("dashboard.jsp");
17. Complétez le code suivant pour établir une connexion JDBC à une base de données MySQL et obtenir un objet
Connection :
public class DatabaseConnection {
public static Connection getConnection() throws SQLException {
……………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………
}
}
18. Complétez le code de la méthode listProducts pour lire les résultats d'une requête SELECT. Utilisez la méthode
getConnection de la classe DatabaseConnection question précédente :
public void listProducts() throws SQLException {
String query = "SELECT id, name, price FROM Product";
try {
Connection conn = ……………………………………………………………………………………;
Statement stmt = ………………………………………………………………………………………;
ResultSet rs = ………………………………………………………………………………………;
while (rs.next()) {
System.out.println("ID: " + …………………………………………………….);
System.out.println("Name: " + …………………………………………………….);
System.out.println("Price: " + …………………………………………………….);
}
} catch (Exception e) {
e.printStackTrace();}}

3
19. Dans les EJB Entity, comment utiliser l'auto-incrémentation de la base de données pour générer les valeurs des clés
primaires.
----------------------------------------------------------------------------------------------------------------------------- -----------------------
20. Dans les EJB Entity, Quelle annotation utilisée pour définir une relation bidirectionnelle entre deux entités
----------------------------------------------------------------------------------------------------------------------------- -----------------------
21. Complétez le code pour marquer l’entité Product comme étant liée à une table nommée PRODUCTS :
@Entity Réponse :
public class Product {
@Id
private Long id;
private String name;
private double price;
}
22. Quel est l'effet de la méthode @PostConstruct dans un EJB ?
 Détruit l'instance du bean avant sa création
 Initialise le bean après son instanciation
 Définit un point d'entrée pour le cycle de vie du bean
 Fournit un constructeur par défaut pour le bean
23. Quel est le résultat attendu de l'exécution de l'EJB suivant ?
 Une exception car les Singletons ne supportent pas la @Singleton
synchronisation public class CounterBean {
 Une augmentation correcte du compteur partagée entre toutes private int count = 0;
public synchronized int increment() {
les instances
return ++count;
 Une nouvelle valeur de compteur pour chaque utilisateur }
 Une erreur si plusieurs threads appellent increment }
simultanément
24. Compléter le code suivant pour que la méthode addItem soit appelé à distance :
public interface ShoppingCartRemote {
void addItem(String item);
List<String> getItems();
}

@Stateful
public class ShoppingCartBean implements ShoppingCartRemote {
private List<String> items = new ArrayList<>();
// Implémentation des méthodes
}
25. Comment le client doit-il récupérer une instance de ShoppingCartBean ?
 Via un appel au constructeur new ShoppingCartBean() directement.
 En effectuant une recherche JNDI de l'interface distante ShoppingCartRemote.
 En injectant le bean via @EJB.
 En utilisant une annotation @Inject sur ShoppingCartBean.

Bon courage

Vous aimerez peut-être aussi