问题
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
回答1:
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.
回答2:
Java has Integer wrapper class , you can store int value in an Object of Integer
//setting
Integer intObj = new Integer(intVal);
session.setAttribute("key",intObj);
//fetching
Integer intObj = (Integer) session.getAttribute("key");
回答3:
I'm not good at JAVA but I used to do it likeInteger.parseInt(session.getAttribute("user").toString())
Try once, but just be sure to check null
for session.getAttribute("user")
before calling toString
回答4:
Try int userid = (Integer) session.getAttribute("user");
回答5:
Integer userid = Integer.parseInt(session.getAttribute("user"));
回答6:
I used this:
Integer.parseInt(session.getAttribute("String").toString())
回答7:
try this
int userid = Integer.parseInt(session.getAttribute("user").toString());
回答8:
try this, it worked for me:
HttpSession session = request.getSession();
if (session.getAttribute("user") != null) {
userid = ((Integer) session.getAttribute("user")).intValue(); } else { userid = 0; }
回答9:
Multiplying two strings from session:
int z = Integer.parseInt((String)session.getAttribute("sintelestis"));
int y = Integer.parseInt((String)session.getAttribute("_embadon_akinitou"));
System.out.println("Ο Συνολικός Φόρος είναι: "+ (z*y));
回答10:
Try this code :
int userId=Integer.parseInt((String)session.getAttribute("user"));
来源:https://stackoverflow.com/questions/6031278/session-attribute-access-and-converting-to-int