Vous êtes sur la page 1sur 14

JEE : JavaBean (bean)

Achref El Mouelhi

Docteur de l’université d’Aix-Marseille


Chercheur en programmation par contrainte (IA)
Ingénieur en génie logiciel

elmouelhi.achref@gmail.com

H & H: Research and Training 1 / 12


Plan

1 Introduction

2 Créer un JavaBean

3 Implémenter l’interface Serializable

H & H: Research and Training 2 / 12


Introduction

Introduction

Définition
JavaBean (on dit aussi bean)
I c
Une simple classe Java qui respecte les rE L H
ègles/conventions sur
O U
la construction
L M
le nommage
r ef E
A c
les attributs
h
les
cméthodes
...

H & H: Research and Training 3 / 12


Introduction

Introduction

Les conventions
Le bean doit être public et non final
Il doit avoir un constructeur public et sans paramètre
I c

H
EésLici champ)
U
Il ne doit pas avoir d’attributs publics (appel
O chaque attributs non public
L Mpour
fE
Il doit avoir un getter/setter public

h e
(appelés ici propriétrés)
c du nom de l’attribut dans les getters/setters doit
La premi cèreAlettre
être capitalisée
Il peut implémenter l’interface Serializable
...

H & H: Research and Training 4 / 12


Introduction

Un bean : le modèle d’une application JEE

Vue Modèle
(page JSP) (Java Bean)

I c

ELH
U
L MO
re f E
chRequête
c A

HTTP
Contrôleur
(Servlet)

Réponse
HTTP
Client Serveur

H & H: Research and Training 5 / 12


Créer un JavaBean

Création d’un bean

Déroulement
Faire un clic droit sur src de notre projet
I c
Aller dans New et choisir Class EL H
O U
Remplir le champ File name:M
L par Personne (par example)
f E et écrire org.eclipse.model
Modifier le champ h r e
c deux types de classes Java : le contrôleur
Package:
c A
(pour séparer les
et Modèle (bean)
(Servlet)
Valider

H & H: Research and Training 6 / 12


Créer un JavaBean

Création d’un bean


package org.eclipse.model;
public class Personne { //classe public et non final
private int num;
private String nom;
private String prenom; // tous les champs sont private
public int getNum() {
return num;
I c

}
public void setNum(int num) {
ELH
U
MO
this.num = num;
}
public String getNom() {
f E L
hre
return nom;
c
}// des getters/setters public pour tous les champs

c A

public void setNom(String nom) {

}
this.nom = nom;

public String getPrenom() {


return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
}
H & H: Research and Training 7 / 12
Créer un JavaBean

Création d’un bean

// on peut aussi redefinir la methode toString


I c

@Override
ELH
U
MO
public String toString() {

f E L
return "Personne [num= " + num + ", nom= " + nom

hre
+ ", prenom= " + prenom + "]";
}
A c
c
// Et evidemment d’autres methodes

H & H: Research and Training 8 / 12


Créer un JavaBean

Utilisation d’un bean dans le contrôleur

Modifions la méthode doGet() de notre Servlet


protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
I c

Personne perso = new Personne();
ELH
U
MO
perso.setNom("Wick");
perso.setPrenom("John");
f E L
hre
perso.setNum(100);
c
c A
PrintWriter out = response.getWriter();

out.print(perso);
}

H & H: Research and Training 9 / 12


Créer un JavaBean

Utilisation d’un bean dans le contrôleur

Modifions la méthode doGet() de notre Servlet


protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
I c

Personne perso = new Personne();
ELH
U
MO
perso.setNom("Wick");
perso.setPrenom("John");
f E L
hre
perso.setNum(100);
c
c A
PrintWriter out = response.getWriter();

out.print(perso);
}

Pour tester
Aller à l’adresse http://localhost:8080/nomProjet/mapage

H & H: Research and Training 9 / 12


Implémenter l’interface Serializable

Comment et pourquoi sérialiser ? (créer un Java Project et déplacer le package


org.eclipse.model)
public class Personne implements Serializable{
private int num;
private String nom;
private String prenom;
public int getNum() {

}
return num;
I c

public void setNum(int num) {
ELH
this.num = num;
U
}
public String getNom() {
L MO
f E
hre
return nom;
}
c
c A
public void setNom(String nom) {

}
this.nom = nom;

public String getPrenom() {


return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
}
H & H: Research and Training 10 / 12
Implémenter l’interface Serializable

Considérons la méthode main suivante :


private static final String FILE_NAME = "personne.txt";
public static void main(String[] args) {
Personne p = new Personne();
p.setNom("Wick");
p.setPrenom("John");
p.setNum(100);
try {
FileOutputStream fs = new FileOutputStream(FILE_NAME);
I c

ObjectOutputStream os = new ObjectOutputStream(fs);
ELH
os.writeObject(p);
U
os.close();
} catch (Exception e) {
L MO
f E
hre
e.printStackTrace();
}
c
c A
try {

FileInputStream fis = new FileInputStream(FILE_NAME);
ObjectInputStream ois = new ObjectInputStream(fis);
Personne p2 = (Personne) ois.readObject();
System.out.println(p2.getNom() + " " + p2.getPrenom() + " " + p2.
getNum());
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
}
H & H: Research and Training 11 / 12
Implémenter l’interface Serializable

Implémenter l’interface

Remarques

La méthode writeObject() sérialise l’objet ensuite l’écrit dans


le fichier
I c

H
ELle desérialise
La méthode readObject() lit l’objet ensuite
U
MOpas l’interface
Si la classe Personne n’implémente
L
E d’utiliser les deux méthodes
Serializable, il est fimpossible
précédentes chre
c A

H & H: Research and Training 12 / 12


Implémenter l’interface Serializable

Implémenter l’interface

Remarques

La méthode writeObject() sérialise l’objet ensuite l’écrit dans


le fichier
I c

H
ELle desérialise
La méthode readObject() lit l’objet ensuite
U
MOpas l’interface
Si la classe Personne n’implémente
L
E d’utiliser les deux méthodes
Serializable, il est fimpossible
précédentes chre
c A
Tester le main et aller vérifier le contenu du fichier personne.txt
(Rafraichir le projet pour le trouver)

H & H: Research and Training 12 / 12