Java EE - Показать страницу на основе внутренней бизнес-логики

Я реализую корпоративное приложение с Java EE на сервере Glassfish. Мне нужно, чтобы мое приложение выполнило некоторую логику, чтобы показать правильный вывод для определенного подмножества URL.

Описание проблемы:

Моя папка веб-страниц имеет следующую структуру:

Web Pages
  Protected
    - CorrectPage.xhtml
    - A.xhtml
    - B.xhtml
  - Index.xhtml

Я хочу, чтобы пользователь получил доступ к URL:

/Protected/CorrectPage.xhtml

Но пользователь не должен иметь доступ к следующим URL-адресам:

/Protected/A.xhtml
/Protected/B.xhtml

Когда вводится URL /Protected/CorrectPage.xhtml, я хочу выполнить некоторую логику, и в зависимости от результата этой логики я хочу показать либо A.xhtml, либо B.xhtml, без каких-либо видимых изменений URL (перенаправлений).

Решения до сих пор пробовали:

Я думал об использовании сервлета, сопоставленного с /Protected/*.xhtml, оставляя сервлет Faces работать с любым другим URL-адресом в моем приложении.

и имея:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    if(*Requested URL is /Protected/CorrectPage.xhtml*) {
       if(logic())
          *Show A.xhtml*
       else
          *Show B.xhtml*
    } else
       *Show 404*

Моя проблема в том, что я не знаю, как реализовать Show A.xhtml. Я в основном хочу напечатать клиенту мою страницу HTML.

Я также думал о решении этой последней проблемы, используя ответ PrintWriter.

PrintWriter pw = response.getWriter();

Но, опять же, это не решает мою проблему, так как я не знаю, как распечатать файл xhtml, и в то же время иметь оценку языка выражений, содержащегося в нем.

Заключение

Любая помощь очень ценится. Даже если это означает что-то изменить в структуре, которую я предложил. Естественно, если создание сервлета не является правильным решением для моих проблем, я оставлю этот путь.

Меня интересует только результат, который получит пользователь.

заранее спасибо

1 ответ

Вы можете использовать request.getRequestDispatcher("/protected/page[A|B]").forward(request, response)

Другие вопросы по тегам