Проблема с jsp логином от базы данных Mysql

Игра вокруг с вещью, которую я нашел за недели и я решил соединить немного явского веб-приложения, где вы обязаны логин. Данные для входа в систему взяты от MySQL базы данных. Это все сделано через netbeans. Я добавил MySQL водителя к своему заявлению и в моем веб-сервере (glassfish), у меня есть связь с моей базой данных. Но проблема, которую я продолжаю получать, - как только я поразил логин, она идет в мой "ReadLogin.jsp" и не перемещается оттуда. имя пользователя и пароль правильны, таким образом, я не знаю проблемы.

Кодекс для моих трех страниц следующие

Login.jsp

    <%
      String error = request.getParameter("error");
      if (error == null || error == "null") {
          error = "";
      }
    %>
    <html>
    <head>
    <script>
        function trim(s) {
            return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
        }

        function validate() {
            if (trim(document.frmLogin.UserName.value) == "") {
              alert("Login empty");
              document.frmLogin.UserName.focus();
              return false;
            } else if(trim(document.frmLogin.Pwd.value)=="") {
              alert("password empty");
              document.frmLogin.Pwd.focus();
              return false;
            }
        }
    </script>
    </head>

    <body>
    <div><%=error%></div>
    <form name="frmLogin" onSubmit="return validate();" action="ReadLogin.jsp" method="post"> <%--return validate prompts script above to check if any text boxes are left empty--%>
    User Name <input type="text" name="UserName" />
Password <input type="password" name="Pwd" />
<input type="submit" name="Submit" value="Submit" /> </form> </body> </html>

Следующая страница - "ReadLogin.jsp"

<%
    Connection conn = null;
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/project","root", "nbuser");

    ResultSet rsdoLogin = null;
    PreparedStatement psReadLogin = null;

    String sUserID = request.getParameter("UserName");
    String sPassword = request.getParameter("Pwd");
    String message = "User login successfully ";

    try {
   String sqlOption="SELECT * FROM USERS where"
                +" user_id='"+sUserID+"' and password'"+sPassword+"'";

    psReadLogin = conn.prepareStatement(sqlOption);
    psReadLogin.setString(1, sUserID);
    psReadLogin.setString(2, sPassword);

    rsdoLogin=psReadLogin.executeQuery();

    if(rsdoLogin.next()) {
      response.sendRedirect("success.jsp?error="+message);
    } else {
      message="No user or password matched" ;
      response.sendRedirect("login.jsp?error="+message);
    }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }


    /// close object and connection
    try{
         if(psReadLogin!=null){
             psReadLogin.close();
         }
         if(rsdoLogin!=null){
             rsdoLogin.close();
         }

         if(conn!=null){
          conn.close();
         }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

%>

тогда страница продукции должна быть просто простым "success.jsp"

<html>
    <body>
        

Hello World!

</body> </html>

Это получено, чтобы быть чем-то не так с моим readlogig файлом, поскольку я играл вокруг с другой версией, и я могу поместить данные в базу данных от формы jsp, но я не могу заставить его делать особенность логина, которая была бы главной функцией к небольшому инструменту, который я пытаюсь разработать

0
nl ja de
С одной стороны, у вашего SQL есть дополнительное ' в конце, который может давать вам ошибку SQL. Пожалуйста, заказывайте последовательно: (Проверьте свои регистрации.
добавлено автор Dave Newton, источник
Проверьте свои регистрации, добавьте некоторые заявления отладки или отладку от IDE.
добавлено автор Dave Newton, источник
Я зафиксировал ту линию, но я не обрабатываю до страниц, я первоначально хотел, она просто застревает на readlogin.jsp
добавлено автор Curious_Bop, источник

1 ответы

String sqlOption="SELECT * FROM USERS where"
            +" user_id='"+sUserID+"' and password'"+sPassword+"'";

psReadLogin = conn.prepareStatement(sqlOption);
psReadLogin.setString(1, sUserID);
psReadLogin.setString(2, sPassword);

Или вы создаете свой запрос с ужасной связью последовательностей, или с PreparedStatement . Но не делайте обоих! Вот то, как это должно быть похожим:

String sqlOption="SELECT * FROM USERS where user_id = ? and password = ?";

psReadLogin = conn.prepareStatement(sqlOption);
psReadLogin.setString(1, sUserID);
psReadLogin.setString(2, sPassword);

Кроме этого, так как вы, кажется, создали это с нуля, я сильно рекомендую вам прекратить использовать те scriptlets и начинать читать о бобах, сервлетах, JSP и JSTL.

См. также:

1
добавлено
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw