html로 암호를 재설정하려고합니다. 리셋 단추를 제출하면 ResetPasswordServlet으로 이동합니다. 그런 다음 컨트롤러는 Servlet에서 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 블록이 실행되고 업데이트되지 않은 레코드가 인쇄됩니다.
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 쿼리 문자열에 자리 표시의 순서는 다음과 같습니다 :
스택 추적을 표시 할 수 있습니까? –