2014-10-22 2 views
0

Я разрабатываю для обучения мой самый первый «большой» проект Spring MVC. Я сам все изучаю (и, конечно же, благодаря этому удивительному сообществу).SPring MVC - Несколько контроллеров

Я начинаю удивляться, является ли мой дизайн «правильным/действительным»? Пока я создаю один Controller за просмотр/страницу, особенно из-за ModelAttribute s (прилагается к методу).

Это хорошо? Должен ли я начать делать это каким-то другим способом? Существуют ли в этом вопросе «официальные» образцы?

ответ

2

Для начала я предполагаю, что вы создаете веб-проект, основанный на использовании вами ModelAttribute. Вы хотите следовать соглашению MVC (Model, View, Controller). «Модель» - это данные, которыми вы управляете. Эти данные должны быть получены через служебный уровень. Затем ваш контроллер должен вызвать ваши методы обслуживания для получения данных, что сделает ваши контроллеры полностью агностическими для ваших данных. Это хорошо, потому что вы можете изменить свою структуру данных, например. переходя от MySQL к MongoDB, не беспокоясь о смене контроллера, все, что вам нужно изменить, это ваш уровень обслуживания. Кроме того, это позволяет контроллерам использовать несколько разных сервисов в определенных случаях. Контроллер получает запросы от клиента, например. запросы страницы пользователя веб-сайта, запросы GET/POST и т. д., и выполняет некоторые действия, обычно получая/обновляя данные через сервисный уровень, а затем возвращает представление. Каждый контроллер может принимать множество запросов и может отображать много просмотров. Хорошая практика - разбить контроллеры по функциям. Например, если у вас есть два разных раздела для вашего сайта, один для админов и один для Гостей, то вы можете использовать один контроллер для обработки запросов администратора, а другой - для обработки запросов гостя. Каждый из этих контроллеров может обрабатывать все запросы от Админов/Гости соответственно. Возможно, вы немного запутались в контроллерах. Каждый метод в контроллере привязан к одному запросу/представлению, но контроллер может иметь много таких методов.

Как вы узнаете, я бы предложил изучить некоторые платформы mvc на стороне клиента, такие как AngularJS. Угловой позволяет очень легко привязывать данные и манипулировать параметрами, а также упрощает создание веб-сервисов RESTful.

+0

Спасибо за этот поясняющий ответ! Я посмотрю на AngularJS, как вы предлагаете. С другой стороны, мне действительно интересно, правильно ли использовать один контроллер для одного View. До сих пор я делаю это так, поэтому у меня есть несколько «контроллеров» с одним (GET) или двумя методами (GET & POST). – kazbeel

+1

Да, нет ничего плохого в использовании одного контроллера для каждого вида, однако, если вы добавите много просмотров, у вас будет много контроллеров, которые начнут делать проект сложным для масштабирования (и могут быстро стать беспорядком, если вы выполняете какую-либо аутентификацию или авторизация). Легче управлять кодом, если вы разбиваете контроллеры по функциям, но нет ничего технически неправильно с использованием одного контроллера для каждого представления. – holtc

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