a k a k - 1 month ago 6
Java Question

Session attribute access and converting to int?

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:


  1. How can I cast to int and send the id to DAO for SELECT statement


Answer

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.
Comments