java - session 属性访问并转换为 int?

标签 java session servlets casting

我在 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)

问题:

  1. 如何转换为 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/

相关文章:

java - 计算Java中两个日期之间的天数

php - 通知网络服务如果应用程序关闭

java - 如何在 Tomcat 上的 Web 应用程序中提供静态文件

java - 将变量分配给 HTML 中的值

java - 不断收到 java.awt.AWTError : BoxLayout can't be shared

java - 程序没有焦点时读取条码?

java - IE8 丢失 session 详细信息

php - Laravel session 在每次加载时重新生成

java - 我的更改密码界面在 java eclipse web 应用程序上不起作用

java - 当我想以毫秒为单位获取 unix 时间时,Mongodb 时间戳输出格式返回 "$numberLong"对象