Как сохранить регистрационную информацию для последующего использования - PullRequest
0 голосов
/ 21 сентября 2011

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

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

Вот код, который у меня сейчас есть:

index.jsp (здесь отображается форма входа в систему)

<form name="Login Form" action="login.jsp"><table>
   <tbody>
   <tr>
       <td><input type="text" name="emaillogin" value="email"/></td>
       <td><input type="text" name="passlogin" value="password"/></td>
  </tr>
  <tr>
        <td colspan="2" align="RIGHT><input type="submit" value="login" name="Login"/></td>
  </tr>
  </tbody></table></form>

login.jsp (выполняется проверка, является ли пользователь действительным или нет, и перенаправляет его на домашнюю страницу пользователя, если он действителен)

<%!
        String email = "";
        String password = "";
    %>
    <%

        List users = new ArrayList();

        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "root", "pass");
        Statement stmt = con.createStatement();

        ResultSet result = stmt.executeQuery("SELECT email,password  FROM users");

        while (result.next()) {
            users.add(result.getString(1));
            users.add(result.getString(2));
        }
        con.close();

        email = request.getParameter("emaillogin");
        password = request.getParameter("passlogin");

        int hasUser = 0;
        Iterator<String> it = users.iterator();
        while (hasUser == 0 && it.hasNext()) {
            if (email.equals(it.next()) && password.equals(it.next())) {
                hasUser = 1;
            }
        }

        if (hasUser == 1) {
            response.sendRedirect("homepage.jsp");
        } else {
            response.sendRedirect("index.jsp");
        }

    %>  

homepage.jsp (куда пользователь перенаправляется после входа в систему, показывая свой адрес электронной почты)

.
.
<% out.println("Logged in as: " + request.getParameter("email")); %>
.
.

В настоящее время проблема в том, что нулевое значение - это то, что я получаю из homepage.jsp. Как я могу решить эту проблему?

Спасибо!

Ответы [ 3 ]

1 голос
/ 21 сентября 2011

Прежде всего я скажу - Избегайте Java-кода в Jsp. Не используйте JSP and Scriptlets для выполнения операций с базой данных. Всегда используйте Servlets.

Вы можете использовать неявные теги Jsp (actions), EL и JSTL теги lib для форматирования или представления данных.

В соответствии с вашим вопросом, вы должны использовать объект session для хранения данных на одной странице и использовать их на другой странице.

0 голосов
/ 12 сентября 2013

Прежде всего позвольте мне прояснить параметры запроса. Обычно параметры запроса находятся в объеме запроса. Поэтому, когда вы спрашиваете их в «Login.jsp», он сообщит вам адрес электронной почты, пароль и все поля, которые вы указали в форме. Но когда вы отправляете перенаправление на домашнюю страницу, эти параметры не будут перенесены. Поэтому, когда вы обнаружите, что имя пользователя и пароль верны / действительны, поместите их в сеанс. Так что вам не нужно передавать параметры вручную на любой запрос. Вместо этого вы можете напрямую взять имя пользователя из объекта "сеанс" и отобразить, где вы хотите. Это будет там во время сессии, до конца этой сессии.

   int hasUser = 0;
    Iterator<String> it = users.iterator();
    while (hasUser == 0 && it.hasNext()) {
        if (email.equals(it.next()) && password.equals(it.next())) {
            hasUser = 1;
        }
    }

    if (hasUser == 1) {

        session.setAttribute("email", email);
        response.sendRedirect("homepage.jsp");
    } else {
        response.sendRedirect("index.jsp");
    }

Обычно это процесс в реальном времени. Конечно, Java-код здесь не рекомендуется использовать. Вместо этого используйте теги JSTl, EL. В homepage.jsp вы можете отобразить электронную почту, взяв из сессии.

Конечно, слишком поздно. Думаю, это может помочь кому-то, столкнувшемуся с той же проблемой.

0 голосов
/ 12 сентября 2013

Я согласен с помещением этого кода в сервлет.Быстрый и простой способ передачи параметра заключается в следующем:

response.sendRedirect("homepage.jsp?email="+email);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...