01/10/2018, 14:54

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;
    }
    
}
Noob viết 17:07 ngày 01/10/2018

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;
Phat.Le viết 16:56 ngày 01/10/2018

username=? and password=? chứ nhỉ

Duy Khanh viết 17:00 ngày 01/10/2018

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)

Bài liên quan
0