Принцип работы контроллера

224
03 августа 2017, 23:24

Добрый день, так как только начал изучать Spring и даже по аналогии сделал первое web-приложение, но все равно есть вопросы, и описание в инете тяжело дается понятию. А именно когда контроллер создаем. (паттерн MVC).

вот есть контроллер

@Controller
public class ContactController {
@Autowired
private ContactService contactService;
@RequestMapping("/index")
public String listContacts(Map<String, Object> map) {
    map.put("contact", new Contact());
    map.put("contactList", contactService.listContact());
    return "contact";
}

Но мне никак непонятно, что в методе происходит, мы в него передает мапу, заполняем мапу, и далее возвращаем ключ мапы. Я понял, что ключ мапы которые возвращаем, он как раз совпадает с файлом jsp, в котором все выводим.

Но где мы в метод передаем мапу? Где этот метод вызывается?

Когда я убрал этот параметр и удалил заполнение мапы, то у меня пустой естественно вывелся список

Не уточнил, само приложение лезет в БД и вытягивает записи по запросу.

Вот ссылка на аналог, по которому делал https://habrahabr.ru/post/111102/

Answer 1

Последовательность упрощенно такая:

  1. Пришедший запрос обрабатывается сервлет Spring
  2. Он определяет какой контроллер и метод в нем должен быть вызван
  3. По параметрам метода и пр определяется какая модель нужна (в вашем случае это Map)
  4. Создается модель
  5. По возвращаемому значению определяется какое отображение (view) выбрать (в вашем случае это строка - имя отображения)
  6. Вызывается метод и ему передаётся созданная модель
  7. Метод что-то делает - меняет модель, меняет хранилище, посылает письма и т.п.
  8. Метод возвращает результат
  9. По результату определяется отображение
  10. "Запускается" отображение и ему передается модель (из п. 4)
  11. Результат посылают клиенту (браузеру)

Более детально процесс описан в документации Web MVC framework

READ ALSO
Как запустить AVD на Ubuntu?

Как запустить AVD на Ubuntu?

Установил я Ubuntu 164

283
NetworkImageView задать массив из URL

NetworkImageView задать массив из URL

Как задать массив из url строк

154
Экспорт данных из запроса MSSQL в EXCEL с помощью Apache

Экспорт данных из запроса MSSQL в EXCEL с помощью Apache

Нужно из запросов mssql вытащить данные в excel документы, все действия происходят с java Как это организовать ? Подскажите литературу по данной...

191
Как и какими средствами находить ошибки в коде Java?

Как и какими средствами находить ошибки в коде Java?

При написании кода он, порой, не работает так, как я задул или не работает в принципеЯ сижу и гадаю: что и где не так?

230