Hibernate查询数据库问题(用户登录的实现)。
我想实现用户登录的功能。表user(id,name,password),相应的类User我现在数据库中已存在3条记录,使用hibernate的save插进去的。1user...
我想实现用户登录的功能。
表user(id,name,password),相应的类User
我现在数据库中已存在3条记录,使用hibernate的save插进去的。
1 user1 user1
2 user2 user2
3 user3 user3
在登录时如何实现查询,如果用户名和密码都对,则登录。
我是这样写的:
SessionFactory sf=new Configuration().configure().buildSessionFactory();
Session session=sf.openSession();
Criteria criteria=session.createCriteria(User.class);
Criterion cri1=Expression.like("name", username);
Criterion cri2=Expression.like("password",password);
criteria.add(cri1);
criteria.add(cri2);
List list=criteria.list();
Iterator it=list.iterator();
if(it.hasNext())
{
try
{ request.getRequestDispatcher("..\\xxx.jsp").forward(request,response);
}
catch (Throwable t)
{ getServletContext().log(t.getMessage());
}
}
上面的username和password是从表单中获取的数据。
我发现无论怎么办都登录不成功。后来我没加查询条件,在讲查询结果输出,发现始终就只有一条记录。而且这条记录是刚刚注册插入到数据库的记录。
请问谁能告诉我怎么办?
在答案能解决问题的情况下,追加50分。
数据库中已有相应的用户名,密码。我在用它登录的时候,登录不成功。表单中的值也能获得,就是查询出问题。
1楼,我已经试过了,不行。
2楼,我不是取不到表单的值,而是查询数据库不成功啊!!!! 展开
表user(id,name,password),相应的类User
我现在数据库中已存在3条记录,使用hibernate的save插进去的。
1 user1 user1
2 user2 user2
3 user3 user3
在登录时如何实现查询,如果用户名和密码都对,则登录。
我是这样写的:
SessionFactory sf=new Configuration().configure().buildSessionFactory();
Session session=sf.openSession();
Criteria criteria=session.createCriteria(User.class);
Criterion cri1=Expression.like("name", username);
Criterion cri2=Expression.like("password",password);
criteria.add(cri1);
criteria.add(cri2);
List list=criteria.list();
Iterator it=list.iterator();
if(it.hasNext())
{
try
{ request.getRequestDispatcher("..\\xxx.jsp").forward(request,response);
}
catch (Throwable t)
{ getServletContext().log(t.getMessage());
}
}
上面的username和password是从表单中获取的数据。
我发现无论怎么办都登录不成功。后来我没加查询条件,在讲查询结果输出,发现始终就只有一条记录。而且这条记录是刚刚注册插入到数据库的记录。
请问谁能告诉我怎么办?
在答案能解决问题的情况下,追加50分。
数据库中已有相应的用户名,密码。我在用它登录的时候,登录不成功。表单中的值也能获得,就是查询出问题。
1楼,我已经试过了,不行。
2楼,我不是取不到表单的值,而是查询数据库不成功啊!!!! 展开
2个回答
展开全部
Criterion cri1=Expression.like("name", username);
应改成
Criterion cri1=Expression.eq("name", username);
另外建议判断list.size()>0
即可证明用户名密码正确
应改成
Criterion cri1=Expression.eq("name", username);
另外建议判断list.size()>0
即可证明用户名密码正确
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你为什么不知道接使用session.get方法呢
那样更简单一些啊!
没有分
我就不写代码了!
你能不能清晰的描述你的问题!
那样更简单一些啊!
没有分
我就不写代码了!
你能不能清晰的描述你的问题!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询