login.jsp      ---------登陆页面
         <s:form action="validation" method="post">
<s:textfield label="用户名" name="user.username" />
<s:password label="密码" name="user.password" />
<tr>
<td><s:submit value="登陆" method="validation" theme="simple" /></td>
<td><s:a href="../register/register.jsp" theme="simple">注册</s:a></td>
</tr>
</s:form>struts.xml     ---------struts里面的validation配置
                   <action name="validation" class="struts2.action.userAction" method="validation">
<result name="success">/user/success.jsp</result>
<result name="error">/user/error.jsp</result>
</action>userAction.java    --------validation的代码
          public String validation() throws Exception
{
boolean validate = DAOFactory.getInstance().getUserDAO().validate(username, password);
if(validate)
{
return SUCCESS;
}else
{
return ERROR;
}userDao.java         ---------DAO的验证代码
public boolean validate(String username, String password)
{
String sql = "from User u where u.username = ? and u.password = ?";
Query query = getSession().createQuery(sql);
query.setString(0, username);
query.setString(1, password);
List list = query.list(); if(null == list || 0 == list.size())
{
return false;
}else
{
return true;
}
}我只发出关键代码,如上面的,情况是这样,我在userDAO里面用主函数去使用验证代码是没有问题的,完全正常,但是我在用login.jsp提交给action处理时,返回的validate布尔值却是false,使用了很多方法就是不明白哪里出问题,已经蛋疼小弟很多天了,跪求各位大神帮帮小弟,需要其他代码的小弟马上补上

解决方案 »

  1.   

    userDao.java ---------DAO的验证代码
    public boolean validate(String username, String password)
    {
    String sql = "from User u where u.username = ? and u.password = ?";
    Query query = getSession().createQuery(sql);
    query.setString(0, username);
    query.setString(1, password);
    List list = query.list();if(null == list || 0 == list.size())
    {
    return false;
    }else
    {
    return true;
    }
    }我做的话是
    userDao.java ---------DAO的验证代码
    public boolean validate(String username, String password)
    {
    String sql = "from User u where u.username = ?";
    Query query = getSession().createQuery(sql);
    query.setString(0, username);
    List list = query.list();接着验证密码 你试试
    }
      

  2.   

    既然楼主的userDao的 validate()方法没有问题,就先看看,你在login.jsp页面提交到后台userAction.java中的username,和password是否存在,在控制台输出一下,或设置一个断点,看看是否取到了值,
      

  3.   

    已经试过将输入的用户名和密码发送到error.jsp页面,能够正常显示,也尝试过是否trim()的问题,但测试后认为应该不是原因...
      

  4.   

    hibernate生成的sql显示在控制台上  然后在数据库中运行这个sql语句 看看能不能查到数据 好好检查一下这个sql语句有没有问题