У меня есть два сервлета (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
или любую другую страницу, которая должна была быть загружена (до срабатывания фильтра) после нажатия кнопки «Вход» и проверки того, что данные для входа правильно?