Соедините MySql с сервлетом для страницы входа - PullRequest
0 голосов
/ 09 мая 2018

Как связать базу данных MySql с сервлетом для страницы входа? На данный момент в сервлете у меня есть код для предопределенного имени пользователя (gogikole) и пароля (1234)

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

            if (username.equals("gogikole") && password.equals("1234")) {
                response.sendRedirect("mainMenu.jsp");
                return;
            }

но как проверить правильность имени пользователя и пароля для некоторых других пользователей из базы данных? Например, имя пользователя: konsta, пароль: 4321

У меня есть такой код:

Логин Servlet

package servlets;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.*;

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

    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        if (username.equals("gogikole") && password.equals("1234")) {
            response.sendRedirect("mainMenu.jsp");
            return;
        }
    }
}

login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login page</title>
</head>
<body>
<form method="post" action="LoginServlet">
    <table align="center">
        <tr>
            <td>User name</td>
            <td><input type="text" name="username"></td>
        </tr>
        <tr>
            <td>Password</td>
            <td><input type="password" name="password"></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" value="Login"></td>
        </tr>
    </table>
</form>
</body>
</html>

enter image description here

Также я уже добавил mysqlconnector в Eclipse.

1 Ответ

0 голосов
/ 09 мая 2018

Во-первых, вам нужно подключиться к mysql, используя MysqlConnection.

Затем создайте оператор, используя sql, например SELECT * FROM users WHERE username = :username AND password = :password. Затем выполните его.

Вы получите набор результатов, который содержит результатыКонечно, если пользователь совпадает с именем пользователя или паролем, набор результатов будет пуст.

Ключ к решению вашей проблемы заключается в том, что вы должны запросить базу данных вместо username.equals("gogikole") && password.equals("1234")

Пример:

final String DB_URL = "localhost:3306/db";  //Mysql Address
final String USER = "root";  //mysql username
final String PASS = "123456";//mysql password
final String SQL = "SELECT * FROM users WHERE username = ? AND password = ?";  //SQL
String username = request.getParameter("username");
String password = request.getParameter("password");
Connection conn = null;  //mysql connection
Statement stmt = null;   //mysql statement
Class.forName("com.mysql.jdbc.Driver");  //register driver
conn = DriverManager.getConnection(DB_URL,USER,PASS); //get connection
stmt = conn.prepareStatement(SQL); //create statement
//init param
stmt.setString(1,username);
stmt.setString(2,password);
ResultSet rs = stmt.executeQuery();  //execute query
if(rs.first()){ //finded
    response.sendRedirect("mainMenu.jsp");
    return;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...