【问题标题】:Obtaining an int value of an object from an arrayList containing objects in jsp从包含jsp中对象的arrayList中获取对象的int值
【发布时间】:2014-02-03 18:37:18
【问题描述】:

我在从列表中的对象获取 id 值时遇到问题。我首先将用户登录详细信息存储在会话中,并使用这些信息来设置用于填充列表的查询的条件。该列表将仅包含一个用户类型的对象。 当我通过调试检查时,该列表正在填充正确的详细信息,但是当我尝试迭代列表以获取存储在列表中的对象的 id 值时,我的代码甚至没有进入 for 循环。 id 值是查询正在获取的用户的 id。 以下是我的代码sn-p:

        HttpSession session1 = request.getSession();

        LoggedUser lu = (LoggedUser) session1.getAttribute("logged");

         String uname = lu.getUserName();
         String pword = lu.getPass();


         List<Users> ulist = session.createSQLQuery("Select * From Users WHERE Username = '" + uname + "'" + " AND Password = " + "'" + pword+ "'").list();

         int uid = 0; // up until here everything works fine with debugging

         for(Users user : ulist)
         {
             uid = user.getId();
         }

谁能帮忙?

【问题讨论】:

  • 请不要使用串联的字符串查询来实现您的登录。这是一个很大的安全漏洞。请参阅 SQL 注入。您应该使用命名查询参数。
  • 你是对的,但是对于我手头的任务,为了简单起见,我被要求以这种方式执行它。一旦用户登录他的用户名和密码并在上面的代码中存储,然后我会调用这些详细信息,以便将用户发布和当前登录用户的用户 ID 添加到数据库中,以便稍后显示当前的 RSS 提要登录的用户。有没有办法从上面的代码中获取id值?
  • 除了 Hibernate 部分,它看起来对我来说是正确的。如果从未进入循环,则列表必须为空。例如,您可以通过打印列表大小来了解。

标签: hibernate jsp session arraylist foreach


【解决方案1】:

像这样开始使用休眠条件,

List<Users> ulist = (List<Users>) session.createCriteria(Users.class)
                     .add(Restrictions.eq("username", uname))
                    .add(Restrictions.eq("password", pword)).list();

还有,您的用户类中 id 的数据类型是什么?如果是int,

if(null != ulist && ulist.size() > 0){
     int uid = 0; 

     for(Users user : ulist)
     {
         uid = user.getId();
     }
}

更新

您需要检查 null 的任何地方。否则你可能会遇到很多空指针异常。

LoggedUser lu = (LoggedUser) session1.getAttribute("logged");
String uname = "";
String pword = "";
if(null != session1.getAttribute("logged")){
    uname = lu.getUserName();
    pword = lu.getPass();
}

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2021-05-06
    • 2021-02-07
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多