Почему браузер оставил сообщение о неполном перенаправлении сервера? - PullRequest
0 голосов
/ 19 марта 2020

В настоящее время я пытаюсь выполнить метод аутентификации JSF для входа и выхода для моего проекта.

Я прохожу несколько классов и подключаюсь к базе данных, чтобы получить значение из базы данных.

Когда я закончил компиляцию всех необходимых атрибутов в моем запросе классов, я запускаю, и он показывает мне ошибку следующим образом: Firefox обнаружил, что сервер перенаправляет запрос на этот адрес способом, который никогда не будет завершен.

Я предполагаю, что у меня может быть ошибка при создании класса для загрузки драйвера JDBC для передачи URL-адреса. Вот класс соединения:

public class DataConnect {
public static Connection getConnection() {
    try {
        Class.forName("org.hibernate.dialect.MySQLDialect");
        Connection con = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/epda_assignment?zeroDateTimeBehavior=convertToNull", "root", "kok123");
        return con;
    } catch (ClassNotFoundException | SQLException ex) {
        System.out.println("Database.getConnection() Error -->"
                + ex.getMessage());
        return null;
    }
}

public static void close(Connection con) {
    try {
        con.close();
    } catch (SQLException ex) {
    }
}

LoginBean. java

public class LoginBean implements Serializable{

private String email2;
private String msg;
private String password2;

public String processRequest() {
    boolean valid = UserDao.validate(email2, password2);
    if (valid) {
        HttpSession session = SessionUtil.getSession();
        session.setAttribute("email2", email2);
                    session.setAttribute("password2", password2);
        return "after_login";
    } else {
        FacesContext.getCurrentInstance().addMessage(
                null,
                new FacesMessage(FacesMessage.SEVERITY_WARN,
                        "Incorrect Username and Passowrd",
                        "Please enter correct username and Password"));
        return "home";
    }
}
 //logout event, invalidate session
public String logout() {
    HttpSession session = SessionUtil.getSession();
    session.invalidate();
    return "home";
}

home.x html

<table>
                <tr>
                <td> <h:outputLabel for="email2">Enter your Email: </h:outputLabel></td>
                <td><h:inputText id="email2" value="#{loginBean.email2}"/></td>
            </tr>
                <tr>
                <td> <h:outputLabel for="passwrod2">Password: </h:outputLabel></td>
                <td><h:inputText id="password2" value="#{loginBean.password2}"/></td>
            </tr>
                <td><h:commandButton id="submit-button" value="Submit" action="#{loginBean.processRequest}"/></td>
                <td></td>
            </table>

after_login.x html

<h:body>
    <h:form>
    <p>Welcome #{registerBean.fullName_}</p>
    <h:commandLink action="#{loginBean.logout}" value="Logout"></h:commandLink>
</h:form>    
</h:body>

Пожалуйста, помогите мне найти ошибку, которую я не видел. Если проблема не в вышеуказанном классе, где может быть проблема?

1 Ответ

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

Проблема

Браузер (firefox) не загружает сайт из-за бесконечного перенаправления. Каким-то образом вы перенаправляете на одну и ту же страницу снова и снова, поэтому firefox прекращает запросы для сохранения производительности.

Так что, поскольку вы не отредактировали вопрос, чтобы быть более точным, я могу привести только пример проблемы, подобной вашей.

Представьте, что вы на сайте test и на этом сайте вы выполняете некоторые действия и на основе некоторых результатов вы хотите go на страницу test (так refre sh) или abc. Каким-то образом результат всегда один и тот же, поэтому вы перенаправляете навсегда, и firefox останавливает его, чтобы не терять производительность.

ИЛИ

Аналогично предыдущему примеру: представьте, что у вас есть сайты и одно перенаправление на другой, чтобы вы go с test до abc и затем вернулись навсегда. (Я не думаю, что firefox распознает и остановит это)


Решение

Решение этой проблемы довольно простое: просто добавьте if заявление перед вами редирект, так что вы будете перенаправлять только тогда, когда вы не на этом сайте.

ИЛИ

Передать информацию, которую действие не должно перенаправлять.


Пример 1:

HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();

if (!"yourSite".equals(request.getRequestURI()) {
    return "/yourSite.xhtml";
} else {
    return null;
}

Пример 2:


Редактировать

В вашем case Я бы также добавил if -статист, чтобы проверить, не находитесь ли вы на текущем сайте, который хотите перенаправить.

Примерно так:

HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();

if (!"home".equals(request.getRequestURI()) {
    return "home";
} else {
    return null;
}

То же самое относится и к after_login. Просто замени дом на это. Тогда это должно работать.


Некоторые связанные вопросы:

Нет перенаправления после нажатия кнопки

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