Существуют многие, много примеров в книгах, и в Интернете о том, как использовать Сервлеты в качестве JSPs. Но я хотел бы знать что лучший способ пойти об использовании их с умом к хорошей архитектуре.
Должно быть непосредственное отношение Сервлетов к JSPs? Действие как страницы "Code - Behind" ASP.NET?
Или больше как ASP.NET MVC, с единственным Сервлетом, управляющим несколькими действиями и передающим нескольким представлениям?
Это - вопрос относительно чистого Java разработка EE. Просто не предлагайте другую платформу.
Как насчет этого? Я сделал это в одном из своих школьных проектов:
alt text http://img576.imageshack.us/img576/3064/mvci.jpg
Это было мое предположение, основанное на моем понимании сервлетов и JSP. Я хотел бы получить ваши комментарии и идеи по улучшению этого.
Должно быть однозначное отношение сервлетов к JSP? Действуют как страницы с выделенным кодом ASP.NET?
Зависит. Это доступно для небольшого веб-сайта с 3-5 страницами, но помимо этого он будет генерировать много шаблонного кода, который вы почти закончите с доморощенным фреймворком MVC при разумном рефакторинге всего этого дублированного кода.
Или больше похоже на ASP.NET MVC, с одним сервлетом, управляющим несколькими действиями и перенаправляющим на несколько представлений
Это более рекомендуется при наличии веб-приложения небольшого размера. Аналогом ASP.NET MVC для Java является, кстати, JSF (JavaServer Faces). Это чистая Java EE, предоставляющая инфраструктуру MVC на основе компонентов, которая предоставляет FacesServlet
в качестве единственного контроллера , так что вы можете получить только класс Javabean как модель и страницу JSP (или, в последнее время) Facelets как view . Facelets? Да, начиная с JSF 2.0, старый JSP был заменен на Facelets в качестве технологии просмотра по умолчанию. Facelets основан на XHTML.
Если вы хотите создать сервлет контроллера самостоятельно, проверьте шаблон переднего контроллера . Вы можете найти еще один базовый пример запуска в этот ответ .
Нет, связь один-к-одному между сервлетами и JSP не является строго необходимой, поскольку это разные вещи.
Что мне лично нравится, так это использование сервлетов в качестве контроллеров, а затем, после обработки HTTP REQUEST, рендеринг ответа (HTML) с одной или несколькими JSP страницами. ASP.NET "Code-Behind" не применяется, поскольку CODE-BEHIND - это один к одному связь с соответствующим ASPX файлом. AFAIK, вы не можете рендерить один "код позади" ASP.NET с разными страницами ASPX.
В любом случае, это не простой вопрос, но по моему опыту, просто старые подходы Servlets+JSP обычно чище, проще и менее глючные, чем любой другой фреймворк, построенный на их основе (Struts, JSF и многие другие).