会话属性访问并转换为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)
题:
- 如何转换为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"));