2016-11-04 1 views
-1

J'essaie de créer une page de connexion simple. Voici mon code:Authentification simple à l'aide de Servlet et Mysql

Servlet:

import java.io.IOException; 
    import java.io.PrintWriter; 
    import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.PreparedStatement; 
    import java.sql.ResultSet; 

    import javax.servlet.ServletException; 
    import javax.servlet.annotation.WebServlet; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 

    @WebServlet("/MySQLConnect") 
    public class MySQLConnect extends HttpServlet { 
     private static final long serialVersionUID = 1L; 

     //do post method calling 
     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
      response.setContentType("text/html"); 
      PrintWriter out = response.getWriter(); 
      String user = request.getParameter("user"); 
      String pass = request.getParameter("pass"); 
      try { 
       Class.forName("com.mysql.jdbc.Driver"); 
       Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javademo", "root", "admin"); 
       //prepared statement for calling query 
       PreparedStatement pst = conn.prepareStatement("Select user,pass from login where user=? and pass=?"); 
       pst.setString(1, user); 
       pst.setString(2, pass); 
       ResultSet rs = pst.executeQuery(); 
       if (rs.next()) { 
        out.println("Correct login credentials"); 
       } 
       else { 
        out.println("Incorrect login credentials"); 
       } 
      } catch (Exception e) { 

       e.printStackTrace(); 
      } 
      finally{} 

     } 
     } 

index.html:

<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <title>Insert title here</title> 
    </head> 
    <body> 
     <form method="post" action="MySQLConnect">   
      UserName :<input type="text" name="user" /><br/><br/> 
      Password :<input type="password" name="pass" /><br/><br/> 
      <input type="submit" value="Login" /> 
     </form> 
    </body> 
    </html> 

Web.xml

<display-name>AuthenticationUsingMySQL</display-name> 

     <servlet> 
     <servlet-name>MySQLConnect</servlet-name> 
     <servlet-class>MySQLConnect</servlet-class> 
     </servlet> 
    <servlet-mapping> 
     <servlet-name>MySQLConnect</servlet-name> 
     <url-pattern>/Login</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 

J'essaie d'ouvrir la page en utilisant

http://localhost:8080/AuthenticationUsingMySQL/Login

Mais il montre HTTP Status 405 - HTTP method GET is not supported par cette URL

+0

Vous avez en même temps deux config servlet d'annotation @WebServlet et web.xml, pourquoi? – rkosegi

+0

veuillez appeler http: // localhost: 8080/AuthenticationUsingMySQL/index.html pour la page de connexion. ceci devrait afficher le formulaire de connexion. soumettre le formulaire par la poste devrait appeler votre servlet. peut-être que vous avez besoin de corriger/vérifier certaines URL. –

Répondre

0

Vous ne pouvez pas utiliser directement te URL dans le navigateur comme webservlet soutient une requête POST, alors essayez POST la requête à partir de JSP uniquement ou utilisez les outils tels que POSTMAN, SOAPUI.

0

Si vous essayez d'ouvrir ce lien dans votre navigateur, cette erreur est logique. Vous devez utiliser un outil comme Fiddler ou configurer une méthode de test javascript pour tester votre code. Il semble que vous construisiez une méthode POST dans votre code. Les navigateurs Web, par défaut, utilisent GET pour accéder aux ressources Web, d'où la nécessité d'un outil différent capable d'effectuer un POST. Sinon, vous devrez modifier votre code pour qu'il accepte les requêtes GET.