Search code examples
javasessionservletscasting

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

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.