web-dev-qa-db-fra.com

Accès aux attributs de session et conversion en int?

J'ai enregistré l'ID utilisateur dans Session à l'aide de la commande suivante dans Servlet:

HttpSession session = request.getSession();
session.setAttribute("user", user.getId());

Maintenant, je veux accéder à cet ID utilisateur à partir d'un autre Servlet:

HttpSession session = request.getSession(false);
int userid = (int) session.getAttribute("user"); // This is not working

OR

User user = new User();
user.setId(session.getAttribute("user")); This ain't possible (Object != int)

Question:

  1. Comment puis-je transtyper vers int et envoyer l'ID à DAO pour l'instruction SELECT
9
a k

Même si vous avez enregistré une int, cette méthode attend un objet afin que votre int devienne une Integer en raison de la boxe automatique. Essayez de le renvoyer à Integer et ça devrait aller:

int userid = (Integer) session.getAttribute("user");

Cependant, si l'attribut est null, vous obtiendrez une NullPointerException ici, alors peut-être qu'il vaut mieux utiliser Integer jusqu'au bout:

Integer userid = (Integer) session.getAttribute("user");

Après cela, vous pouvez vérifier en toute sécurité si userid est null.


EDIT: En réponse à vos commentaires, voici ce que je veux dire par "vérifier la valeur null".

Integer userid = (Integer) session.getAttribute("user");
User user = null;
if (userid != null) {
    user = new UserDAO().getUser(userid);
}
// here user will be null if no userid has been stored on the session,
// and it wil be loaded from your persistence layer otherwise.
14
Costi Ciudatu

Java a Integer wrapper class, vous pouvez stocker la valeur int dans un objet de Integer 

//setting
Integer intObj = new Integer(intVal);
session.setAttribute("key",intObj);
//fetching
Integer intObj = (Integer) session.getAttribute("key");
2
Jigar Joshi

Je ne suis pas bon en Java mais je le faisais comme
Integer.parseInt(session.getAttribute("user").toString()) 

Essayez une fois, mais assurez-vous simplement de check null pour session.getAttribute("user") avant d'appeler toString

1
Mayank

Essayez int userid = (Integer) session.getAttribute("user");

1
Bala R
Integer userid = Integer.parseInt(session.getAttribute("user"));
1
Rob Parker

essaye ça 

int userid = Integer.parseInt(session.getAttribute("user").toString());
0
mansoor Sntli

Multiplier deux chaînes de la session:

int z = Integer.parseInt((String)session.getAttribute("sintelestis"));
int y = Integer.parseInt((String)session.getAttribute("_embadon_akinitou"));
System.out.println("Ο Συνολικός Φόρος είναι: "+ (z*y));
0
Dimitris Maniatis

J'ai utilisé ceci:

Integer.parseInt(session.getAttribute("String").toString())
0
antmog

essayez ceci, cela a fonctionné pour moi: HttpSession session = request.getSession(); if (session.getAttribute("user") != null) { userid = ((Integer) session.getAttribute("user")).intValue(); } else { userid = 0; }

0
Jasser Saanoun