2017-12-12 5 views
-2

netbeans를 사용하여 Java 웹에 로그인 페이지를 만들고 있습니다. 하지만 프로그램을 실행할 때 약간의 문제가 발생했습니다. Welcome와 ErrorPage, 1 Index.html이라는 2 개의 JSP 파일이 있습니다. 소스 패키지에는 ControllerLogin.java 및 Login.java 클래스가 있습니다.Java 웹 로그인 페이지 오류

프로그램을 실행하면 로그인 페이지가 표시됩니다. 로그인 버튼을 클릭하면 주소 표시 줄 URL이 http://localhost:8080/WebLogin/에서 http://localhost:8080/WebLogin/ControllerLogin으로 빈 화면으로 바뀝니다.

설치 MySQL 데이터베이스가 있고 MYSQL JDBC 드라이버 라이브러리가 추가되었습니다.

이 내 컨트롤러 클래스 :

import ejd.JdbcHelper; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* 
* @author moiez 
*/ 
@WebServlet(urlPatterns = {"/ControllerLogin"}) 
public class ControllerLogin extends HttpServlet { 


@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    doPost(request, response); 
} 

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    //get request parms 
    String user = request.getParameter("user"); 
    String pass = request.getParameter("pass"); 


    try 
    { 
     if(user != null) 
     { 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
      Connection connection = DriverManager.getConnection(
            "jdbc:mysql://localhost:3306/TableName", 
            "root", 
            "abc"); 

     String sql = "SELECT username, password FROM login WHERE username=? and Password=?"; 


      PreparedStatement ps = connection.prepareStatement(sql); 
      ps.setString(1, user); // or "id" 
      ps.setString(2, pass); // or 2 
      ResultSet resultSet = ps.executeQuery(sql); 

      if(resultSet.next()) 
      { 
       RequestDispatcher rd = request.getRequestDispatcher("Welcome.jsp"); 
       rd.forward(request, response); 
      } 
      else 
      { 
      RequestDispatcher rd = request.getRequestDispatcher("ErrorPage.jsp"); 
      rd.forward(request, response); 
      } 

     } 



    } 
    catch(SQLException e) 
    { 
     System.err.println("FROM getUser(): " + e.getSQLState() + ": " + e.getMessage()); 
    } 
    catch(Exception e) 
    { 
     System.err.println(e.getMessage()); 

    } 


} 

}

이 index.html 파일입니다 : 이것은 아파치 톰캣 또는 TomEE에 받고있어 출력

<html> 
<head> 
    <title>Login Page</title> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
</head> 
<body> 
    <h1>Login</h1> 
    <form name="f1" action="ControllerLogin" method="post"> 
     User ID: <input type="text" name="user"> 
     <br><br> 
     Password: <input type="password" name="pass"> 
     <br><br> 
     <input type="submit" value="Login"> 
    </form> 
</body> 
</html> 

, 나는 내 SQL 구문을 두 번 확인했지만 왜 구문 오류가 발생하는지 알지 못합니다.

12-Dec-2017 10:46:14.205 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] 
12-Dec-2017 10:46:14.211 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 4602 ms 
FROM getUser(): S1009: Parameter index out of range (1 > number of parameters, which is 0). 
12-Dec-2017 11:24:20.725 INFO [http-nio-8080-exec-5] org.apache.catalina.core.StandardContext.reload Reloading Context with name [/WebLogin] has started 
12-Dec-2017 11:24:20.742 WARNING [http-nio-8080-exec-5] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [WebLogin] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 
12-Dec-2017 11:24:21.664 INFO [http-nio-8080-exec-5] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
12-Dec-2017 11:24:21.678 INFO [http-nio-8080-exec-5] org.apache.catalina.core.StandardContext.reload Reloading Context with name [/WebLogin] is completed 
FROM getUser(): 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? and Password=?' at line 1 

답변

-1

알아 냈어. 로그에 SQL 쿼리 구문이 있다고하더라도 데이터베이스 연결 문제였습니다. 이전 연결을 삭제하고 새 연결을 설정해야했습니다.