Issue
I have stored user id in Session using following command in Servlet:
HttpSession session = request.getSession();
session.setAttribute("user", user.getId());
Now, I want to access that user id from another 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:
- How can I cast to int and send the id to DAO for SELECT statement
Solution
Even if you saved an int
, that method expects an Object so your int
will become an Integer
due to auto-boxing. Try to cast it back to Integer
and it should be fine:
int userid = (Integer) session.getAttribute("user");
However, if the attribute is null you will get a NullPointerException
here, so maybe it's better to go with Integer
all the way:
Integer userid = (Integer) session.getAttribute("user");
After this, you can safely check if userid
is null
.
EDIT: In response to your comments, here's what I mean by "check for 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.
Answered By - Costi Ciudatu
Answer Checked By - Candace Johnson (JavaFixing Volunteer)