Почему мой метод не получает мое логическое значение? - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть бит входа в мой сервлет.

else if (userPath.equals("/Login")) {
        String LuName = request.getParameter("LuserName");
        String Lpass = request.getParameter("Lpassword");
        boolean log = Boolean.parseBoolean(request.getParameter("loggedIn"));
        JavaSqlDb objDb2 = new JavaSqlDb("LineEquation");
        objDb2.SelectDataReturn(LuName, Lpass, log);
            String myUrl = "Welcome" + ".jsp";
            try {
                // Redirect back to the new URL with new data. Sending request from servlet to JSP.
                if (log == true) {
                request.getRequestDispatcher(myUrl).forward(request, response);
                }
                else {
                    System.out.println("Ya goofed.");
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }

    }

Метод для поиска значений, которые он получает.

public boolean SelectDataReturn(String LuserName, String Lpassword, boolean loggedIn) {
    // Public boolean or void?
    Statement s = null;
    ResultSet rs = null;
    String dbQuery = "SELECT * FROM Users WHERE userName = '" + LuserName + "' AND  password = '" + Lpassword + "' ";
    try {
        s = this.dbConn.createStatement();
        rs = s.executeQuery(dbQuery);
        if (rs.next()) {
            LuserName = rs.getString(1);
            Lpassword = rs.getString(2);
            //loggedIn = rs.getBoolean(3);
            loggedIn = true;
            System.out.println(dbQuery + "found.");
        } else {
            //LuserName = rs.getString(1);
            //Lpassword = rs.getString(2);
            loggedIn = false;
            System.out.println(dbQuery + "not found.");
        }
        String connectionURL = "jdbc:mysql://localhost:3306/" + this.dbName;
        this.dbConn = DriverManager.getConnection(connectionURL, "root", "mysql1");
        Statement st = this.dbConn.createStatement();
        st.executeQuery(dbQuery);
        dbConn.close();
    } catch (SQLException se) {
        System.out.println("SQL Error: Not able to find data.");
        se.printStackTrace(System.err);
        System.exit(0);
    }

    return loggedIn;
}

И основной метод.

public static void main(String[] args) {
    String tableName = "Users";
    ArrayList<ArrayList<String>> myData;
    String dbName = "LineEquation";
    String[] tableHeader = {"userName", "password"};
    JavaSqlDb objDb2 = new JavaSqlDb(dbName);
    myData = objDb2.getData(tableName, tableHeader);
    for (int row = 0; row < myData.size(); row++) {
        System.out.println(myData.get(row));
    }
    objDb2.insertData("b", "2");
    boolean test = objDb2.SelectDataReturn("Dhruv", "pass", false);
}

Я относительный новичок в сервлетах и ​​базах данных, так что вы можете понять, почему я не понимаю, почему, по какой-то причине, когда я ввожу значения в текстовые поля и отправляю их, я получаю ошибку 404 и / или пустой экран. Мой сервлет не получает мое логическое значение или что-то в этом роде, я иду на страницу, которая не существует?

1 Ответ

0 голосов
/ 27 февраля 2020

логические значения неизменны. Если вы хотите использовать логическое значение так, как вы хотите в своем примере кода, вам нужно использовать изменяемое логическое значение.

В этом посте есть несколько опций. Изменяемое логическое поле в Java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...