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

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

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 ,该方法也需要一个Object,因此你的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具有Integer包装类,可以将int值存储在Integer的Object中

 //setting Integer intObj = new Integer(intVal); session.setAttribute("key",intObj); //fetching Integer intObj = (Integer) session.getAttribute("key"); 

我不擅长JAVA,但我曾经这样做过
Integer.parseInt(session.getAttribute("user").toString())

尝试一次,但只需确保在调用toString之前为session.getAttribute("user") check null

尝试int userid = (Integer) session.getAttribute("user");

 Integer userid = Integer.parseInt(session.getAttribute("user")); 

我用过这个:

 Integer.parseInt(session.getAttribute("String").toString()) 

试试这个

 int userid = Integer.parseInt(session.getAttribute("user").toString()); 

试试这个,它对我HttpSession session = request.getSession(); if (session.getAttribute("user") != null) { userid = ((Integer) session.getAttribute("user")).intValue(); } else { userid = 0; }HttpSession session = request.getSession(); if (session.getAttribute("user") != null) { userid = ((Integer) session.getAttribute("user")).intValue(); } else { userid = 0; } HttpSession session = request.getSession(); if (session.getAttribute("user") != null) { userid = ((Integer) session.getAttribute("user")).intValue(); } else { userid = 0; }

从会话中乘以两个字符串:

 int z = Integer.parseInt((String)session.getAttribute("sintelestis")); int y = Integer.parseInt((String)session.getAttribute("_embadon_akinitou")); System.out.println("Ο Συνολικός Φόρος είναι: "+ (z*y)); 

试试这段代码:

  int userId=Integer.parseInt((String)session.getAttribute("user"));