本是用hibernate和strut来实现登录的
登录部分代码如下:
public boolean login(Users user) throws SQLException {
boolean flag = false;
String usernum = user.getUsernum();
String password = user.getPassword();
Session session=util.getSession();
System.out.println("aaa");
Query query=session.createQuery("from Users u where u.usernum=? and u.password");
System.out.println("bbbb");
query.setString(0, usernum);
query.setString(0, password);
List list=query.list();
if(list!=null || list.size()>0)
{
flag=true;
}
return flag;
}提示错误500:The server encountered an internal error () that prevented it from fulfilling this request.
红色部分执行不过去,控制台只能输出aaa部分,后面的不能输出了,就是session.createQuery的问题吧?高手帮帮忙。困扰了一天了都,郁闷啊、、、、
登录部分代码如下:
public boolean login(Users user) throws SQLException {
boolean flag = false;
String usernum = user.getUsernum();
String password = user.getPassword();
Session session=util.getSession();
System.out.println("aaa");
Query query=session.createQuery("from Users u where u.usernum=? and u.password");
System.out.println("bbbb");
query.setString(0, usernum);
query.setString(0, password);
List list=query.list();
if(list!=null || list.size()>0)
{
flag=true;
}
return flag;
}提示错误500:The server encountered an internal error () that prevented it from fulfilling this request.
红色部分执行不过去,控制台只能输出aaa部分,后面的不能输出了,就是session.createQuery的问题吧?高手帮帮忙。困扰了一天了都,郁闷啊、、、、
解决方案 »
- 页面传值问题
- request.getAttribute()获取对象后强制转换问题
- Action 中如何mapping 到另一个页面或Action????
- 这个异常怎么解决啊?望高手指教!
- JSP下如何实现级联下来菜单(MSSQL数据库)
- jsp连接sqlserver2000问题
- 散分啦,宣传一下群和站点!
- 在同一个表单中如何取数据库数据
- 想做一个基于jsp,servlet的电子商务网站(尽全力的散分)
- IllegalStateException: Page needs a session and none is available
- '@P0' 附近有语法错误。
- java s2sh项目或是tomcat 性能优化,但是重起tomcat项目又正常了
以上部分要是改为:Query query=session.createQuery("from Users u ");是可以的,难道where部分有错误吗???
System.out.println("bbbb");
query.setString(1, usernum);
query.setString(2, password);这样有问题?那就要看属性usernum和password是否为string类型了。
query.setString(0, password);你都是0,必须有问题
System.out.println("bbbb");
query.setString("usernum", usernum);
query.setString("password", password);建议使用这方式。
query.setString(1, usernum);
query.setString(2, password);
不过不行的。还有
Query query=session.createQuery("from Users u where u.usernum=:usernum and u.password=:password");
System.out.println("bbbb");
query.setString("usernum", usernum);
query.setString("password", password);
我也试过,可是也不行啊提示同样的错误。
query.setString(0, usernum);
query.setString(1, password);
users = session.createQuery("from Users u where u.usernum=? and u.password=?")
.setParameter(0, usernum)
.setParameter(1, password)
.list();
//上面这句相当于:
//users = session.createQuery("from Users u where u.usernum=? and u.password=?").setParameter(0, usernum).setParameter(1, password).list();
另外,楼主的HQL语句的使用方式也有问题。
楼主的代码:Query query=session.createQuery("from Users u where u.usernum='1' and u.password='abc'");
List list=query.list();建议使用方法链的方式:List<users> users = new ArrayList<users>();
users = session.createQuery("from Users u where u.usernum='1' and u.password='abc'")
.list();
//第一句没有分号,语句并未结束。就相当于:
//users = session.createQuery("from Users u where u.usernum='1' and u.password='abc'").list();
这句话明显有问题。最后面u.password丢了条件。
应该加个"=?"Query query=session.createQuery("from Users u where u.usernum=? and u.password=?");
from Users u where u.usernum=? and u.password
对应的SQL语句,测试用例可以写为:
select * from Users u where u.usernum='1' and u.password
正确的SQL应为:
select * from Users u where u.usernum='1' and u.password='abc'
明显的,后面丢了一截,不是么。
原来的代码是:Query query=session.createQuery("from Users u where u.usernum=? and u.password=?");
query.setString(0, usernum);
query.setString(1, password);
这个样子是不行的,不过你建议使用方法链的方式是可以的!
其实就是Query query=session.createQuery("from Users u where u.usernum=? and u.password=?");
query.setString(0, usernum);
query.setString(1, password);
这段代码和
List<users> users = new ArrayList<users>();
users = session.createQuery("from Users u where u.usernum='1' and u.password='abc'")
.list();
的区别??麻烦在解释一下啦
Query query=session.createQuery("from Users u where u.usernum=? and u.password=?");
query.setParameter(0, usernum);
query.setParameter(1, password);
我这里没测试环境……我不晓得能不能通过。query.setString(0, usernum);应该是这个方法使用不正确。