4

Spring BeanNameUrlHandlerMapping 和 SimpleUrlHandlerMapping 有什么区别?

在浏览了一些站点后,我了解到 BeanNameUrlHandlerMapping 是 DispatcherServlet 的默认 HandlerMapping。

同样在 BeanNameUrlHandlerMapping 中,您可以直接将 url 与 Controller 映射。

但同样的事情也可以用 SimpleUrlHandlerMapping 完成。

我知道一些但不是很清楚,它必须与

name 接受 / 但 id 不能......但我很困惑。

确切的区别是什么?SimpleUrlHandlerMapping 需要什么?

请解释...谢谢。

4

1 回答 1

4

如果我们想要将多个 url 映射到单个控制器类,我们必须注册多个 url,这不是使用 Spring IoC 的好方法。

SimpleUrlHandlerMapping 是一种使用映射或属性 bean 定义 url 映射的简单方法。这简化了 Spring MVC 中的 url 映射。

示例 BeanNameUrlHandlerMapping

<bean name="/hello.htm" class="com.raistudies.ui.comtroller.HelloController"/>

<bean name="/sayHello*" class="com.raistudies.ui.comtroller.HelloController"/>

<bean id="urlHandler" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

重要的:

  • 需要为每个url定义一个bean
  • Spring 容器通过 url 有一个 bean。尽管所有 url 都由同一个 bean 提供

示例 SimpleUrlHandlerMapping

<bean id="helloController" class="com.raistudies.ui.controller.HelloController"/>

  <bean id="urlHandler" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="urlMap">
            <map>
                <entry key="/hello.htm" value-ref="helloController"/>
                <entry key="/sayHello*" value-ref="helloController"/>
                <entry key="/welcome.html" value-ref="helloController"/>
                <entry key="/welcomeUser*" value-ref="helloController"/>
            </map>
        </property>
    </bean>

重要的:

  • 对使用相同控制器的 URL 使用单个 bean。
  • 不需要为每个 url 定义一个 bean
于 2012-09-19T17:57:43.647 回答