BeanNameUrlHandlerMapping SimpleUrlHandlerMapping之间的区别

时间:2012-09-19 16:19:53

标签: java spring model-view-controller spring-mvc

Spring BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping有什么区别?

经过一些网站后,我明白了 BeanNameUrlHandlerMapping是DispatcherServlet的默认HandlerMapping。

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

但同样可以使用SimpleUrlHandlerMapping完成。

我知道的东西,但不是那么清楚,它必须做些什么

名字接受/但是id不能.....但我很困惑。

确切的差异是什么? SimpleUrlHandlerMapping的需求是什么?

请解释...谢谢。

1 个答案:

答案 0 :(得分:3)

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

SimpleUrlHandlerMapping是使用map或property bean定义url映射的简单方法。这简化了Spring MVC中的url映射。

示例BeanUrlHandlerMapping

<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"/>

重要的:

  • 必须为每个网址定义一个bean
  • Spring容器有一个url的bean。虽然所有网址都由同一个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>

重要的:

  • 将单个bean用于使用同一控制器的URL。
  • 没有必要为每个网址定义一个bean