it-swarm.com.de

Sitzungsattributzugriff und Konvertierung in int?

Ich habe die Benutzer-ID in der Sitzung mit dem folgenden Befehl im Servlet gespeichert:

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

Jetzt möchte ich von einem anderen Servlet auf diese Benutzer-ID zugreifen:

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)

Frage:

  1. Wie kann ich nach int umwandeln und die ID für die SELECT-Anweisung an DAO senden?
9
a k

Selbst wenn Sie eine int gespeichert haben, erwartet diese Methode ein Objekt, sodass Ihre int aufgrund des automatischen Boxens zu einer Integer wird. Versuchen Sie, es wieder in Integer umzuwandeln und es sollte in Ordnung sein:

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

Wenn das Attribut jedoch null ist, erhalten Sie hier eine NullPointerException. Vielleicht ist es besser, die ganze Zeit mit Integer zu arbeiten:

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

Danach können Sie sicher überprüfen, ob useridnull ist.


BEARBEITEN: Als Antwort auf Ihre Kommentare meine ich "auf Null prüfen".

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 hat Integer wrapper class, Sie können int value in einem Object von Integer speichern

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

Ich bin nicht gut in Java aber ich habe es so gemacht
Integer.parseInt(session.getAttribute("user").toString())

Versuchen Sie es einmal, aber stellen Sie sicher, dass Sie check null für session.getAttribute("user") eingeben, bevor Sie toString aufrufen.

1
Mayank

Versuchen Sie es mit int userid = (Integer) session.getAttribute("user");

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

versuche dies

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

Multiplizieren von zwei Zeichenfolgen aus einer Sitzung:

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

Ich habe das benutzt:

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

versuch das, es hat bei mir geklappt: HttpSession session = request.getSession(); if (session.getAttribute("user") != null) { userid = ((Integer) session.getAttribute("user")).intValue(); } else { userid = 0; }

0
Jasser Saanoun