【问题标题】:Which is a Controller and which is HandlerMapping in Spring MVC?Spring MVC 中哪个是 Controller,哪个是 HandlerMapping?
【发布时间】:2011-12-27 09:27:54
【问题描述】:

我正在使用this 链接来学习 Spring MVC。如前所述,dispatcher-servlet 位于处理所有传入请求的顶部。

它还描述了有一个HandlerMapping和一个Controller。但是,在源代码中,仅使用了 Controller。那么 HandlerMapping 是哪一个呢?是不是单独的文件?

或者它是否存在于其他一些复杂的场景中?

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    Controller 和 HandlerMapping 在 Spring MVC 中是两个不同的东西。 Controller 是一个实际的 java 类,用于处理请求。我们在类定义的顶部声明@ControllerHandlerMapping 是在 Spring 框架类中构建的。 Spring框架中有很多handler映射,如BeanNameUrlHandlerMappingControllerClassNameHandlerMapping等。默认情况下,BeanNameUrlHandlerMapping用于映射请求。该类在所有控制器分类中搜索以将特定请求与方法映射。

    【讨论】:

      【解决方案2】:

      当配置中没有明确指定处理程序映射时,默认创建并使用BeanNameUrlHandlerMapping

      来自您链接的文章:

      "默认DispatcherServlet使用BeanNameUrlHandlerMapping映射传入的请求。BeanNameUrlHandlerMapping使用bean名称作为URL模式。由于默认使用BeanNameUrlHandlerMapping,您无需做任何单独的配置为了这。”

      【讨论】:

        【解决方案3】:

        Handler Mapping 作为 Dispatcher servlet 的助手。它有助于为 Dispatcher servlet 识别适当的控制器 bean。默认处理程序映射 bean 是 DefaultUrlHandlerMapping

        它通过 url 识别控制器 bean。它将 URL 中的名称与控制器 bean 匹配。如果匹配,它将返回给DispatcherServlet,最后servlet执行控制器的业务方法并将ModelAndView对象返回给dispatcher servlet。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-02
          • 1970-01-01
          • 2012-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多