Как организовать мои сервлеты? - PullRequest
1 голос
/ 23 января 2011

Я смотрю на такие предыдущие вопросы, как:
https://stackoverflow.com/questions/98334/creating-a-java-servlet-web-application
Сколько действий должен выполнять сервлет?

В этих темах есть ответы, которые противоречат друг другу; некоторые люди говорят, что используйте сервлет для каждой страницы, а другие говорят, что используйте только ОДИН сервлет для всего вашего приложения.

У меня та же проблема. Итак, как мне решить, какими будут мои сервлеты? Если я использую один (или несколько) «Front Controllers», как мне проанализировать запросы, чтобы делегировать их другим объектам? Например, если на одной странице есть 3 разных формы, как мне определить разницу между их запросами? Как определить разницу между формами и запросами на разных страницах? Назначить несколько отображений сервлетов для каждой формы + страницы? Посмотри на имена параметров? URL-кодирование параметра типа запроса?

Так много способов сделать что-то ...

P.S. Я бы предпочел НЕ использовать фреймворк, такой как Struts, - я хочу знать, как лучше всего это сделать с помощью Servlet API. Я использую Tomcat7.

Ответы [ 3 ]

2 голосов
/ 23 января 2011

Прежде всего, домашнее создание одного сервлета (фронт-контроллера) без принятия существующего (например, Spring DispatcherServlet, JSF FacesServlet, Wicket WicketServlet и т. Д.) - это довольно трудоемкий процесс. Но в итоге вы получаете более простой и удобный в использовании бизнес-код. В среднем веб-приложении обычно нет нескольких сервлетов фронт-контроллера. Там должен быть только один.

Трудно сказать, действительно ли он вам нужен или нет. Если в конце концов у вас есть только 3 веб-формы (и, следовательно, 3 сервлета) в вашем веб-приложении, и это никогда не изменится в долгосрочной перспективе, то, вероятно, не стоит усилий тратить дни на создание домашней среды MVC или погружение в изучение существующего. MVC Framework. Трудно сказать, где граница. Но если вы можете быть уверены, что рассматриваемое веб-приложение нуждается в расширении и / или расширении в будущем, тогда действительно лучше принять шаблон MVC (т.е. один сервлет фронт-контроллера) прямо сейчас, чем тогда.

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

1 голос
/ 23 января 2011

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

Например, Spring имеет DispatcherServlet, который отображает контроллеры в запросы (обычно по URL).Раньше контроллер был интерфейсом, но теперь POJO контроллера также можно аннотировать.

Интерфейс контроллера имеет единственный метод: handleRequest:

ModelAndView    handleRequest(HttpServletRequest request, HttpServletResponse response) 

Он принимает HTTP-запрос и ответ ивозвращает ModelAndView.

0 голосов
/ 23 января 2011

Я опробовал оба, и я не использую никаких готовых рамок (хорошо это или плохо).Мне кажется, что разные сервлеты лучше, когда они достаточно независимы и имеют модульную структуру, поэтому вы можете отключить их для обновления или обслуживания.Использование одного сервлета лучше, когда вы имеете дело с проблемами синхронизации, особенно с базой данных.Но опять же, вы лучший судья, как разделить их.Я использую разностные сервлеты, когда знаю, что они получат доступ к совершенно другому набору таблиц в БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...