Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what's difference between Controller and Handler in Spring MVC?

The documentation of Spring MVC sometimes says about "handlers" or "request handlers". For instance, http://docs.spring.io/autorepo/docs/spring/4.0.4.RELEASE/javadoc-api/org/springframework/web/servlet/handler/SimpleUrlHandlerMapping.html says:

Implementation of the HandlerMapping interface to map from URLs to request handler beans

And sometimes it says about controllers. For instance, there is an interface called org.springframework.web.servlet.mvc.Controller ( http://docs.spring.io/spring-framework/docs/2.5.x/api/org/springframework/web/servlet/mvc/Controller.html ).

My question is: are Controllers and Handlers the same?

like image 443
user983447 Avatar asked May 11 '15 10:05

user983447


2 Answers

Generally speaking, a Controller is Handler, but a Handler doesn't have to be a Controller.

For example, HttpRequestHandler, WebRequestHandler, MessageHandler are all handlers which can work with the DispatcherServlet. ( (@)Controller is a handler for executing a web request and returning a view.)

Shortly, Handler is just a term, it is neither a class nor interface. And it is responsible for executing the Mapping.

like image 64
MChaker Avatar answered Oct 06 '22 19:10

MChaker


A Controller is a specific type of Handler but not all Handlers are Controllers.

To execute a type of Handler there is a HandlerAdapter and for each type of Handler there is a different HandlerAdapter. You have Controller and @Controller, HttpRequestHandler and also a plain Servlet can be a Handler. Or if you have some custom things you can even implement your own.

like image 40
M. Deinum Avatar answered Oct 06 '22 17:10

M. Deinum