0% ont trouvé ce document utile (0 vote)
15 vues9 pages

Exemanweb

Le document explique le principe d'ouverture/fermeture des applications, qui stipule qu'elles doivent être extensibles sans modification du code existant. Il aborde également les méthodes pour manipuler les attributs dans un HttpServletRequest, les couches du .NET Framework, et le concept d'Inversion of Control (IoC) en JEE. Enfin, il fournit des exemples d'architecture d'application Web JEE, y compris des servlets et des pages JSP.

Transféré par

jihen amayed
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)
15 vues9 pages

Exemanweb

Le document explique le principe d'ouverture/fermeture des applications, qui stipule qu'elles doivent être extensibles sans modification du code existant. Il aborde également les méthodes pour manipuler les attributs dans un HttpServletRequest, les couches du .NET Framework, et le concept d'Inversion of Control (IoC) en JEE. Enfin, il fournit des exemples d'architecture d'application Web JEE, y compris des servlets et des pages JSP.

Transféré par

jihen amayed
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

1.

Une application doit être ouverte à l'extension et fermée à la


modification. Expliquer.

Ce principe fait partie des SOLID principles, spécifiquement le principe


d'ouverture/fermeture (Open/Closed Principle).

 Ouvert à l'extension : Une application doit permettre l'ajout de nouvelles


fonctionnalités sans modifier son code existant.
 Fermé à la modification : Une fois une classe ou un module testé et
déployé, il ne devrait pas être modifié directement pour ajouter des
fonctionnalités.

Exemple :
Une classe de calcul de formes géométriques peut être étendue via des sous-
classes pour ajouter de nouvelles formes, mais le code d'origine ne doit pas être
modifié.

2. Quelles sont les méthodes utilisées pour stocker un objet dans un objet
HttpServletRequest ?

Les méthodes pour manipuler les attributs d'une requête sont :

 setAttribute(String name, Object value) : Ajoute ou


remplace un attribut dans l'objet HttpServletRequest.
 removeAttribute(String name) : Supprime un attribut existant.

3. Est-ce qu'une adresse IP du client est incluse dans une URL ?


Non, une adresse IP n'est pas incluse dans une URL.

 Une URL (Uniform Resource Locator) spécifie l'adresse d'une ressource


sur le Web.
 Une adresse IP identifie un dispositif connecté au réseau.
Cependant, le serveur peut récupérer l'adresse IP du client via la méthode
getRemoteAddr() de l'objet HttpServletRequest.

4. Quelles sont les méthodes permettant d'obtenir une ou plusieurs valeurs


d'un objet HttpServletRequest ?

 Pour une valeur unique :


getParameter(String name) : Récupère la valeur d'un paramètre
unique passé dans la requête.
 Pour plusieurs valeurs :
getParameterValues(String name) : Retourne un tableau de
toutes les valeurs associées à un paramètre avec le même nom.

5. Citer les différentes couches d'une plateforme .NET.

Les couches principales sont :

1. CLR (Common Language Runtime) : Fournit un environnement


d'exécution pour le code.
2. BCL (Base Class Library) : Bibliothèques de classes pour des
fonctionnalités courantes (collections, fichiers, etc.).
3. Framework and Tools : API et outils de développement pour les
applications.
6. Le .NET Framework comporte trois parties principales. Quelles sont ces
parties ?

1. CLR (Common Language Runtime) : Gère l'exécution des applications.


2. Framework Class Library (FCL) : Contient des bibliothèques de
classes pour le développement.
3. Langages pris en charge : Fournit la prise en charge de divers langages
comme C#, [Link], etc.

7. Quel type d'application le .NET Framework prend-t-il en charge ?

Le .NET Framework prend en charge :

 Applications Windows : Desktop, Windows Forms.


 Applications Web : [Link].
 Services Web : Services SOAP/RESTful.
 Applications mobiles et cloud.

8. Expliquer le concept d'Inversion of Control (IoC) en JEE par un


exemple.

 Concept : IoC est un principe de conception où le contrôle de la création


des objets et des dépendances est inversé.
o Dans JEE, IoC est souvent implémenté via Dependency Injection
(DI).
 Exemple :
Au lieu de créer une instance d'une classe dépendante avec new, l'objet
est injecté par un conteneur (comme Spring).

Exemple de code avec CDI (Contexts and Dependency Injection) en JEE :

// Classe de service
@Stateless
public class PersonService {
public void savePerson(Person person) {
// Logique de sauvegarde
}
}

// Classe contrôleur
@Inject
private PersonService personService;

public void addPerson(Person person) {


[Link](person);
}

Exercice : Application Web JEE

1. Architecture de l'application (MVC)

 Modèle : Représente l'entité Person et sa gestion dans la base de


données (JPA/MySQL).
 Vue : Pages JSP pour afficher les formulaires et les résultats.
 Contrôleur : Servlet pour traiter les requêtes utilisateur et orchestrer les
interactions entre la vue et le modèle.

2. Classe entité

@Entity
public class Person {
@Id
private String idCard; // Numéro de carte
d'identité
private String firstName;
private String lastName;
private String gender;
private String city;

// Getters et Setters
}

3. Interface métier et implémentation

Interface :

public interface PersonService {


void addPerson(Person person);
Person findPersonById(String idCard);
List<Person> findPersonsByCity(String city);
}

Implémentation :
@Stateless
public class PersonServiceImpl implements
PersonService {
@PersistenceContext
private EntityManager em;

public void addPerson(Person person) {


[Link](person);
}

public Person findPersonById(String idCard) {


return [Link]([Link], idCard);
}

public List<Person> findPersonsByCity(String


city) {
return [Link]("SELECT p FROM Person p
WHERE [Link] = :city", [Link])
.setParameter("city", city)
.getResultList();
}
}

4. Étapes de déploiement d'une servlet

1. Créer la classe servlet et annoter avec @WebServlet.


2. Configurer [Link] (si nécessaire).
3. Compiler et empaqueter le projet dans un fichier WAR.
4. Déployer le fichier WAR sur un serveur compatible JEE (Tomcat,
WildFly).

5. Servlet

@WebServlet("/person")
public class PersonServlet extends HttpServlet {
@EJB
private PersonService personService;

protected void doPost(HttpServletRequest request,


HttpServletResponse response) throws
ServletException, IOException {
String action =
[Link]("action");

if ("add".equals(action)) {
Person person = new Person();

[Link]([Link]("idCard"));

[Link]([Link]("firstName")
);

[Link]([Link]("lastName"));

[Link]([Link]("gender"));
[Link]([Link]("city"));
[Link](person);
} else if ("search".equals(action)) {
String idCard =
[Link]("idCard");
Person person =
[Link](idCard);
[Link]("person", person);
} else if ("list".equals(action)) {
String city =
[Link]("city");
List<Person> persons =
[Link](city);
[Link]("persons", persons);
}

[Link]("/[Link]").forward(r
equest, response);
}
}

6. Pages JSP

Formulaire d'ajout :

<form action="person" method="post">


<input type="hidden" name="action" value="add">
Numéro Carte ID : <input type="text"
name="idCard"><br>
Prénom : <input type="text" name="firstName"><br>
Nom : <input type="text" name="lastName"><br>
Genre : <input type="text" name="gender"><br>
Ville : <input type="text" name="city"><br>
<input type="submit" value="Ajouter">
</form>

Formulaire de recherche :

<form action="person" method="post">


<input type="hidden" name="action"
value="search">
Numéro Carte ID : <input type="text"
name="idCard"><br>
<input type="submit" value="Rechercher">
</form>

Formulaire de liste :

<form action="person" method="post">


<input type="hidden" name="action" value="list">
Ville : <input type="text" name="city"><br>
<input type="submit" value="Lister">
</form>

Si vous avez besoin d'exemples supplémentaires ou de clarifications, faites-le-


moi savoir !

Vous aimerez peut-être aussi