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
[Link]@[Link]
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 [Link]
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 [Link];
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
[Link] = 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) {
}
[Link] = nom;
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
[Link] = 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
[Link]("Wick");
[Link]("John");
f E L
hre
[Link](100);
c
c A
PrintWriter out = [Link]();
[Link](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
[Link]("Wick");
[Link]("John");
f E L
hre
[Link](100);
c
c A
PrintWriter out = [Link]();
[Link](perso);
}
Pour tester
Aller à l’adresse [Link]
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
[Link])
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
[Link] = num;
U
}
public String getNom() {
L MO
f E
hre
return nom;
}
c
c A
public void setNom(String nom) {
}
[Link] = nom;
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
[Link] = 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 = "[Link]";
public static void main(String[] args) {
Personne p = new Personne();
[Link]("Wick");
[Link]("John");
[Link](100);
try {
FileOutputStream fs = new FileOutputStream(FILE_NAME);
I c
ObjectOutputStream os = new ObjectOutputStream(fs);
ELH
[Link](p);
U
[Link]();
} catch (Exception e) {
L MO
f E
hre
[Link]();
}
c
c A
try {
FileInputStream fis = new FileInputStream(FILE_NAME);
ObjectInputStream ois = new ObjectInputStream(fis);
Personne p2 = (Personne) [Link]();
[Link]([Link]() + " " + [Link]() + " " + p2.
getNum());
[Link]();
} catch (Exception e) {
[Link]();
}
}
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 [Link]
(Rafraichir le projet pour le trouver)
H & H: Research and Training 12 / 12