2012-01-23 1 views
-1

거의 완전한 로그인 시스템을 만들었지 만 데이터베이스에 아무 것도 쓰여 있지 않기 때문에 등록 페이지가 작동하지 않습니다. 이유를 이해할 수 없습니까? 여기작동하지 않는 레지스터 페이지에서 오류를 찾을 수 없습니다

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<table> 
<form action="RegistraUtenteServlet" method="get"> 
<tr><td><b>Nome</b> 
<td><input type="text" name="nomeDaRegistrare"><td></tr> 
<tr><td><b>Cognome</b></td> 
<td><input type="text" name="cognomeDaRegistrare"></td></tr> 
<tr><td><b>Email</b></td> 
<td><input type="text" name="emailDaRegistrare"></td></tr> 
<tr><td><b>Username</b></td> 
<td><input type="text" name="passwordDaRegistrare"></td></tr> 
<tr><td><input type="submit" value="Registrati"></td></tr> 
</form> 
</table> 

관리자 클래스 "UtentiManager.java"입니다 : 여기

은 JSP 로그인 페이지 "LoginPage.jsp는"의

public class UtentiManager { 

public void registraUtente(String nomeDaRegistrare, String cognomeDaRegistrare,String emailDaRegistrare, int tipoDaRegistrare, String passwordDaRegistrare) throws SQLException { 
    Connection con = DBConnectionPool.getConnection(); 
    String query = "INSERT INTO utenti(nome,cognome,email,tipo,password) VALUES(?,?,?,?,?)"; 
    PreparedStatement ps=con.prepareStatement(query); 
    ps.setString(1, nomeDaRegistrare); 
    ps.setString(2, cognomeDaRegistrare); 
    ps.setString(3, emailDaRegistrare); 
    ps.setInt(4, tipoDaRegistrare); 
    ps.setString(5, passwordDaRegistrare); 
    ps.executeUpdate(); 
    ps.close(); 
} 
} 

여기 서블릿 "RegistraUtenteServlet.java"입니다 :

public class RegistraUtenteServlet extends HttpServlet { 
protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException, SQLException { 
    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 
    try { 
     UtentiManager um = new UtentiManager(); 
     String nomeDaRegistrare = request.getParameter("nomeDaRegistrare"); 
     String cognomeDaRegistrare = request.getParameter("cognomeDaRegistrare"); 
     String emailDaRegistrare = request.getParameter("emailDaRegistrare"); 
     String passwordDaRegistrare = request.getParameter("passwordDaRegistrare"); 
     int tipoDaRegistrare = 1; 
     um.registraUtente(nomeDaRegistrare, cognomeDaRegistrare, emailDaRegistrare, tipoDaRegistrare, passwordDaRegistrare); 
    } finally {    
     out.close(); 
    } 
} 

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 
/** 
* Handles the HTTP <code>GET</code> method. 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    try { 
     processRequest(request, response); 
    } catch (SQLException ex) { 
     Logger.getLogger(RegistraUtenteServlet.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

/** 
* Handles the HTTP <code>POST</code> method. 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    try { 
     processRequest(request, response); 
    } catch (SQLException ex) { 
     Logger.getLogger(RegistraUtenteServlet.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

/** 
* Returns a short description of the servlet. 
* @return a String containing servlet description 
*/ 
@Override 
public String getServletInfo() { 
    return "Short description"; 
}// </editor-fold> 
} 

도와주세요!

+0

무엇이 작동하지 않습니까? 어떤 예외? 예상되고 실제적인 행동은 무엇입니까? –

+0

login 및 showUsers와 같은 응용 프로그램의 다른 구성 요소가 작동하더라도 INSERT가 작동하지 않으며 db에 아무 것도 삽입되지 않습니다. – Franky

답변

0

메서드는 절대 연결을 커밋하고 닫습니다. 변경하려면

public void registraUtente(String nomeDaRegistrare, String cognomeDaRegistrare,String emailDaRegistrare, int tipoDaRegistrare, String passwordDaRegistrare) throws SQLException { 
    Connection con = DBConnectionPool.getConnection(); 
    PreparedStatement ps = null; 
    try { 
     String query = "INSERT INTO utenti(nome,cognome,email,tipo,password) VALUES(?,?,?,?,?)"; 
     ps = con.prepareStatement(query); 
     ps.setString(1, nomeDaRegistrare); 
     ps.setString(2, cognomeDaRegistrare); 
     ps.setString(3, emailDaRegistrare); 
     ps.setInt(4, tipoDaRegistrare); 
     ps.setString(5, passwordDaRegistrare); 
     ps.executeUpdate(); 
     con.commit(); 
    } 
    finally { 
     if (ps != null) { 
      try { 
       ps.close(); 
      } 
      catch (SQLException ignored) { 
      } 
     } 
     try { 
      con.close(); 
     } 
     catch (SQLException ignored) { 
     } 
    } 
} 
+0

전체 작업 ... 원하는 경우 질문이 있습니다 ... "커밋"은 간단한 javaapplication에서 작동하며 jsp/servlet 페이지에서 작동하지 않습니까? – Franky

+1

간단한 Java 응용 프로그램은 자동 연결 기능을 사용하는 연결을 반환하는 드라이버로부터 직접 연결을 가져올 수 있습니다. 그러나 자동 커밋은 거의 사용되지 않아야합니다. webapp는 연결 풀을 사용합니다. 연결 풀은 자동 연결을 사용할 수 없도록 설정하여 풀링 할 수있는 연결을 반환합니다 (좋은 일입니다). –

+0

많은 감사 :)) – Franky

관련 문제