Не могу войти после регистрации jsp дБ - PullRequest
1 голос
/ 13 марта 2020

У меня проблема с логином на моем "сайте". У меня всегда не получается войти, несмотря на это, я пишу хороший логин и пароль. Он получает значение из базы данных с именем «register» и проверяет его. И у меня есть значения в «register» в базе данных, и я обычно пишу это на своей странице входа в систему, и что-то идет не так, потому что он перенаправляет меня на «loginfail. jsp» Это мой код:

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

 <%@ page language="java" %>
        <%@ page import="java.sql.*" %>
         <%@ page import="java.sql.DriverManager.*" %>
<% 
       PreparedStatement ps;
        Connection conn;
        ResultSet rs= null;
       Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
        conn=DriverManager.getConnection("jdbc:derby://localhost:1527/onlineshop","root","root");

         Statement st=conn.createStatement();
%> 
<% 
boolean flag = false; 

String LOGIN = request.getParameter ("LOGIN"); 
String PASSWORD = request.getParameter ("PASSWORD"); 
%>

<% 

String sql = "SELECT LOGIN from REGISTER where LOGIN=? And PASSWORD =?"; 

try {  
ps = conn.prepareStatement(sql); 
ps.setString (7,LOGIN); 
ps.setString (8,PASSWORD); 
rs = ps.executeQuery (); 
if (rs.next ()) { 
out.println (rs.getString ("LOGIN")); 
flag = true; 
session.setAttribute("ULOGIN", rs.getString ("LOGIN")); 
} else { 
request.setAttribute("err", "user name or password error!"); 
}

rs.close (); 
ps.close (); 
conn.close ();

} catch (Exception e) { 
out.println (e); 
} 
%>


<% 

if (flag) { 

%>

<jsp:forward page="loginsucc.jsp" />

<%

} 
else { 
%>

<jsp:forward page="loginfail.jsp"/> 
<% 
} 
%>
</body>
</html>

1 Ответ

0 голосов
/ 13 марта 2020

Проблема в вашем коде из-за использования неверного индекса в setString.

Замените

ps.setString (7,LOGIN); 
ps.setString (8,PASSWORD);

на

ps.setString (1,LOGIN); 
ps.setString (2,PASSWORD);

Проверка this для примера использования Подготовленные заявления . Проверьте это для документации.

[Обновление]

rs.next () возвращает false в вашем коде. Вы можете проверить следующий рабочий пример:

регистр. jsp:

<html>
    <head>
        <title>Untitled Document</title>
    </head>
    <body>
        <%
            boolean flag = true;
            if (flag) {
        %>

        <jsp:forward page="loginsucc.jsp" />

        <%
            } else {
        %>

        <jsp:forward page="loginfail.jsp" />
        <%
            }
        %>
    </body>
</html>

loginsu cc. jsp

<html>
    <head>
        <title>Insert title here</title>
    </head>
    <body>
        Login successful
    </body>
</html>

Выход:

enter image description here

...