【问题标题】:what's difference between Controller and Handler in Spring MVC?Spring MVC 中的 Controller 和 Handler 有什么区别?
【发布时间】:2015-05-11 10:43:13
【问题描述】:
【问题讨论】:
标签:
java
spring
spring-mvc
【解决方案1】:
一般来说,Controller 就是 Handler,但 Handler 不一定是 Controller。
例如,HttpRequestHandler、WebRequestHandler、MessageHandler 都是可以与DispatcherServlet 一起使用的处理程序。 ( (@)Controller 是一个用于执行 web 请求并返回视图的处理程序。)
简而言之,Handler 只是一个术语,它既不是类也不是接口。它负责执行映射。
【解决方案3】:
Handler 是一个包容性的,即涵盖所有服务细节。
Controller 是一个专有的实现。
在 Spring 中,我们有以下不同类型的处理程序:
-
HandlerMapping:HandlerMapping 策略用于将 HTTP 客户端请求映射到某些处理程序控制器(或多个控制器)和/或方法。这是根据请求 URL 和 HTTP 方法完成的,但也可能包括请求参数、请求标头或其他自定义因素。
例如::DefaultAnnotationHandlerMapping、SimpleUrlHandlerMapping、 BeanNameUrlHandlerMapping。
-
HandlerAdapter:DispatcherServlet 使用 HandlerAdapter 来调用一个方法。这将 DispatcherServlet 与控制器实现类分离。
例如: AnnotationMethodHandlerAdapter、HttpRequestHandlerAdapter、RequestMappingHandlerAdapter、SimpleControllerHandlerAdapter、SimpleServletHandlerAdapter