無論輸入什么帳號密碼都沒有通過action成功轉跳
提交表單后控制臺輸出語句
WARN: [DEPRECATION] Encountered positional parameter near line 1, column 34 in HQL: [from entity.Users where username=? and password=? ].? Positional parameter are considered deprecated; use named parameters or JPA-style positional parameters instead.
三月 01, 2018 6:34:23 下午 org.hibernate.hql.internal.ast.HqlSqlWalker generatePositionalParameter
WARN: [DEPRECATION] Encountered positional parameter near line 1, column 49 in HQL: [from entity.Users where username=? and password=? ].? Positional parameter are considered deprecated; use named parameters or JPA-style positional parameters instead.
Hibernate:?
? ? select
? ? ? ? users0_.uid as uid1_1_,
? ? ? ? users0_.username as username2_1_,
? ? ? ? users0_.password as password3_1_?
? ? from
? ? ? ? USERS users0_?
? ? where
? ? ? ? users0_.username=??
? ? ? ? and users0_.password=?
public?class?UserDAOImpl?implements?UsersDAO{
?
????@Override
????public?boolean?usersLogin(Users?u)?{
????????//?TODO?Auto-generated?method?stub
????????//創建事物對象
????????//事務(Transaction)是訪問并可能更新數據庫中各種數據項的一個程序執行單元(unit)
????????Transaction?ts?=?null;
????????String?hql?=?"";
?????????
????????try?{
????????????Session?session?=?MyHibernateSessionFactory.getSessionFactory().getCurrentSession();
????????????//開啟事物
????????????ts?=session.beginTransaction();
????????????//hql查詢語句
????????????hql?=?"from?Users?where?username=??and?password=??";
????????????//Query是Hibernate的查詢接口,用于從數據存儲源查詢對象及控制執行查詢的過程,Query包裝了一個HQL查詢語句
????????????org.hibernate.Query?query?=session.createQuery(hql);
????????????//傳遞參數
????????????query.setParameter(0,?u.getUsername());
????????????query.setParameter(1,?u.getPassword());
????????????//調用其中的方法得到結果??
????????????List?list?=query.list();
????????????ts.commit();
????????????if?(list.size()>0)?{
????????????????return?true;
????????????}?else?{
????????????????return?false;
????????????}
????????}
????????catch?(Exception?ex)?{
????????????//?TODO:?handle?exception???
????????????//打印異常對象
????????????ex.printStackTrace();
????????????return?false;
????????}
????????finally{
????????????//釋放事物對象資源
????????????if?(ts!=null)?{
????????????????ts=null;
????????????}
????????}
?????
????}
?????????
}
?
?
public?class?UsersAction?extends?superAction?implements?ModelDriven<Users>{
?????
????/**
?????*?
?????*/
????private?static?final?long?serialVersionUID?=?1L;
????private?Users?user?=?new?Users();
?????
????//用戶登錄動作
????public?String?login()?{
????????UsersDAO?udao?=new?UserDAOImpl();
????????if?(udao.usersLogin(user))?{
????????????return?"login_success";
????????}
????????else?{
????????????return?"login_failure";
????????}
?????????
????}
????@Override
????public?Users?getModel()?{
????????//?TODO?Auto-generated?method?stub
????????return?this.user;
????}
?
}
2018-03-09
public?boolean?usersLogin(Users?users)?{ ????//創建事務對象 ????Transaction?tx?=?null; ????try?{ ????????Session?session?=?MyHibernateSessionFactory.getSessionObject(); ????????tx?=?session.beginTransaction(); ????????Criteria?criteria?=?session.createCriteria(Users.class); ????????criteria.add(Restrictions.eq("username",users.getUsername())); ????????criteria.add(Restrictions.eq("password",users.getPassword())); ????????List<Users>?usersList?=?criteria.list(); ????????tx.commit(); ????????if(usersList.size()>0){ ????????????return?true; ????????}else?{ ????????????return?false; ????????} ????}catch?(Exception?e){ ????????e.printStackTrace(); ????????return?false; ????} }換一種查詢方式就對了