0

Recently i have been working on one of my web application project and i'm finding a problem connecting to Mysql from Intellij. I always used Eclipse, but now i changed IDE. The servlet runs and doesn't show any error, but it's unable to fetch data from Mysql Database. I'm attaching all the Servlet and Xml Page. Help me with that.

I'm getting the index page and when i enter credentials it shows incorrect password or username though data is present in database. Picture of Index page after entering credentials : Index.jsp

Index.jsp

    <html>
<head>
  <title>login form</title>
</head>
<body>
<form method="post" action="Login">
  Username:<input type="text" name="username" /><br/>
  Password:<input type="password" name="password" /><br/>
  <input type="submit" value="Login" />
</form>
</body>
</html>

Login Servlet

    import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class Login extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        String username = request.getParameter("username");
        String password = request.getParameter("password");

        if(validate.checkUser(username,password))
        {
            RequestDispatcher rs = request.getRequestDispatcher("Welcome");
            rs.forward(request, response);
        }
        else
        {
            out.println("Username or Password incorrect");
            RequestDispatcher rs = request.getRequestDispatcher("index.jsp");
            rs.include(request, response);
        }
    }
}

Validate Servlet

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class validate {

        public static boolean checkUser(String username, String password)
        {
            boolean st =false;



            try{

                //loading drivers for mysql
                Class.forName("com.mysql.jdbc.Driver");

                //creating connection with the database
                Connection con= DriverManager.getConnection
                        ("jdbc:mysql:/ /localhost:8080/login","root","admin");
                PreparedStatement ps =con.prepareStatement
                        ("select * from log where username=? AND password = ?");
                ps.setString(1, username);
                ps.setString(2, password);
                ResultSet rs =ps.executeQuery();
                st = rs.next();

            }catch(Exception e)
            {
                e.printStackTrace();
            }
            return st;
        }
    }

Welcome Servlet

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class Welcome extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("Welcome user");
    }
}

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>Login</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>Welcome</servlet-name>
        <servlet-class>Welcome</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>validate</servlet-name>
        <servlet-class>validate</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/Login</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Welcome</servlet-name>
        <url-pattern>/Welcome</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>validate</servlet-name>
        <url-pattern>/validate</url-pattern>
    </servlet-mapping>
</web-app>
Abhishek P
  • 95
  • 1
  • 9
  • There is a spurious space in your JDBC url, remove it. And it is unlikely that your MySQL server is running on port 8080, that is usually used for (private) HTTP services, remove the port to use the default of 3306, or specify the real port of your MySQL service. And I really think you are ignoring an exception somewhere in the tomcat logs, but you should really use a logging framework, not `exception.printStackTrace()`. – Mark Rotteveel Feb 11 '18 at 10:33
  • First i tried with port 3306 but it didn't work. And you mentioned i was ingnoring some exception and to use logging framework. I'm not getting the point exactly as i have comparatively less experience with setvlets. Can you elaborate a little please? – Abhishek P Feb 11 '18 at 10:45

0 Answers0