Spring MVC的文档有时会说“处理程序”或“请求处理程序”。例如,http://docs.spring.io/autorepo/docs/spring/4.0.4.RELEASE/javadoc-api/org/springframework/web/servlet/handler/SimpleUrlHandlerMapping.html说:
实现HandlerMapping接口以从URL映射到请求处理程序bean
有时它会说控制器。例如,有一个名为org.springframework.web.servlet.mvc.Controller(http://docs.spring.io/spring-framework/docs/2.5.x/api/org/springframework/web/servlet/mvc/Controller.html)的接口。
我的问题是:控制器和处理程序是一样的吗?
答案 0 :(得分:11)
一般来说,Controller是Handler,但Handler不一定是Controller。
例如,HttpRequestHandler
,WebRequestHandler
,MessageHandler
都是可以使用DispatcherServlet
的处理程序。 ((@
)Controller是执行Web请求并返回视图的处理程序。)
很快,Handler只是一个术语,它既不是类也不是接口。它负责执行映射。
答案 1 :(得分:3)
Controller
是特定类型的order_no, linestatus
,但并非所有Handler
都是Handler
。
要执行Controller
类型,有一个HandlerAdapter
,并且对于每种类型的Handler
,都有不同的Handler
。您有Controller
和HandlerAdapter
,HttpRequestHandler
以及普通Servlet
可以是@Controller
。或者如果你有一些自定义的东西,你甚至可以自己实现。
答案 2 :(得分:-1)
处理程序是一个包容性的,即涵盖所有服务细节 Controller 是一个独家实现。
在Spring中,我们有以下不同类型的处理程序:
HandlerMapping
:HandlerMapping
策略用于映射 HTTP客户端请求到某些处理程序控制器(或控制器)和/或方法。这是基于请求URL和HTTP方法完成的,但也可能包括请求参数,请求标头或其他自定义因素。DefaultAnnotationHandlerMapping
,SimpleUrlHandlerMapping
,BeanNameUrlHandlerMapping
。 HandlerAdapter
:DispatcherServlet
使用HandlerAdapter 调用方法。这是DispatcherServlet
与控制器实现类的分离
例如: AnnotationMethodHandlerAdapter
,HttpRequestHandlerAdapter
,RequestMappingHandlerAdapter
,SimpleControllerHandlerAdapter
,SimpleServletHandlerAdapter