2013-08-23 4 views
2

Примите во внимание веб-приложение, которое имеет несколько основных функций, таких как функция регистрации, функция входа и возможность входа пользователя в систему, функции работы CRUD. Мой вопрос: есть ли у меня несколько сервлетов, обрабатывающих каждую конкретную задачу, или я группирую их все в один главный сервлет контроллера, который обменивается данными с объектом доступа к данным.Несколько сервлетов или только один главный контроллер

Я не хочу использовать какие-либо предварительные рамки и хочу правильно изучить способ реализации таких функций. Если бы кто-то мог мне помочь, это было бы очень признательно.

Спасибо.

+0

Существующие рамки MVC имеют только один сервлет контроллера. Если вы все равно хотите изобрести колесо, я бы предложил пойти по тому же пути. См. Также http://stackoverflow.com/q/3541077 Обратите внимание, что сервлет контроллера обычно не взаимодействует с DAO вообще. Вместо этого действуют действия, основанные на запросах и бизнес-сервисах. – BalusC

ответ

2

Ну, количество контроллеров зависит от типа функции, которую вы хотите реализовать. Если две или более функции подобны (выполняют аналогичную работу), вы можете легко группировать их в один или два сервлета.

Но если функции, которые вы реализуете, различны, тогда отдельный контроллер будет хорошим.

Вот несколько причин, почему наличие отдельного контроллера для отдельных и различных функций лучше:

1.) Ваша заявка будет более модульным

2.) Обновление и разработки В будут проще для них потому что для изменения одной функции вам не нужно снимать другие функции (что невозможно при реализации всего в одном сервлете контроллера)

3.) Добавление и удаление новых функций будет проще, t должны касаться других контроллеров.

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

+0

спасибо, отличный ответ. Хотя, в вашем случае, что бы вы собрали вместе? (Вход, Регистрация), (операции CRUD)? И если у случая должно быть несколько разных контроллеров, возможно ли сохранить сеанс из входа в точку входа?(Один сервлет в другой) – Maff

+0

Если мне пришлось группировать функции, я поместил 'logincheck' и' redirection на страницу входа в систему 'в одной группе. 'Login' и 'Registration' - это совсем другие вещи, потому что с логином вам нужно только обратитесь к 'db', чтобы проверить имя пользователя и пароль (нет обновления для БД), но при регистрации вам нужно создать новые записи в' DB', и вам, возможно, придется обновить несколько других баз данных. Поэтому я буду хранить «login» и «registration» отдельно. Вы можете использовать 'authorizations' для разных ресурсов в одной группе. –

+0

Также «выбирая разные виды» для разных целей, основанных на некоторых условиях, можно сгруппировать вместе. ТАКЖЕ, ДЛЯ ВАС ВТОРОЙ ВОПРОС >> КАК ПОЛЬЗОВАТЕЛЯ ПРИЗЫВАЕТ ВАС ПРИМЕНЕНИЕ, ЕСЛИ НИКАКИЕ СЕССИИ НЕ СУЩЕСТВУЕТ НОВЫЙ ОДИН СОЗДАН, НЕ СОБИРАЯСЬ, ЧТО СТРАНИЦА ДОСТУПНА. ТАК ВЫ МОЖЕТЕ ПРОЙДИТЕ СЕССИИ, ДАЖЕ ДО ТОГО, ЧТО ТОЧКА ВХОДА. –

1

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

+0

Спасибо вам за ответ. Я понимаю вашу перспективу, хотя вы обнаружите, что класс сервлета действительно застрял в коде? – Maff

+0

@ user2660806 Когда я говорю контроллер, я имею в виду один сервлет, принимающий все запросы. Сервлет никогда не мешает производительности, пока мы не поместим в него какой-то нежелательный код. –

0

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

Смежные вопросы