Как я узнал, что jsp вызывается конкретным сервлетом, а не другими ссылками?

#java #servlets

#java #сервлеты

Вопрос:

Мой вопрос в том, что у меня есть login.jsp LoginAuthenticate.java сервлет и home.jsp страница .. здесь я проверяю данные для входа, т. Е., id И password , если LoginAuthenticate.java он удостоверяет пользователя, он перенаправляется на home.jsp страницу, а в случае сбоя он снова перенаправляется на login.jsp страницу, теперь я хочу сделать то, что если login.jsp страница вызывается LoginAuthenticate.java servlet, чем он также должен отображать сообщение о сбое входа в систему, я пытаюсь с if помощью инструкции, но я не знаю, как именно я узнал, что это login.jsp вызывается этим сервлетом??? Существует ли метод с request object, с помощью которого я могу сравнить имя вызывающего сервлета?

Комментарии:

1. Хорошо, в качестве упражнения, но для реальных приложений я настоятельно рекомендую вам либо изучить стандартную декларативную структуру безопасности, которая является частью всех контейнеров сервлетов, либо более сложное решение, такое как Apache Shiro или Spring security.

Ответ №1:

В любом случае, в идеале, вы не должны переходить непосредственно на страницу JSP.

В любом случае. Самым простым способом было бы установить параметр запроса в сервлете:

 request.setAttribute("i_come_from_da_servlet_yo", "ohai");
  

Затем проверьте наличие этого атрибута в JSP.

Комментарии:

1. но в случае response.sendRedirect("login.jsp") , если всегда генерируется новый объект запроса??

2. @Asif Либо (а) не перенаправлять, либо (б) вместо этого поместить его в сеанс (и очистить его в JSP), в основном область «flash».

3. хорошо @Dave.. RequestDispatcher я думаю, было бы удобнее использовать по сравнению с открытием и закрытием сеанса простым перенаправлением .. не так ли?

4. @Asif Не уверен, что вы подразумеваете под «открытием и закрытием сеанса»; ввод чего-либо в сеанс и его удаление — это одна или две строки кода, и если вам нужно перенаправить, это ваш лучший вариант.

5. На самом деле я хочу сказать, что сеанс будет идеально создан после успешного входа в систему для будущих нужд, и если вы не вошли в систему, зачем это нужно?