Подтвердить что ты не робот

Что такое адаптер Handler в spring mvc?

Я новичок в Spring MVC. Я не понимал адаптеров-обработчиков. Что такое адаптер-манипулятор и когда я использую адаптеры?

4b9b3361

Ответ 1

A HandlerMapping отображает метод для URL-адреса, поэтому DispatcherServlet знает, какой метод должен быть вызван конкретным запросом. Затем DispatcherServlet используйте HandlerAdapter для вызова метода.

Почему DispatcherServlet не вызывает метод напрямую?

Поскольку существует много способов вызова метода, например аннотации, xml и т.д. HandlerAdapter отменяет пары DispatcherServlet и вызываемые действия.

Ответ 2

Начните здесь и посмотрите, поможет ли это; если нет, задайте более конкретный вопрос. Кроме того, этот раздел в документах Spring обсуждает адаптеры по умолчанию и то, как они относятся к конфигурации аннотаций.

Вкратце, адаптеры обработчиков решают, какой контроллер (и метод) вызывать для запроса.

Ответ 3

Вы можете найти адаптер в HandlerAdapter, и эта часть имени происходит из шаблона адаптера. Адаптер - это мост между двумя объектами, а HandlerAdapter - это мост между объектом-обработчиком и сервлетом диспетчера.

Как вы можете видеть из исходного кода HandlerAdapter ниже, взятого из документации Spring, существует один метод - метод дескриптора с возвращаемым типом ModelAndView. Каждый HandlerAdapter реализует этот метод для делегирования HttpServletRequest и HttpServletResponse для объекта-обработчика, поэтому объект-обработчик будет выполнять логику приложения, используя эти HttpServletRequest/Response.

public interface HandlerAdapter {

  //Check if controller is supported
  boolean supports(Object handler);   

  //handle request
  ModelAndView handle(HttpServletRequest rqst, 
                      HttpServletResponse rsp,
                      Object handler) throws Exception; 

Выполнение этой логики приложения создает модель и представление. Представление может быть в виде имени вида String или View. Модель содержит данные, которые будут использоваться для визуализации представления. HandlerAdapter будет обертывать модель и просматривать объект ModelAndView. Это задача диспетчера сервлетов для обработки объекта ModelAndView.

Сервлет-диспетчер не знает о объекте-обработчике и освобождается от логики прикладной логики. Объект Handler также освобожден от преобразования модели и представления в объект ModelAndView, потому что HandlerAdapter выполнит это задание преобразования.

Ответ 4

A HandlerMapping просто сопоставляет метод с URL-адресом. Большинство новичков не используют этот объект напрямую, вместо этого вместо RequestMapping. Тип возврата сопоставленного метода (обычно) определяет, какое представление SpringMVC будет использовать для визуализации ответа.

Например, следующий RequestMapping будет генерировать HandlerMapping для запросов GET для "/" или "/home", чтобы вызвать этот метод

@RequestMapping(value={"/", "/home"}, method=RequestMethod.GET)
public String getHome() {
    return "homepage";
}

Метод возвращает имя строки представления, которое обычно будет разрешено для "/WEB-INF/views/homepage.jsp" (но это зависит от вашего ViewResolver, конечно)

Просто начинайте с fyi: вы можете добавлять различные объекты, которые могут понадобиться вам в качестве параметров для вашего метода (например, Locale, HttpServletRequest и т.д.). Для получения дополнительной информации см. Jquadoc RequestMapping.