Реализация FrontController для страниц JSP

Я разрабатываю простой веб-сайт с несколькими страницами JSP. У каждого jsp есть динамические данные, которые необходимо прочитать из XML, прежде чем они будут загружены в браузер. Хотя шаблон MVC, такой как Struts2, здесь больше подходит, я не хочу реализовывать его для простого веб-приложения.

Для этой цели я просто хочу реализовать шаблон FrontController, которого достаточно для управления страницами jsp с несколькими вспомогательными классами.

Я хочу иметь централизованный контроллер для всех страниц JSP. если пользователь попытается получить доступ к любой странице jsp, он должен сначала перейти к контроллеру. Поэтому я попытался реализовать сервлет с шаблоном URL "/pages/*.jsp", где /pages содержит все страницы jsp в веб-контенте.

Проблема в том, что контроллер вызывается каждый раз, когда есть вызов файла .jsp, но когда я пытаюсь отключить его на странице jsp (например, /pages/homepage.jsp), он идет в неопределенный цикл. Очевидно, что каждый вызов страницы jsp всегда будет снова приходить к контроллеру.

Итак, есть ли другой способ реализовать централизованный контроллер для этой ситуации.

Заранее спасибо.


person infant    schedule 29.12.2010    source источник


Ответы (1)


Я предполагаю, что ваша единственная проблема заключается в том, что вам нужно прочитать файл XML перед обработкой каждого запроса.

Если это только так, то лучше всего подходят фильтры.

Но в случае, если необходимо сделать больше и вам действительно нужен централизованный контроль над всеми запросами, вы можете сделать что-либо из следующего:

  1. Struts (неважно, маленький у вас проект или большой, но использование предопределенного и проверенного шаблона всегда полезно).

  2. В вашем контроллере поместите сопоставление логических URL-адресов с физическими URL-адресами, а теперь поместите сопоставление с логическими URL-адресами, а не с физическими URL-адресами.

person Sumit    schedule 29.12.2010
comment
Да, фильтры — это один из способов реализации, но фильтры имеют собственное значение, но не как контроллер. Почему я не пошел на распорки, потому что это увеличивает размер памяти моего приложения, а также накладные расходы на вызов метода, поскольку классы растут в приложении. - person infant; 29.12.2010
comment
Поэтому я адаптировал 2-й пункт, где приложение указывает на логические пути страниц jsp, а контроллер отправляет физическое сопоставление, соответствующее логическому пути jsp. Спасибо - person infant; 29.12.2010