Что такое адаптер обработчика в spring mvc?

#spring #spring-mvc

#весна #spring-mvc

Вопрос:

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

Ответ №1:

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

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

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

Ответ №2:

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

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

Комментарии:

1. Ссылка разорвана.

2. @Vishnu, я думаю, за шесть лет все изменится.

Ответ №3:

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

Как вы можете видеть из исходного кода HandlerAdapter ниже, взятого из документации Spring, существует один метод, метод handle с возвращаемым типом 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; 
  

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

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

Ответ №4:

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

Например, следующее сопоставление запросов сгенерирует сопоставление обработчиков для запросов GET на «/» или «/ home» для вызова этого метода:

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

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

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

Комментарии:

1. Он спросил о HandlerAdapter, вы объяснили HandlerMapping