Bonjour,
Dans une "application", j'ai une applet qui sert d'interface Utilisateur et plusieurs servlets.
Ce que je souhaite faire : "Tracer" l'activité de l'utilisateur au fil des appels des servlets (chaque bouton de l'interface de l'applet se connecte à une servlet pour effectuer un certain traitement)
L'idée que j'ai trouvée est d'utiliser HttpSession combinée avec les cookies (le tuto que j'ai lu n'était pas très explicite sur ce point, donc j'ai cherché un peu mais...).
Au niveau de l'applet, j'ai ce code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| try
{
// Connexion à la servlet
URL url=new URL("http://localhost:9000/ProjetEntreprise/embauche");
//System.out.println("Connexion à la servlet...");
URLConnection connexion=url.openConnection();
connexion.setDoOutput(true);
connexion.setDoInput(true);
connexion.setRequestProperty("cookie", connexion.getHeaderField("set-cookie"));
[...]
// Récupération du flux de sortie
ObjectOutputStream fluxsortie = new ObjectOutputStream(connexion.getOutputStream());
// Envoi des infos sur l'employé à embaucher
System.out.println("Envoie des données à la servlet");
fluxsortie.writeObject(emp);
[...] |
Au niveau de la servlet :
1 2 3 4 5 6 7 8 9 10 11
| if(request.getSession(true).getAttribute("nomClient") == null)
{
name = "Client" + Math.round((Math.random() + 1)* (Math.random() + 2) * 5 + 3);
System.out.println("[Session][Embauche]Ce client n'a pas encore de nom ! On vas l'appeler " + name);
request.getSession().setAttribute("nomClient", name);
Cookie cookie = new Cookie(request.getSession().getId(), "");
cookie.setMaxAge(60*2);
response.addCookie(cookie);
}
else
System.out.println("[Session][Embauche]Ce client s'appele " + name); |
En l'état, rien ne marche : j'ai l'erreur
java.lang.IllegalStateException: Already connected
Et si je retire la ligne
connexion.setRequestProperty("cookie", connexion.getHeaderField("set-cookie"));
Tout fonctionne bien, enfin, je n'ai pas de cookie ...
Comment il faut procéder s'il vous plait ?
Merci
Partager