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)
题:
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)
在此之后,你可以放心地检查是否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.
Run Code Online (Sandbox Code Playgroud)