Bonjour,
J'ai tout d'abord implémenter un formulaire en deux étapes avec utilisation de session.
La servlet "SessionServletInfo.java" permet de récupérer les données nom et âge du premier formulaire.
La servlet "SessionServletCoordonnees" permet de récupérer rue, code postal et ville de l'utilisateur pour lequel j'ai créé aussi une classe.
et enfin la servlet "AffichageDonnees" pour afficher l'ensemble des données des deux requêtes du même utilisateur.
Tout fonctionne comme prévu.
Sauf que je n'ai aucune solution pour obtenir le même résultat sans passer par la session. je voulais utiliser :
ServletContext context = this.getServletContext();
User user = (User) context.getAttribute("user");
mais là l'attribut "user" devient accessible à toutes les sessions des différents clients car c'est de portée application.
Merci de me donner juste une piste pour trouver la solution ou un tutoriel.
je vous remercie d'avance de votre aide .
Avatar7575
voilà le code que j'ai utilisé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112 package fr.epsi.javaee.servlets.exercice1; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import fr.epsi.javaee.beans.User; @WebServlet("/SessionServletInfo") public class SessionServletInfo extends HttpServlet { private static final long serialVersionUID = 1L; public SessionServletInfo() { super(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { User user = new User(); user.setNom(request.getParameter("txt_nom")); int nombre; String age = request.getParameter("txt_age"); try { nombre = Integer.valueOf(age); user.setAge(nombre); } catch (NumberFormatException e) { e.printStackTrace(); e.getMessage(); } request.getSession().setAttribute("user", user); this.getServletContext().getRequestDispatcher("/coordonnees.html") .forward(request, response); ; } } @WebServlet("/SessionServletCoordonnees") public class SessionServletCoordonnees extends HttpServlet { private static final long serialVersionUID = 1L; public SessionServletCoordonnees() { super(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); User user = (User)session.getAttribute("user"); user.setRue(request.getParameter("txt_rue")); user.setCodePostal(request.getParameter("txt_codePostal")); user.setVille(request.getParameter("txt_ville")); //on stocke l'utilisateur comme attribut de session session.setAttribute("user", user); this.getServletContext().getRequestDispatcher("/AffichageDonnees").forward(request, response); } } @WebServlet("/AffichageDonnees") public class AffichageDonnees extends HttpServlet { private static final long serialVersionUID = 1L; public AffichageDonnees() { super(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); User user = (User) request.getSession().getAttribute("user"); String nom = user.getNom(); int age = user.getAge(); String rue = user.getRue(); String codePostal = user.getCodePostal(); String ville = user.getVille(); // affichage des paramétres try { out.println("<h1>Recapitulatif des données du formulaire : </h1>" + "<UL>\n" + " <LI>Nom : " + nom + "\n" + " <LI>Age : " + age + "\n" + "<LI> Rue : " + rue + "\n" + "<LI>Code Postal :" + codePostal + "\n" + " <LI> Ville : " + ville + "</UL>\n"); out.println("</HTML>\n</BODY>\n"); } finally { out.close(); } } }
Partager