我将如何匹配此 Java servlet 中数据库中的用户名和密码。 JDBC 和 Servlet

Posted

技术标签:

【中文标题】我将如何匹配此 Java servlet 中数据库中的用户名和密码。 JDBC 和 Servlet【英文标题】:How will I match the Username and Pass from the database in this Java servlet. JDBC and Servlet 【发布时间】:2018-09-03 15:17:43 【问题描述】:

我正在尝试将我的 html 登录页面与数据库连接。我编写了这个 servlet,但在连接中遇到了一些错误。

        String name=request.getParameter("uname");//Passing the HTML tag to he string
        String psw= request.getParameter("psw");//
        String QUERY="SELECT *FROM login WHERE EMAIL=?,PASS=?"; //Query 




        Class.forName("com.mysql.jdbc.Driver");//Connection
        try (Connection con = DriverManager.getConnection("jdbc:mysql://localhost/SmallERP", "root", "root")) 
            PreparedStatement ps = con.prepareStatement(QUERY);
            ps.setString(1, name);
            ps.setString(2, psw);
            try (ResultSet rs = ps.executeQuery()) 
                if(rs.next())
                    out.println("Done");
                else
                    out.println("ERROR");
                
            
        

【问题讨论】:

【参考方案1】:

你必须在这里使用AND。修改后的查询:

String QUERY="SELECT * FROM login WHERE EMAIL=? And PASS=?";

我的完整示例是:-

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class GetUserDetailsUsingPS 

    public static void main(String[] args) throws ClassNotFoundException, SQLException 

        // read user entered data
        Scanner scanner = new Scanner(System.in);
        System.out.println("Please enter email id:");
        String id = scanner.nextLine();
        System.out.println("User id=" + id);
        System.out.println("Please enter password to get details:");
        String pwd = scanner.nextLine();
        System.out.println("User password=" + pwd);
        printUserData(id, pwd);
    

    private static void printUserData(String id, String pwd) throws ClassNotFoundException,
            SQLException 

        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String query = "select name, country, password from Users where email = ? and password = ?";
        try 
            con = DBConnection.getConnection();
            ps = con.prepareStatement(query);

            //set the parameter
            ps.setString(1, id);
            ps.setString(2, pwd);
            rs = ps.executeQuery();

            while (rs.next()) 
                System.out.println("Name=" + rs.getString("name") + ",country="
                        + rs.getString("country") + ",password="
                        + rs.getString("password"));
            
         finally 
            if (rs != null)
                rs.close();
            ps.close();
            con.close();
        

    

【讨论】:

成功了。非常感谢。 非常感谢! @ShanuSingh 确认“我很高兴能帮助你”

以上是关于我将如何匹配此 Java servlet 中数据库中的用户名和密码。 JDBC 和 Servlet的主要内容,如果未能解决你的问题,请参考以下文章

如何在 HttpSession 中存储 Java 对象?

如何在 Java Servlet 中接收大字符串?

在 servlet 过滤器中,如何确定哪个 servlet 与 URL 匹配?

如何将整个简历存储在 servlet/jsp 中的 mysql 数据库中?

一个请求和多个servlet-mapping匹配,会去执行哪个servlet???

java servlet url patterns 路径匹配