我在 Servlet 中使用以下命令将用户 ID 存储在 Session 中:
HttpSession session = request.getSession();
session.setAttribute("user", user.getId());
现在,我想从另一个 Servlet 访问该用户 ID:
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)
问题:
- 如何转换为 int 并将 id 发送到 DAO 以用于 SELECT 语句
最佳答案
即使您保存了一个 int
,该方法需要一个对象,因此您的 int
将由于自动装箱而变成一个 Integer
。尝试将其转换回 Integer
,应该没问题:
int userid = (Integer) session.getAttribute("user");
但是,如果该属性为 null,您将在此处获得 NullPointerException
,因此最好始终使用 Integer
:
Integer userid = (Integer) session.getAttribute("user");
在此之后,您可以安全地检查 userid
是否为 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.
关于java - session 属性访问并转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6031278/