2013-09-22 3 views
0

Я пытаюсь создать пароль для возврата в html. Когда я отправлю кнопку сброса, она перейдет в ResetPasswordServlet. Затем контроллер перейдет из сервлета в CustomerDAO. Там необходимо обновить базу данных. Я также создал соединение с базой данных. Я тестировал его, но он не работает (не обновляется в базе данных.) Я знаю, что с моим кодом что-то не так, но я не могу понять это.Сбросить пароль, если кто-то забыли пароль

Вот мой код. Может ли кто-нибудь помочь мне разобраться, где я делаю неправильно. Большое спасибо.

ResetPasswordServlet

package com.dao; 

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public ResetPasswordServlet() { 
    super(); 
    // TODO Auto-generated constructor stub 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 

    PrintWriter out = response.getWriter(); 

    out.println("<html><body>"); 
    out.println("<center><h2>Reset your password</h2></center>"); 
    out.println("<form action=ResetPassword method=post>"); 
    out.println("Enter your username <input type=text name=LoginId><br> "); 
    out.println("Enter your new Password<input type=password name=password><br>"); 
    out.println("Confirm your new Password <input type=password name=confirm><br>"); 
    out.println("<input type=submit value=RESET>"); 
    out.println("</form>"); 
    out.println("</body></html>"); 

} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    CustomerDAO customerDAO = new CustomerDAO(); 
    String loginId = request.getParameter("LoginId"); 
    String loginPassword = request.getParameter("password"); 
    String confirmPassword = request.getParameter("confirm"); 

    Login login = customerDAO.resetPassword(loginId, loginPassword, confirmPassword); 
} 

}

CustomerDAO

public Login resetPassword(String loginId, String loginPassword, String confirmPassword) { 
    Login login = null; 
    try { 
     BaseDAO baseDAO = new BaseDAO(); 
     Connection c =baseDAO.getConnection(); 
     String query = "update test.Customer set LoginPassword=?, ConfirmPassword=? where LoginId=?" ; 
     PreparedStatement ps = c.prepareStatement(query); 
     ps.setString(1, loginId); 
     ps.setString(2, loginPassword); 
     ps.setString(3, confirmPassword); 
     System.out.println(loginId); 
     System.out.println(loginPassword); 
     System.out.println(confirmPassword); 

     int i = ps.executeUpdate(); 
     if(i==1) { 
      System.out.println("record updated successfully"); 
     }else { 
      System.out.println("record not updated."); 
     } 
     c.close(); 
    }catch(Exception e) { 
     e.printStackTrace(); 
    } 
    return login; 
} 

Я сделал некоторые изменения в коде.

Когда я отправляю кнопку, она не показывает никаких ошибок, а также не обновляется в базе данных. В CustomerDAO выполняется блок else и печатается запись, не обновляемая.

+0

Вы могли бы показать стек, который вы получите? –

ответ

0

Ваша проблема заключается в следующем коде:

String query = "update test.Customer set LoginPassword=?, ConfirmPassword=? where LoginId=?" ; 
    PreparedStatement ps = c.prepareStatement(query); 
    ps.setString(1, loginId); 
    ps.setString(2, loginPassword); 
    ps.setString(3, confirmPassword); 

Порядок ваших заполнителей в строке запроса SQL является:

  • LoginPassword
  • ConfirmPassword
  • LoginID

Но порядок параметров

  • LoginID
  • LoginPassword
  • ConfirmPassword

Таким образом, вы пытаетесь обновить запись с LoginId стоимости ConfirmPassword что очень маловероятно, чтобы существовать.

N.B. Почему вы сохраняете пароль подтверждения? Не имеет ли смысл сервлету проверять, что LoginPassword равен ConfirmPassword и показывает ошибку, если это не так, а не обновление БД?

+0

Спасибо. и вы правы, но у меня есть проблема с этим (показывая страницы ошибок). Я использую javascript, но он не работает. См. Эту ссылку. http://stackoverflow.com/questions/18949251/javascript-validation-form-is-not-working – sapan

Смежные вопросы