Что такое контроллер, а какой HandlerMapping в Spring MVC? - PullRequest
5 голосов
/ 27 декабря 2011

Я использую эту ссылку для изучения Spring MVC. Как описано, диспетчер-сервлет находится на вершине, обрабатывая все входящие запросы.

Также описывается, что есть HandlerMapping и Controller. Однако в исходном коде используется только контроллер. Что же такое HandlerMapping? Разве это не отдельный файл?

Или это присутствует в каком-то другом сложном сценарии?

Ответы [ 3 ]

9 голосов
/ 07 августа 2013

Контроллер и HandlerMapping - это две разные вещи в Spring MVC.Контроллер - это настоящий класс Java, который используется для обработки запроса.Мы объявляем @Controller в начале определения класса.Где, как HandlerMapping это сборка в классе Spring Framework.В среде Spring есть много отображений обработчиков, например BeanNameUrlHandlerMapping, ControllerClassNameHandlerMapping и т. Д. По умолчанию BeanNameUrlHandlerMapping используется для сопоставления запроса.Этот класс выполняется во всех классах контроллера, чтобы сопоставить конкретный запрос с методом.

8 голосов
/ 27 декабря 2011

Если в конфигурации явно не указано сопоставление обработчика, BeanNameUrlHandlerMapping создается и используется по умолчанию.

Из статьи, на которую вы ссылались:

"По умолчанию DispatcherServlet использует BeanNameUrlHandlerMapping для сопоставления входящего запроса. BeanNameUrlHandlerMapping использует имя компонента в качестве шаблона URL. Так как BeanNameUrlHandlerMapping используется по умолчанию, вам не нужно выполнять какую-либо отдельную настройку за это."

1 голос
/ 12 января 2017

Отображение обработчика работает как помощник для сервлета Dispatcher. Это помогает идентифицировать соответствующий компонент контроллера для сервлета Dispatcher. Компонент отображения по умолчанию для обработчика: DefaultUrlHandlerMapping.

Идентифицирует компонент контроллера по URL. Соответствует имени в URL-адресе с компонентом контроллера. Если он совпадает, он вернет его обратно к DispatcherServlet и, наконец, сервлет выполнит бизнес-метод контроллера и вернет объект ModelAndView обратно в сервлет диспетчера.

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