• 11-08-2023, 18:07:11
    #1
    login sayfasında girilen bilgileri veritabanından nasıl sorgulayacağımı bir türlü yapamadım girilen mail ve şifre veritabanında varsa giriş başarılı desin, yoksa kayıt sayfasına yönlendirsin. yardımcı olana saygı duyarım. isterse 1 dürüm ısmarlarım.

    jsp kodu;

    login servlet kodu ;

    vt bağlantı kodu;

    login sayfasında bilgileri girip girişe basınca karşıma çıkan sayfa, bu sayfa çıkmasa bile giriş sayfasındaki bilgileri adres çubuğuna yollayıp sayfayı yeniliyor yani hiçbir şey olmuyor.

  • 11-08-2023, 18:15:59
    #2
    https://www.codejava.net/java-ee/ser...-404-not-found

    Tomcat, java sınıfınızı bulamıyor.
  • 11-08-2023, 18:17:43
    #3
    mkozdogan adlı üyeden alıntı: mesajı görüntüle
    https://www.codejava.net/java-ee/ser...-404-not-found

    Tomcat, java sınıfınızı bulamıyor.
    hocam bundan önce de girilen bilgileri post olarak adres çubuğuna gönderiyordu. yani sorgulama yapmıyor aslında en son resmi özellikle ekledim. onu çözdüm ama giriş sayfasında email şifre girip girişe basınca bilgileri adres çubuğuna yollayıp sayfayı yeniliyor yani hiçbir şey olmuyor.
  • 11-08-2023, 18:28:49
    #4
    birde hocam input da name password siz sifre diyorsunuz o da var hatalar arasında snrm
  • 11-08-2023, 18:32:25
    #5
    Kodlar normal gibi geldi. LongServlet'in tanınmasında bir sıkıntı olabilir. Yine de kodları aşağıda attığım gibi revize edip deneyin isterseniz.
    JSP:
    <body>
    <div class="login-box">
    <h2>Giriş</h2>
    <form action="LoginServlet" method="post">
    <input type="email" name="email" placeholder="Email" required>
    <input type="password" name="password" placeholder="Şifre" required> 
    <button type="submit">Giriş</button>
    <div class="register-link">
    <p>Hesabınız yok mu? <a href="kayit.jsp">Kayıt olun</a></p>
    </div>
    </form>
    </div>
    </body>
    </html>
    LoginServlet:
    public class LoginServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
            String email = request.getParameter("email");
            String sifre = request.getParameter("password");
    
            // Veritabanı bağlantısı oluşturma
            String url = "jdbc:postgresql://localhost:5432/Mulakat";
            String username = "postgres";
            String dbPassword = "jacobo93";
            
            try {
                Connection baglanti = DriverManager.getConnection(url, username, dbPassword);
    
                // Veritabanı sorgusu oluşturma
                String query = "SELECT * FROM users WHERE email = ? AND sifre = ?";
                PreparedStatement preparedStatement = baglanti.prepareStatement(query); 
                preparedStatement.setString(1, email); 
                preparedStatement.setString(2, sifre);
                
                ResultSet resultSet = preparedStatement.executeQuery();
                if (resultSet.next()) {
                    // Giriş başarılı
                    response.getWriter().write("Giriş başarılı!");
                } else {
                    // Giriş başarısız
                    response.getWriter().write("Giriş başarısız!");
                    response.sendRedirect("kayit.jsp");
                }
                // Kapatma işlemleri
                resultSet.close();
                preparedStatement.close();
                baglanti.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    Veritabanı bağlantısı:
    import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.SQLException;
    
    public class DBConnect {
        static String url = "jdbc:postgresql://localhost:5432/Mulakat"; 
        public static Connection baglanti = null;
    
        public static void connect() throws SQLException {
            try {
                // JDBC sürücüsünü yükleme (eğer gerekliyse)
                // Class.forName("org.postgresql.Driver");
                
                baglanti = DriverManager.getConnection(url, "postgres", "jacobo93");
                
                if(baglanti != null) {
                    System.out.println("Veritabanı bağlantısı tamamlandı");
                } else {
                    System.out.println("Veritabanı bağlantısı başarısız.");
                }
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }
  • 11-08-2023, 18:37:33
    #6
    GVertigang adlı üyeden alıntı: mesajı görüntüle
    Kodlar normal gibi geldi. LongServlet'in tanınmasında bir sıkıntı olabilir. Yine de kodları aşağıda attığım gibi revize edip deneyin isterseniz.
    JSP:
    <body>
    <div class="login-box">
    <h2>Giriş</h2>
    <form action="LoginServlet" method="post">
    <input type="email" name="email" placeholder="Email" required>
    <input type="password" name="password" placeholder="Şifre" required>
    <button type="submit">Giriş</button>
    <div class="register-link">
    <p>Hesabınız yok mu? <a href="kayit.jsp">Kayıt olun</a></p>
    </div>
    </form>
    </div>
    </body>
    </html>
    LoginServlet:
    public class LoginServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            String email = request.getParameter("email");
            String sifre = request.getParameter("password");
    
            // Veritabanı bağlantısı oluşturma
            String url = "jdbc:postgresql://localhost:5432/Mulakat";
            String username = "postgres";
            String dbPassword = "jacobo93";
            
            try {
                Connection baglanti = DriverManager.getConnection(url, username, dbPassword);
    
                // Veritabanı sorgusu oluşturma
                String query = "SELECT * FROM users WHERE email = ? AND sifre = ?";
                PreparedStatement preparedStatement = baglanti.prepareStatement(query);
                preparedStatement.setString(1, email);
                preparedStatement.setString(2, sifre);
                
                ResultSet resultSet = preparedStatement.executeQuery();
                if (resultSet.next()) {
                    // Giriş başarılı
                    response.getWriter().write("Giriş başarılı!");
                } else {
                    // Giriş başarısız
                    response.getWriter().write("Giriş başarısız!");
                    response.sendRedirect("kayit.jsp");
                }
                // Kapatma işlemleri
                resultSet.close();
                preparedStatement.close();
                baglanti.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    Veritabanı bağlantısı:
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class DBConnect {
        static String url = "jdbc:postgresql://localhost:5432/Mulakat";
        public static Connection baglanti = null;
    
        public static void connect() throws SQLException {
            try {
                // JDBC sürücüsünü yükleme (eğer gerekliyse)
                // Class.forName("org.postgresql.Driver");
                
                baglanti = DriverManager.getConnection(url, "postgres", "jacobo93");
                
                if(baglanti != null) {
                    System.out.println("Veritabanı bağlantısı tamamlandı");
                } else {
                    System.out.println("Veritabanı bağlantısı başarısız.");
                }
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }
    maalesef olmadı hocam. aynen alıp yapıştırdım şu sayfa çıktı. bomboş beyaz sayfa ;


    sonra try catch'e hata metni ekledim bakalım veritabanında mı sorun var diye. evet ;

  • 11-08-2023, 18:40:07
    #7
    srabey adlı üyeden alıntı: mesajı görüntüle
    maalesef olmadı hocam. aynen alıp yapıştırdım şu sayfa çıktı. bomboş beyaz sayfa ;


    sonra try catch'e hata metni ekledim bakalım veritabanında mı sorun var diye. evet ;

    catch (SQLException e) {
    response.getWriter().write("Veritabanı bağlantı hatası: " + e.getMessage());
    e.printStackTrace();
    }
    kodunu ekleyip hata mesajını paylaşır mısınız ne olduğunu görelim.
  • 11-08-2023, 18:44:52
    #8
    GVertigang adlı üyeden alıntı: mesajı görüntüle
    catch (SQLException e) {
    response.getWriter().write("Veritabanı bağlantı hatası: " + e.getMessage());
    e.printStackTrace();
    }
    kodunu ekleyip hata mesajını paylaşır mısınız ne olduğunu görelim.
    şu hatayı veriyor.


    postgresql jar indirip database>driver kısmından ekledim. sonuç aynı önceden de ekliydi zaten. yoksa giriş başarılı diye mesaj vermezdi. bu sayfa veritabanını kontrol ettiğim sayfa. email şifre kısmı aynı veritabanında yazıldığı gibi. ;


    bu sayfanın çıktısı konsol ekranı ;

  • 11-08-2023, 18:53:54
    #9
    srabey adlı üyeden alıntı: mesajı görüntüle
    şu hatayı veriyor.


    postgresql jar indirip database>driver kısmından ekledim. sonuç aynı önceden de ekliydi zaten. yoksa giriş başarılı diye mesaj vermezdi. bu sayfa veritabanını kontrol ettiğim sayfa. email şifre kısmı aynı veritabanında yazıldığı gibi. ;


    bu sayfanın çıktısı konsol ekranı ;

    Dokümantasyonda(https://www.postgresql.org/docs/7.4/jdbc-use.html) sürücüyü kod ile yüklemeyi söylüyor.
    DriverManager.getConnection satırından önce
    Class.forName("org.postgresql.Driver");
    ekler misiniz?