2014-12-06 67 views
1

我在基于Spring的Java项目中实现密码恢复功能。这是我的方法对于使用Spring JDBC模板从mysql数据库检索Timestamp值

  1. 用户点击忘记密码的链接
  2. 在下一屏,用户输入已经习惯了他/她的账户注册
  3. 系统他的电子邮件地址生成UUID令牌,并将其与用户输入的电子邮件地址一起保存在数据库表中。此外,到期时间将作为Timestamp的值保存在数据库中
  4. 包含重置密码链接的电子邮件将发送给用户。 (UUID令牌包含在电子邮件中)
  5. 当用户单击电子邮件中的链接时,他/她将被重定向到密码重置页面。
  6. 在该页面中,系统使用UUID令牌自动将用户的电子邮件地址设置为文本字段。 在这里,我需要检查到期时间是否到期。为此,我需要使用UUID token.

我用这个代码段来获取到期时间timestamp值与它从数据库中获取到期时间Timestamp value的当前时间Timestamp value比较。

@Override 
     public String checkValidityOfToken(UUID token) { 

      System.out.println("INFO:token in Login Dao Impl = "+token); 
      java.sql.Timestamp ex_time; 
      try{ 
       String sql = "SELECT expiray_time FROM recover_password WHERE token = "+token; 
       ex_time = getJdbcTemplate().queryForObject(sql, java.sql.Timestamp); 
       System.out.println("INFO: first total = "+ex_time); 
      }catch(Exception exx){ 
       System.out.println("error while taking saved time count for a matching token "+exx); 
      } 
} 

虽然java.sql.TimestampqueryForObject()由Eclipse的建议时,我打ctrl+space,Eclipse中显示有错误。这是为什么。 此任务的正确代码段是什么。

然后我用这个,

String sql = "SELECT expiray_time FROM recover_password WHERE token = ?"; 
ex_time = getJdbcTemplate().queryForObject(sql, new Object[] { token }, java.sql.Timestamp); 

在这种情况下,同样java.sql.Timestamp无法识别。包含上述方法的类扩展了SimpleJdbcDaoSupport。

OR

难道我用检查密码重置链接的有效性的错误的方式?如果是的话什么是实施它的好方法?

回答

1

queryForObject(String, Class)方法将Class实例作为其第二个参数。因此,正确的语法是这样的:

getJdbcTemplate().queryForObject(sql, java.sql.Timestamp.class); 

您使用的代码不是有效的Java代码,这是它无法编译的原因。

+0

谢谢各有不同 – vigamage 2014-12-06 17:06:58

相关问题