Lỗi không nhận database sql server jdbc trong servlet

Hello Everyone!

Mình đang làm cái phần đăng nhập của cái servlet mà mình dùng jdbc của cái sql server mà tự nhiên không nhận được giá trị từ cột Username và Password là “admin” và “admin”. Mặc dù mình add rồi nhưng nó không hoạt động được. Chắc là do lỗi connection. Các cao nhân xem giùm em.

Login.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Quan ly may tinh</title>
        <link rel="stylesheet" type="text/css" href="style/style.css" />
    </head>
    <body>
       <h1>Login</h1>
        <form action="login" method="POST">
            <table>
                <tr>
                    <td>Username</td>
                    <td><input type="text" name="username" value="" /></td>
                </tr>
                <tr>
                    <td>Password</td>
                    <td><input type="password" name="password" value="" /></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" value="Login" /></td>
                </tr>
            </table>
        </form>
    </body>
</html>

LogInController.java

package com.QLMT.controller;

import com.QLMT.dao.LogInDAO;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.RequestDispatcher;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Admin
 */
@WebServlet(name = "LogInController", urlPatterns = {"/login"})
public class LogInController extends HttpServlet 
{
    public LogInController()
    {
        super();
    }
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
        
        PrintWriter out = response.getWriter();
        
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        
        if(LogInDAO.validate(username, password) == true)
        {
            out.println("Login successfully");
        }
        else
        {
            out.println("Login failed");
        }
        
    }
}

LogInDAO.java:

package com.QLMT.dao;

import java.sql.*;
public class LogInDAO 
{
    public static boolean validate(String usr, String pss)
    {
        boolean status = false;
        try
        {
            Class.forName("com.microsoft.sqlserver.jdbc.SqlServerDriver");
            Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=QLMT;user=sa;password=Bomaydeobiet2004");
            
            Statement s = con.createStatement();
            
            ResultSet rs = s.executeQuery("select * from Account where Username=? Password=?");
            usr = rs.getString("Username");
            pss = rs.getString("Password");
            status = rs.next();
            
        }
        catch(Exception e)
        {
            System.err.print(e);
        }
        
        return status;
    }
    
}

Bạn thử sửa code thành như này xem vì khi thực thi truy vấn Resultset trả vể con trỏ trỏ tới trước kết quả đầu tiên của truy vấn

if (rs.next()){
    System.out.println(rs.getString("Username"))
    return true;
}
return false;
1 Like

username=? and password=? chứ nhỉ

2 Likes

Bạn sửa lại lệnh sql thực thi bởi Statement nhé, hai chỗ ? thay bằng usr, pss (dùng cộng chuỗi)

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?