Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 连接MySql和Servlet进行登录页面_Java_Mysql_Jsp_Tomcat_Servlets - Fatal编程技术网

Java 连接MySql和Servlet进行登录页面

Java 连接MySql和Servlet进行登录页面,java,mysql,jsp,tomcat,servlets,Java,Mysql,Jsp,Tomcat,Servlets,如何将MySql数据库连接到servlet进行登录页面? 现在在servlet中,我有预定义用户名(gogikole)和密码(1234)的代码 但如何检查数据库中其他用户的用户名和密码是否正确? 例如用户名:konsta,密码:4321 我有这样的代码: 登录Servlet package servlets; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annot

如何将MySql数据库连接到servlet进行登录页面? 现在在servlet中,我有预定义用户名(gogikole)和密码(1234)的代码

但如何检查数据库中其他用户的用户名和密码是否正确? 例如用户名: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>

登录页面
用户名
密码


另外,我已经将mysqlconnector添加到Eclipse中。

首先,您应该使用MysqlConnection连接到mysql

然后,使用类似sql的
从username=:username和password=:password的用户中选择*来创建一条语句,然后执行它

您将获得一个结果集,其中包含match user的结果,当然,如果用户名或密码错误,则结果集为空

解决您的问题的关键是您应该查询
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;
}

嗯,您有
if(username.equals(“gogikole”)和password.equals(“1234”){
——您可以添加
if(username.equals(“konsta”)和password.equals(“4321”){
——但这似乎不是一个特别可扩展的解决方案;如果有地方可以存储像用户名和(哈希)这样的关系数据类型就好了密码…请遵循JPA或JPA的教程JDBC@ElliottFrisch是的,但是如果有很多用户,比如100个或更多,该怎么办呢
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;
}