implémenter un formulaire en plusieurs étapes sans utiliser de session web.
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:
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();
}
}
} |