2015-05-11 187 views
2

Spring MVC的文檔有時會提到「處理程序」或「請求處理程序」。例如,http://docs.spring.io/autorepo/docs/spring/4.0.4.RELEASE/javadoc-api/org/springframework/web/servlet/handler/SimpleUrlHandlerMapping.html說:Spring MVC中的Controller和Handler有什麼區別?

的HandlerMapping的接口的實現,從URL映射到請求處理器豆

,有時說了控制。例如,有一個名爲org.springframework.web.servlet.mvc.Controller的接口(http://docs.spring.io/spring-framework/docs/2.5.x/api/org/springframework/web/servlet/mvc/Controller.html)。

我的問題是:控制器和處理程序是一樣的嗎?

回答

8

一般來說,控制器是處理程序,但處理程序不必是控制器。

例如,HttpRequestHandler,WebRequestHandler,MessageHandler都是可以與DispatcherServlet一起使用的處理程序。 ((@)控制器是執行web請求並返回視圖的處理程序。)

不久,Handler只是一個術語,它不是類或接口。它可以執行映射。

3

A ControllerHandler的特定類型,但不是所有的Handler都是Controller s。

要執行一種Handler有一個HandlerAdapterHandler的每種類型有一個不同的HandlerAdapter。您有Controller@Controller,HttpRequestHandler以及普通Servlet可以是Handler。或者如果你有一些自定義的東西,你甚至可以實現自己的東西。

-1

處理程序是處理某事的專家。 控制器是用戶和系統之間的接口,它是特定類型的處理程序。

在春天,我們有以下處理程序的不同的類型:

  • Controller是特定類型的處理程序,它返回一個基於用戶輸入不同的看法。
  • HandlerMappingHandlerMapping策略用於地圖對某些處理程序控制器(或控制器)和/或方法的HTTP客戶端請求。這是基於請求URL和HTTP方法完成的,但也可能包含請求參數,請求標頭或其他自定義因素。
    例如:DefaultAnnotationHandlerMapping,SimpleUrlHandlerMappingBeanNameUrlHandlerMapping
  • HandlerAdapterDispatcherServlet使用HandlerAdapter到調用的方法。這是處理器方法的DispatcherServlet decouples。
    例如:AnnotationMethodHandlerAdapterHttpRequestHandlerAdapterRequestMappingHandlerAdapterSimpleControllerHandlerAdapterSimpleServletHandlerAdapter
相關問題