Session attribute access and converting to int?

六眼飞鱼酱① 提交于 2019-12-22 04:11:40

问题


I have stored user id in Session using following command in Servlet:

HttpSession session = request.getSession();
session.setAttribute("user", user.getId());

Now, I want to access that user id from another Servlet:

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)

Question:

  1. How can I cast to int and send the id to DAO for SELECT statement

回答1:


Even if you saved an int, that method expects an Object so your int will become an Integer due to auto-boxing. Try to cast it back to Integer and it should be fine:

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

However, if the attribute is null you will get a NullPointerException here, so maybe it's better to go with Integer all the way:

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

After this, you can safely check if userid is null.


EDIT: In response to your comments, here's what I mean by "check for 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.



回答2:


Java has Integer wrapper class , you can store int value in an Object of Integer

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



回答3:


I'm not good at JAVA but I used to do it like
Integer.parseInt(session.getAttribute("user").toString())

Try once, but just be sure to check null for session.getAttribute("user") before calling toString




回答4:


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




回答5:


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



回答6:


I used this:

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



回答7:


try this

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



回答8:


try this, it worked for me: HttpSession session = request.getSession(); if (session.getAttribute("user") != null) { userid = ((Integer) session.getAttribute("user")).intValue(); } else { userid = 0; }




回答9:


Multiplying two strings from session:

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



回答10:


Try this code :

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


来源:https://stackoverflow.com/questions/6031278/session-attribute-access-and-converting-to-int

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!