Загрузить следующую страницу после перенаправления фильтра и входа в систему - PullRequest
1 голос
/ 10 июля 2020

У меня есть два сервлета (Java 8, Tomcat 8.5):

servlet1 загружает страницу html с формой (с переключателями). Нажатие кнопки «Отправить» загружает servlet2, которое затем отображает настраиваемое сообщение в зависимости от того, какой переключатель был выбран.

Это работает, поэтому я также добавил фильтр (согласно информационной странице ), который перенаправляет вас на страницу входа, если нет активного сеанса, при нажатии кнопки «Отправить».

Фильтр и \login сервлет в «сети». xml »:

<servlet>
    <servlet-name>servlet3</servlet-name>
    <servlet-class>Login</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servlet3</servlet-name>
    <url-pattern>/login</url-pattern>
</servlet-mapping>
<filter>
    <filter-name>loginFilter</filter-name>
    <filter-class>LoginFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>loginFilter</filter-name>
    <url-pattern>/bla/*</url-pattern> <!-- Pressing the "Send" button loads "/bla" -->
</filter-mapping>

Форма входа («Login. html»):

<form action="login">
    <label for="username">Username:</label><br>
    <input type="text" id="username" name="username"><br>
    <label for="password">Password:</label><br>
    <input type="password" id="password" name="password"><br><br>
    <input type="submit" value="Login">
</form>

Нажатие кнопки «Login» загружает сервлет \login для проверки имени пользователя / пароля:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    request.getRequestDispatcher("/html/Login.html").include(request, response);
    String user = request.getParameter("username");
    String pass = request.getParameter("password");
    
    if(user!=null && !user.isEmpty() && pass!=null && !pass.isEmpty()) {
        //Verify user/pw here
        HttpSession session = request.getSession(); //create new session
        session.setAttribute("user", user);
    } else {
        out.print("<p style=\"color:red\">Some error message!</p>");
    }
}

Вопрос, на который я сейчас не могу ответить: как мне загрузить servlet2 или любую другую страницу, которая должна была быть загружена (до срабатывания фильтра) после нажатия кнопки «Вход» и проверки того, что данные для входа правильно?

...