会话属性访问并转换为int?

a k*_*a k 9 java session servlets casting

我在Servlet中使用以下命令在Session中存储了用户ID:

HttpSession session = request.getSession();
session.setAttribute("user", user.getId());
Run Code Online (Sandbox Code Playgroud)

现在,我想从另一个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)
Run Code Online (Sandbox Code Playgroud)

题:

  1. 如何转换为int并将id发送到DAO以获取SELECT语句

Cos*_*atu 14

即使你保存了一个int,该方法也需要一个Object,这样你的int意志就会变成Integer自动装箱.尝试将其强制转换为Integer它应该没问题:

int userid = (Integer) session.getAttribute("user");
Run Code Online (Sandbox Code Playgroud)

但是,如果属性为null,您将获得一个NullPointerException,所以也许最好一直使用Integer:

Integer userid = (Integer) session.getAttribute("user");
Run Code Online (Sandbox Code Playgroud)

在此之后,你可以放心地检查是否useridnull.


编辑:回应您的意见,这是我的意思是"检查空".

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.
Run Code Online (Sandbox Code Playgroud)